第关系数据库 3 章 本章学习重点: .关系完整性。 .E-R图转换为关系模型。 .关系运算。 关系数据库系统是支持关系模型的数据库系统。关系数据模型由关 系数据结构、关系操作集合和关系完整性约束三部分组成。在关系数据库 设计中,为使其数据模型合理可靠、简单实用,需要使用关系数据库的规范 化设计理论。 本章介绍关系数据库的基本概念,围绕关系数据模型的三要素展开, 利用集合、代数等抽象的知识,深刻而透彻地介绍关系数据结构、关系数据 库操作及关系数据库完整性等内容。 3.关系数据结构 1 关系模型的数据结构非常简单。在关系数据模型中,现实世界的实体 以及实体间的各种联系均用关系来表示。在用户看来,关系模型中数据的 逻辑结构是一张二维表。 3.1.1 关系的定义和性质 关系就是一张二维表格,但并不是任何二维表都叫作关系,人们不能 把日常生活中所用的任何表格都当成一个关系直接存放到数据库里。 关系数据库要求其中的关系必须具有以下性质。 (1)在同一个关系中,同一列的数据必须是同一种数据类型。 (2)在同一个关系中,不同列的数据可以是同一种数据类型,但各属性 的名称都必须互不相同。 (3)在同一个关系中,任意两个元组都不能完全相同。 2 数据库原理与应用——SQL Server 2019 (4)在同一个关系中,列的次序无关紧要,即列的排列顺序是不分先后的。 (5)在同一个关系中,元组的位置无关紧要,即排行不分先后,可以任意交换两行的 位置。 (6)关系中的每个属性必须是单值,即不可再分,这就要求关系的结构不能嵌套。这 是关系应满足的最基本的条件。 例如,有学生成绩如表3-1所示。这种表格就不是关系,应对其修改结构,才能成为 数据库中的关系。对于该复合表,可以把它转化成一个关系,即学生成绩关系(学号,姓 名,性别,年龄,班级号,数学,语文,英语); 也可以转化成两个关系,即学生关系(学号,姓 名,性别,年龄,班级号)和成绩关系(学号,数学,语文,英语), 如表3-2和表3-3所示。 表3- 1 学生成绩表 学号姓名性别年龄班级号 成绩 数学语文英语 201501 张鹏男20 01 77 81 85 201502 王宏女19 01 78 82 86 201503 赵飞男21 02 79 83 87 201504 黄明男19 02 80 84 88 表3- 2 学生关系表 学号姓名性别年龄班级号 201501 张鹏男20 01 201502 王宏女19 01 201503 赵飞男21 02 201504 黄明男19 02 表3- 3 成绩关系表 学号数学语文英语 201501 77 81 85 201502 78 82 86 201503 79 83 87 201504 80 84 88 所以,关系是一种规范化了的二维表格,是一个属性数目相同的元组的集合。集合中 的元素是元组,每个元组的属性数目应该相同。 在关系数据模型中,实体以及实体之间的联系都是用关系来表示的,它是通过关系中 的冗余属性(一般是主码和外码的关系)来实现实体之间的联系。上例中学生关系和成绩 第 3 章 关系数据库 23 关系就是通过“学号”属性实现的一对一联系,即一个学生只有一行成绩,而一行成绩也只 属于一个学生。 3.1.2 关系模式 关系数据库中,关系模式(relationschema)是型,关系是值;关系模式是对关系的描 述。因此,关系模式必须指出这个元组集合的结构,即它由哪些属性构成,这些属性来自 哪些域,以及属性与域之间的映像关系。 关系模式的定义:关系的描述称为关系模式。一个关系模式应是一个五元组。关系 模式可以形式化地表示为R(U,D,dom,F)。 其中,R是关系名,U是组成该关系的属性名集合,D是属性组U中属性所来自的 域,dom 是属性间域的映像集合,F是属性间的数据依赖关系集合。 关系模式通常可以简记为 R(U)或R(A1,A2,…,An) 其中,R是关系名,A1,A2,…,An 为属性名,域名及属性间域的映像,常常直接说明 为属性的类型、长度。 关系实际上就是关系模式在某一时刻的状态或内容。关系模式是静态的、稳定的,而 关系是动态的、随时间不断变化的,因为关系操作在不断更新着数据库中的数据,可以把 关系模式和关系统称为关系。 3.1.3 关系数据库 关系数据库就是采用关系模型的数据库。关系数据库有型和值的区别,关系数据库 的型是指对关系数据库的描述,它包括若干关系模式;关系数据库的值是这些关系模式在 某一时刻对应的关系的集合。 在一个给定的应用领域中,所有实体及实体之间联系的关系的集合构成一个关系数 据库。关系数据库的型也称为关系数据库模式,是对关系数据库的描述,它包括若干域的 定义以及在这些域上定义的若干关系模式。关系数据库的值是这些关系模式在某一时刻 对应的关系的集合,通常称为关系数据库。 3.关系完整性 2 关系完整性是指关系模型中数据的正确性与一致性。关系模型允许定义三类完整性 规则:实体完整性、参照完整性和用户定义的完整性规则。 1. 实体完整性规则(entityintegrityrule) 实体完整性要求关系的主码具有唯一性且主码中的每一个属性都不能取空值。例 如,学生表中的学号属性应具有唯一性且不能为空。 关系模型必须满足实体完整性的原因如下。 (1)现实世界中的实体和实体间的联系都是可区分的,即它们具有某种唯一性标识。 相应地,关系模型中以主码作为唯一性标识。 4 数据库原理与应用——SQL Server 2019 (2)空值就是“不知道”或“无意义”的值。主属性取空值,就说明存在某个不可标识 的实体,这与第(1)条矛盾。 2. 参照完整性规则(referenceintegrityrule) 设F是基本关系R的一个或一组属性,但不是关系R的码,如果F与基本关系S的 主码Ks相对应, frie并称基本关系R为参照关系 则称F是基本关系R的外码(oegnky), referencingrelatioreferencedrelatiotarget (n), 基本关系S为被参照关系(n)或目标关系( relation)。 关系R和S也可以是相同的关系,即自身参照。 目标关系S的主码Ks和参照关系的外码F必须定义在同一个(或一组)域上。参照 完整性规则就是定义外码与主码之间的引用规则。 参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主 码Ks相对应(基本关系R和S可能是相同的关系), 则对于R中每个元组在F上的值必 须为空值(F的每个属性值均为空值); 或者等于S中某个元组的主码值。 【例3-1】学生实体和系实体可以用下面的关系表示,其中主码用下画线标识。 学生(学号,姓名,性别,系号) 系(系号,系名) 学生关系的“系号”与系关系的“系号”相对应,因此,“系号”属性是学生关系的外码, 是系关系的主码。这里系关系是被参照关系,学生关系为参照关系。学生关系中的每个 元组的“系号”属性只能取下面两类值:空值或系关系中已经存在的值。 3. 用户定义的完整性规则 用户定义的完整性规则是由用户根据实际情况对数据库中数据的内容进行的规定, 也称为域完整性规则。通过这些规则限制数据库只接受符合完整性约束条件的数据值, 不接受违反约束条件的数据,从而保证数据库中数据的有效性和可靠性。例如,学生表中 的性别数据只能是男和女,选课表中的成绩数据为1~100 等。 关系完整性的作用就是要保证数据库中的数据是正确的。通过在数据模型中定义实 体完整性规则、参照完整性规则和用户定义完整性规则,数据库管理系统将检查和维护数 据库中数据的完整性。 3.将ER图转换为关系数据模型 3 关系数据模型是一组关系模式的集合,而E-R图是由实体、属性和实体之间的联系 三要素组成的。所以将E-R图转换为关系数据模型实际上是要将实体、属性和实体之间 的联系转换为关系模式。 3.3.1 实体的转换 一个实体转换为一个关系模式。实体的属性就是关系的属性。实体的主码就是关系 的主码。 第 3 章 关系数据库 25 【例3-2】将图3-1所示的学生实体转换为关系模式。 图3- 1 学生实体图 对应的关系模式 为 学生(学号,姓名,出生日期,所在系,年级,平均成绩 ) 其中,学号为主码,用下画线标识 。 3.3.2 联系的转换 两实体间联系的转换根据联系类型的不同可分为如下3种。 1.1∶ 1 联系的转换 两实体间1∶1 联系可以转换为一个独立的关系模式,也可以与某一端对应的关系模 式合并。 1)转换为一个独立的关系模式 转换后的关系模式中关系的属性包括与该联系相连的各实体的码以及联系本身的属 性;关系的主码为两个实体的主码的组合。 【例3-3】将图3-2所示的E-R图转换为关系模式。 图3- 2 1∶ 1 联系的E- R 图 转换成如下关系模式: 班级(班号,系号,班主任,入学时间) 班长(学号,姓名,性别,年龄) 6 数据库原理与应用——SQL Server 2019 班级-班长(班号,学号,任期) 2)与某一端对应的关系模式合并 合并后关系的属性包括自身关系的属性和另一关系的码及联系本身的属性;合并后 关系的码不变。 【例3-4】将图3-2所示的E-R图,按照2)转换为关系模式。 转换成如下关系模式: 班级(班号,系号,班主任,入学时间,学号,任期) 班长(学号,姓名,性别,年龄) 或 班级(班号,系号,班主任,入学时间) 班长(学号,姓名,性别,年龄,班号,任期) 2.1∶ N 联系的转换 两实体间1∶ N 联系可以转换为一个独立的关系模式,也可以与 N 端对应的关系模 式合并。 1)转换为一个独立的关系模式 关系的属性包括与该联系相连的各实体的码以及联系本身的属性;关系的主码为 N 端实体的码。 【例3-5】将图3-3所示的E-R图,关系转换为独立的关系模式。 图3- 3 1∶ M 联系的E- R 图 对应的关系模式如下: 系(系号,系名,系主任) 教师(教师号,教师名,年龄,职称) 工作(教师号,系号,入系日期) 2)与 N 端对应的关系模式合并 合并后关系的属性包括在 N 端关系中加入1端关系的主码和联系本身的属性。合 并后关系的码不变。 第 3 章 关系数据库 27 【例3-6】将图3-3所示的E-R图,按照2)转换为合并的关系模式 。 对应的关系模式如下 : 系(系号,系名,系主任 ) 教师(教师号,教师名,年龄,职称,系号,入系日期 ) 注意:实际使用中通常采用这种方法以减少关系模式,因为多一个关系模式就意 味 着查询过程中要进行连接运算,降低查询的效率。 3. M ∶ N 联系的转换 两实体间 M ∶ N 联系必须为联系产生一个新的关系。该关系中至少包含被它所联 系的双方实体的主关键字,若联系有属性,也要并入该关系中。 【例3-7】将图3-4所示的E-R图转换成对应的关系模式。 4. 3 图3- 4 M ∶ N 联系的E- R 图 对应的关系模式如下: 职工(职工号,姓名,性别,年龄,职务) 项目(项目号,项目名,起始日期,鉴定日期) 参加(职工号,项目号,薪酬) 关系运算 关系代数是以关系为运算对象的一组高级运算的集合;关系代数是一种抽象的查询 语言,是关系数据操作语言的一种传统表达方式。关系代数的运算对象是关系,运算结果 也是关系。 关系代数中的操作可以分为如下两类。 传统的集合运算:笛卡儿积、并、差、交。 专门的关系运算:投影(对关系进行垂直分割)、选择(水平分割)、连接(关系的结 合)、除法(笛卡儿积的逆运算)等。 3.4.1 传统的集合运算 传统的集合运算包括笛卡儿积(×)、并(∪)、差(-)和交(∩)。 8 数据库原理与应用——SQL Server 2019 1. 笛卡儿积(Cartesianproduct) 设关系R和S的属性个数分别为r和s,定义R和S的笛卡儿积是一个(r+s)元的 元组集合,每个元组的前r个分量(属性值)来自R的一个元组,后s个分量来自S的一个 元组,记为R×S 。形式化定义如下: R×S={|tr∈R∧t tt=