第三章关系数据库系统RDBS 学习目的和要求 ◆关系数据模型 关系上的完整性约束或限制 关系代数 ◆关系运算 Designed by Tao Hongcai 2021年2月23日1
Designed by Tao Hongcai 2021年2月23日 1 第三章 关系数据库系统RDBS 学习目的和要求 ◆ 关系数据模型 ◆ 关系上的完整性约束或限制 ◆ 关系代数 ◆ 关系运算
31关系数据模型 回答如下问题 1.如何表达data本身? 2.如何表达数据间的联系? 3.能表达哪些完整性约束? 4.完整性约束如何设定? 5.完整性约束的效果? 6.如何进行关系模型的DB设计? Designed by Tao Hongcai 2021年2月23日2
Designed by Tao Hongcai 2021年2月23日 2 3.1 关系数据模型 回答如下问题: 1.如何表达data本身? 2.如何表达数据间的联系? 3.能表达哪些完整性约束? 5.完整性约束的效果? 4.完整性约束如何设定? 6.如何进行关系模型的DB设计?
SQL语言简介 最早在 I BM System- R RDBMS上使用的查询语言;由于其广泛的 使用,出现标准化需求,形成SQL标准;有了标准,用户可评判厂 家的SQL版本,基于非标准的SQL特性的应用不易移植。 第一个SQL标准由ANS|于1986年制订,称为SQL-86;1989年作 了些许改进,称为SQL-89;1992年由ANS|和SO合作,作了较大改 动,称为SQL-92(SQL2),这是目前大多数商用 RDBMS支持的版本; 1999年提出SQL:1999(SQL3),是SQL-92的扩展。 关系模型中的关系,利用SQL-92来定义和操纵;SQL-92标准中 用“表”( Table)代表“关系”( Relation);SQL中用于创建 ( Create)、删除(Drop)和修改(Ater)“表结构”的部分叫DDL,而对“表 中数据”进行插入(nser)、删除( Delete)、修改( Update)和查询 ( Select)的部分叫DML; Designed by Tao Hongcai 2021年2月23日3
Designed by Tao Hongcai 2021年2月23日 3 一.SQL语言简介 第一个SQL标准由ANSI于1986年制订,称为SQL-86;1989年作 了些许改进,称为SQL-89;1992年由ANSI和ISO合作,作了较大改 动,称为SQL-92(SQL2),这是目前大多数商用RDBMS支持的版本; 1999年提出SQL:1999(SQL3),是SQL-92的扩展。 关系模型中的关系,利用SQL-92来定义和操纵;SQL-92标准中 用“表”(Table)代表“关系”(Relation);SQL中用于创建 (Create)、删除(Drop)和修改(Alter)“表结构”的部分叫DDL,而对“表 中数据”进行插入(Insert)、删除(Delete)、修改(Update)和查询 (Select)的部分叫DML; 最早在IBM System-R RDBMS上使用的查询语言;由于其广泛的 使用,出现标准化需求,形成SQL标准;有了标准,用户可评判厂 家的SQL版本,基于非标准的SQL特性的应用不易移植
归结起来,SQL语言命令为: 1. SQL DDL针对表结构 (1 Create (2)Drop (3)Alter 2. SQL DML—针对表中数据 (1)Insert (2)Delete (3)Update (4) Select Designed by Tao Hongcai 2021年2月23日4
Designed by Tao Hongcai 2021年2月23日 4 归结起来,SQL语言命令为: (1) Create (4) Select 1. SQL DDL —- 针对表结构 (2) Drop (3) Alter (1) Insert 2. SQL DML —- 针对表中数据 (2) Delete (3) Update
二.关系模型 1.关系( Relation) 概念:用于描述数据本身、数据之间联系。俗称“表” 构成:由“行”(RoW)和“列”( Column)组成。各列构成 “关系模式( Schema)”,各行为“关系实例( Instance)”。 行:有时也称“元组”( Tuple)、“记录”( Record)。 列:有时也称“字段”( Field)、“属性” 示例:一张“学生信息表”(数据本身)、“学生选课表” (数据间的联系 关系模式:由关系名、各个域构成。 域( Domain):数据类型及长度、域名、取值范围。 关系实例:记录集或元组集,常简称关系;行序不重要,而列 序重要(关系代数中有时用列号来代表列名);每个元组的字段必须 对应关系模式中的字段。 Designed by Tao Hongcai 2021年2月23日5
Designed by Tao Hongcai 2021年2月23日 5 二.关系模型 概念:用于描述数据本身、数据之间联系。俗称“表” 。 构成:由“行”(Row)和“列”(Column)组成。各列构成 “关系模式(Schema)”,各行为“关系实例(Instance)” 。 1.关系(Relation) 行:有时也称“元组”(Tuple)、 “记录”(Record)。 列:有时也称“字段”(Field)、 “属性” 。 示例:一张“学生信息表”(数据本身)、“学生选课表” (数据间的联系)。 关系模式:由关系名、各个域构成。 域(Domain) :数据类型及长度、域名、取值范围。 关系实例:记录集或元组集,常简称关系;行序不重要,而列 序重要(关系代数中有时用列号来代表列名);每个元组的字段必须 对应关系模式中的字段
候选键:能唯一识别元组的最小字段集。 主键( Primary Key,PK):一个唯一识别关系实例的最小字段 集 2.关系模型完整性限制( Integrity Constraints,ICs) 日的: RDBMS必须帮助阻止非法数据的输入。 概念:要求存入DB的数据应满足的条件。 ICs指定的时间:定义完一个DB模式时/后。 ICs何时起作用:当 DB App运行时,DBMS检查输入或更新的数 据是否满足1C指定的条件。 可被指定的lCs:域约束、主键限制、唯一限制、外键限制、 般性限制等。用SαL-92可指定这些限制,如果某限制被违背,系 统将返回限制名,并用来识别锆误。 Designed by Tao Hongcai 2021年2月23日6
Designed by Tao Hongcai 2021年2月23日 6 候选键:能唯一识别元组的最小字段集。 主键(Primary Key,PK):一个唯一识别关系实例的最小字段 集合。 目的: RDBMS必须帮助阻止非法数据的输入。 2.关系模型完整性限制(Integrity Constraints,ICs) 概念:要求存入DB的数据应满足的条件。 ICs指定的时间:定义完一个DB模式时/后。 ICs何时起作用:当DB App运行时,DBMS检查输入或更新的数 据是否满足IC指定的条件。 可被指定的ICs :域约束、主键限制、唯一限制、外键限制、 一般性限制等。用SQL-92可指定这些限制,如果某限制被违背,系 统将返回限制名,并用来识别错误
(1)域限制( Domain constraint) 概念:指数据类型的约束,是关系模型中最基本的约束。 (2)主键限制( Primary Key Constraint) 概念:针对主键而言,保证主键的完整性 要求:主键值必须唯一,且不能为空值 (3)唯一限制( Unique Constraint) 概念:针对候选键而言,保证候选键的完整性。 要求:值唯一,允许有一个且仅有一个空值。 (4)外键限制( Foreign Key constraint) 外键定义:一张表中的某个(组)字段是另一张表中的候选键/ 主键。 学生表 班级表 外键示例: 学号姓名 班号 班号班名 人数 主键 外键主键 Designed by Tao Hongcai 2021年2月23日7
Designed by Tao Hongcai 2021年2月23日 7 (1)域限制(Domain Constraint) 概念:针对主键而言,保证主键的完整性。 (3)唯一限制(Unique Constraint) 概念:针对候选键而言,保证候选键的完整性。 外键定义:一张表中的某个(组)字段是另一张表中的候选键/ 主键。 外键示例 : 要求:主键值必须唯一,且不能为空值。 要求:值唯一,允许有一个且仅有一个空值。 (4)外键限制(Foreign Key Constraint) 学生表 班级表 学号 姓名 … 班号 班号 班名 … 人数 主键 外 键 主 键 (2)主键限制(Primary Key Constraint) 概念:指数据类型的约束,是关系模型中最基本的约束
从表:指含有外键的表。 主表:指外键在另一张表中作主/候选键的表。 目的:用来维护表与表之间的数据一致性,即其中一张表的改 动,可能要求另一张表要作出某些改动,以保持数据一致。为使 DBMS能做这样的检查,则应指定这种涉及两个表的Cs,此即外键 限制。 表间数据完整性的实现方式: (1)针对从表,在从表定义外键限制,此时为“参照完整性 限制”( Reference constraint);或 (2)对主表和从表的维护使用触发器。 (5)一般性限制( General constraints) 域限制、主键限制、唯限制和外键限制是关系数据模型中最基 本的限制,在大多数商用系统中都支持。其他还有更一般的限制, 如检查限制( Check constraint,亦称“表限制”)用于检查列值在 某一取值范围之内。 Designed by Tao Hongcai 2021年2月23日8
Designed by Tao Hongcai 2021年2月23日 8 从表:指含有外键的表。 目的:用来维护表与表之间的数据一致性,即其中一张表的改 动,可能要求另一张表要作出某些改动,以保持数据一致。为使 DBMS能做这样的检查,则应指定这种涉及两个表的ICs,此即外键 限制。 主表:指外键在另一张表中作主/候选键的表。 表间数据完整性的实现方式: (1) 针对从表,在从表定义外键限制,此时为“参照完整性 限制”(Reference Constraint);或 (2) 对主表和从表的维护使用触发器。 (5)一般性限制( General Constraints) 域限制、主键限制、唯一限制和外键限制是关系数据模型中最基 本的限制,在大多数商用系统中都支持。其他还有更一般的限制, 如检查限制(Check Constraint,亦称“表限制”)用于检查列值在 某一取值范围之内
对一般性限制的支持:表限制和断言( Assertion) 表限制:与单个表有关。 断言:与多个表有关。 3.完整性限制(ICs)何时起作用 关系创建并指定了ICs后,当关系“更新”时应实施检查。 (1)对域限制、主键限制和唯一限制的实施 由于影响直接,故只要插入/删除/修改命令违背了限制,即被 拒绝。而其它Cs(如一般性限制)的违背检查通常是在每个SQL语 句之后。 (2)对参照完整性跟制的实施 外键限制的影响较复杂,因为SL不会简单地拒绝改变,而要 试图矫正对外键限制的违背。 Designed by Tao Hongcai 2021年2月23日9
Designed by Tao Hongcai 2021年2月23日 9 对一般性限制的支持:表限制和断言(Assertion)。 断言:与多个表有关。 表限制:与单个表有关。 关系创建并指定了ICs后,当关系“更新”时应实施检查。 (1)对域限制、主键限制和唯一限制的实施 (2) 对参照完整性限制的实施 3. 完整性限制(ICs)何时起作用 由于影响直接,故只要插入/删除/修改命令违背了限制,即被 拒绝。而其它ICs(如一般性限制)的违背检查通常是在每个SQL语 句之后。 外键限制的影响较复杂,因为SQL不会简单地拒绝改变,而要 试图矫正对外键限制的违背
对从表:删除不会违背参照完整性限制,但插入和修改可能会 违背参照完整性限制。 对主表:插入不会影响含外键的表,但删除和修改可能会影响 含外键的表。 4. SQL Server对完整性限制的支持 SQL Server中的数据完整性可粗分为两大类,如下表。 完整性分类 现有实现方式 备注 Default(缺省) 指定列(或域)的缺省值 Rue(规则) 指定列(或域)的取值范围 实体本身的 Check constraint 完整性 (检查限制) 均有列级(即只涉及一列)和 Primary Key(主键眼制)表级(涉及表中多列) niue(惟一限制) Foreign Key(外键限制 实体间的完整性或 References(参照眼制) 参照完整性限制的体现,亦分列级与表级 Trigger(触发器) 可利用触发器来维护表间数据完整性 Designed by Tao Hongcai 2021年2月23日10
Designed by Tao Hongcai 2021年2月23日 10 对从表:删除不会违背参照完整性限制,但插入和修改可能会 违背参照完整性限制。 对主表:插入不会影响含外键的表,但删除和修改可能会影响 含外键的表。 SQL Server中的数据完整性可粗分为两大类,如下表。 4.SQL Server对完整性限制的支持 完整性分类 现有实现方式 备 注 实体本身的 完整性 Default(缺省) 指定列(或域)的缺省值 Rule(规则) 指定列(或域)的取值范围 Check Constraint (检查限制) 均有列级(即只涉及一列)和 Primary Key(主键限制) 表级(涉及表中多列) Unique(惟一限制) 实体间的完整性 Foreign Key(外键限制) 或 References(参照限制) 参照完整性限制的体现,亦分列级与表级 Trigger(触发器) 可利用触发器来维护表间数据完整性