第3章 关系数据库 内容提要 关系模型的数据结构 关系模型的常用术语 关系数据库的完整性概念 数据库的关系运算 函数依赖的定义 第3章 关系数据库 内容提要 关系模型的数据结构 关系模型的常用术语 关系数据库的完整性概念 数据库的关系运算 函数依赖的定义 关系规范化理论
本章知识点 熟悉关系数据库的数据结构 掌握关系数据库的常用术语 掌握关系数据库的完整性概念 掌握数据库的关系运算 掌握函数依赖的定义 掌握关系规范化理论
3.1 关系模型 关系模型是由关系数据结构、关系操作集合和完整性规则三部分组成。 1、数据结构 在关系模型中,数据的逻辑结构是一张二维表,一个二维表又称为一个关系。该表格分为两个不同部分,一是表头部分,它描述关系的名称,又称表名;以及关系中的各属性名称;二是表格内容,它描述关系中的具体元组值。即表格中的每一行对应一个元组值,表格中的每一列对应一个属性。
◆关系模型中的一些术语: (1)关系(Relation):一个关系对应通常所说的一张二维表; (2)元组(Tuple):表中的一行即为一个元组; (3)属性(Attribute):表中的一列即为一个属性,给每一个属性起一个名称即属性名。表3-1有五列,对应五个属性(学号,姓名,性别,出生日期,籍贯); (4)域(Domain):属性的取值范围,所以又称“值域”; (5)分量:元组中的一个属性值;
(6)关系模式:对关系的描述,一般表示为:关系名(属性1,属性2,…,属性n) (7)关键字或码(Key):表中用来唯一确定(标识)一个元组的某个属性或属性组合。 关键字必须唯一,但它的唯一性不是只对关系的当前元组构成来确定的。还要考虑元组构成的将来可能性。一个关系中,关键字的值不能为空,即关键字的值为空的元组在关系中是不允许存在的。
◆与关键字相关的术语: (1)候选关键字(Candidate Key)或候选码:如果一个关系中存在多个属性或属性组合都能用来唯一标识该关系的元组,这些属性或属性组合都称为该关系的候选关键字或候选码。 (2)主关键字(Primary Key)或主码:在一个关系的若干个候选关键字中指定作为关键字的属性或属性组合称为该关系的主关键字或主码。
(3)外部关键字(Foreign Key)或外码:当关系中某个属性或属性组合虽不是该关系的关键字或只是关键字的一部分,但却是另外一个关系的关键字时,称该属性或属性组合为这个关系的外部关键字或外键。 (4)主表与子表:主表与子表是指以外键相关联的两个表;以外键作为主键的表称为主表,外键所在的表称为子表。
关系模型的主要特点有: (1)关系中每一分量不可再分,是最基本的数据单位,即不允许有表中表。 (2)每一竖列的分量是同属性的,列数根据需要而定,且各列的顺序是任意的。 (3)每一横行由一个个体事物的诸多属性构成,且各行的顺序是任意的。 (4)一个关系是一张二维表,不允许有相同的属性名,也不允许有相同的元组。
2、关系操作集合 在关系模型中,以功能强大的关系操作集合对存储在该关系中的数据进行操作。关系模型一共有8种基本关系操作:专门关系运算有:选择操作、投影操作、连接操作、除操作。传统的集合操作有:并操作、交操作、差操作和笛卡儿积操作。 3、完整性约束条件: 包括:实体完整性、参照完整性、用户定义的完整性。
(1)实体完整性(Entity Integrity) 实体完整性是通过主键实现的。一个主键可以由表中的一列或者多列组成,它唯一标识表中的一行数据(一个元组)。每个元组主关键字的值应该是唯一的,主关键字的值不能为空。 (2)参照完整性(Referential Integrity) 参照完整性是对关系间引用数据的一种限制。 在关系模型中,实体间的联系是用关系来描述的,因而存在关系与关系间的引用。这种引用可通过外部关键字来实现。
(3)用户定义的完整性 由用户自己根据情况,对数据库中数据所做的规定称为用户定义的完整性规则,也称为域完整性规则。通过这些规则来限制数据库中只能接受符合用户定义完整性约束条件的数据值,从而保证了数据的正确性和有效性。
3.2关系代数 关系代数是在关系的基础上进行的一类代数运算,该运算完成对数据的抽象查询功能。每个运算都以一个或多个关系作为运算对象,使用一定的运算符,并生成另外一个关系作为该关系运算的结果。所以运算对象、运算符、运算结果是运算的三大要素。 关系代数的运算对象是关系,运算结果亦为关系。 关系的基本运算有两类:一类是传统的集合运算,另一类是专门的关系运算,有些查询需要几个基本运算的组合,要经过若干步骤才能完成。
3.2.1 传统的集合运算 传统的集合运算,包括并、差、交、广义笛卡尔积四种运算。 1、并(Union)(见P38) 关系R与关系S的并记作: R∪S = { t | t∈R ∨ t∈S } 其结果仍为关系,由属于R或属于S的元组组成。 2、交( Intersection) 关系R与关系S的交记作: R∩S = { t | t∈R ∧t∈S } 其结果关系仍为关系,由既属于R又属于S的元组组成.
关系R与关系S的差记作:R-S = { t | t∈R ∧ t\∈S }其结果关系仍为关系,由属于R而不属于S的所有元组组成。 3、差(Difference) 关系R与关系S的差记作:R-S = { t | t∈R ∧ t\∈S }其结果关系仍为关系,由属于R而不属于S的所有元组组成。 4、广义笛卡尔积(Extended Cartesian Product) 两个分别为n 和m个属性的关系 R和S的广义笛卡尔积是一个(n+m)列的元组的集合。元组的前n列是关系R的元组,后m列是关系S的元组。若R有k1个元组,S有k2个元组,则关系R和关系S的广义笛卡尔积有k1×k2个元组。 即用R的第i个元祖与S的全部元祖结合成k1个元祖,当i从1变到k2时就得到了新的关系的全部k1× k2个元祖。记作:R×S = { t| t=<tr,ts> ∧ tr∈R ∧ts∈S } 广义笛卡尔乘积也称为笛卡尔乘积。
3.2.2 专门的关系运算 专门的关系运算,包括选择、投影、连接和除运算. 1、选择运算 (Selection) 设F是一个条件表达式,在关系R上的F选择是在R中挑选满足F的所有元组,组成一个新的关系,这个新的关系是R的一个子集,记为:F(R) 其中F由下列三部分组成:运算对象、算术比较符、逻辑运算符。 例:从表3-3学生A表中(p38)选择出性别为“女”的学生, 则可记作:性别=“女”(学生信息表)(见P40表3.11)
2、投影运算 (Projection) 设R为k元关系,A1,A2,...,Am分别是它的第1,2...,m个属性,则关系R在A1,A2,...,Am上的投影是一个m元关系,其属性为A1,A2,...,Am,记作:∏ A(R) 投影的基本思想是从一个关系中选择我们需要的属性成分,并按要求排列组成一个新的关系,新的关系的各属性值来自原来关系中相应的属性值,并去掉重复元组。 例:从表3-3学生A表中,列出学生的姓名和籍贯 则可记作:∏ 姓名,籍贯(学生A))(见P40表3.12)
3、连接运算 (Join) 连接运算是从两个关系的笛卡尔积中选取满足一定连接条件的元组的集合,连接的结果是一个新的关系。也称为一般连接,记作:RS 连接运算中有两种最为重要的连接,等值和自然连接. (1)等值连接(见p41) 连接条件中的运算符为“=”的连接运算,称为等值连接。 (2)自然连接 在等值连接的基础上,去掉重复属性的连接,称为自然连接。
4、除运算(Division) 给定关系R(x,y)与S(z)其中x,y,z为属性集合。假设R中的y和S中的z是同名的属性(集)也可以有不同的属性名,但必须出自相同的域。在求解R÷S时,对R按x的值的分组,然后检查每一组,如某一组中的y包含S中全部的z,则取该组中的x的值作为关系P中的一个元组, 否则不取。R÷S的商等于关系P。 (见p42)选C22、C35、C37课的学生 选择、投影、连接运算是关系代数中最基本的数据操作运算,为构建关系数据库系统的操作语言奠定了基础。无论检索的过程涉及几个关系(表)以及何种条件,通过这3种运算都可以实现。目前关系数据库的数据操作都是基于关系代数运算而构造的。
3.3关系数据库规范化理论 数据库设计是针对某个具体的应用问题进行抽象 ,构造模型,为数据设计一个合适的逻辑结构,并建立数据库及其应用系统的过程。在关系数据库系统中,就是如何设计一些关系表以及这些表中的属性。本节将介绍与关系数据库中的关系模式(即关系表结构)密切相关的关系数据库设计的相关理论基础,也就是关系范式的有关基本知识。
3.3.1 问题的提出 我们将关系定义为笛卡尔积子集,也讨论了关系数据库中数据库的基本描述和关系代数基本运算等。但是还有一个基本的问题尚未涉及,那就是当给定一组数据后,如何构造一个适合于它们的数据模式,使得它不仅能准确的反映现实世界,而且适合于具体的应用场合。这就是数据库的逻辑设计问题。(见p43) 学号(NO)) 系名(SD) 系负责人(DM) 课程名(CN) 成绩(DG) 20060102 计算机 王凯 数据库原理与应用 89 20070101 C语言程序设计 76 80 20070201 85
3.3.2 函数依赖 函数依赖是关系数据库设计中的一个重要概念,下面我们给出函数依赖的定义。 定义1:设R(U)是属性集U上的一个关系模式,X,Y是U的子集。若对于R(U)中任意可能关系r,若对于r中任意两个元祖s和t。当s[X]=t[X]时,就有s[Y]=t[Y]则称属性子集X函数决定属性子集Y或称Y函数依赖于X, 记作X→Y。称X为决定因素。Y为依赖因素,当Y不函数依赖X,则记作X/ → Y。 如果X→Y,Y→X,则纪其为X←→Y。 注意:函数依赖不是指关系模式R中某个或某些关系满足的约束条件,而是指R的一切关系均要满足约束条件
非平凡函数依赖,否则称为平凡函数依赖。下面以前者作为 基础。 函数依赖的性质:假设R(A,B,C)是一个关系模式,A,B,C 若 X→Y 是一个函数依赖,但Y不是X的子集则称X→Y 是 非平凡函数依赖,否则称为平凡函数依赖。下面以前者作为 基础。 函数依赖的性质:假设R(A,B,C)是一个关系模式,A,B,C 为属性,若在R中有A→B 和B→C,则在R中必定有A→C. 可 看出函数依赖A→B, B→C逻辑蕴含了函数依赖A→C. 定义2:在R(U)中,若属性集合Y函数依赖于属性集 合X,但Y函数不依赖于X的任一子集,则称Y对X完全函数依 赖,记作 X f Y ,反之,若Y依赖于X的某一个真子集,则 称Y对X部分函数依赖,记作X P Y。 定义3:在R(U)中,如果X/→Y,Y→X,X→Z(X不 是Y的子集,Z不是X子集),则称Z对Y传递依赖Y→Z。
3.3.3 范式 关系的规范化理论是由E.F.Codd于1971年提出的。规范化理论为数据结构定义了规范化的关系模式,简称范式(Normal Forms, NF)。它提供了判别关系模式设计的优劣标准,为数据库设计提供了严格的理论基础。 关系数据库中的关系是要满足一定要求的,满足不同的要求就称为不同的范式,满足最低要求的叫第一范式,简称1NF。在第一范式基础上又满足其它一些要求的称为第二范式,简称2NF,其余以此类推,直到第五范式。
1、第一范式(1NF) 设R是一个关系模式,如果R中的所有属性都是最基本的、不可再分的最小数据项,则称R满足第一范式或R是第一范式,简记为1NF。 1NF是最基本的范式要求,任何关系都必须遵守。然而第一范式的关系却存在着很多的缺点。 例如,上节中举例的S关系,S(NO,SD,DM,CN,DG)它就是一个1NF的关系,因为关系S中的每个属性的值都是不可再分的最小数据项。(见p45-46)
2、第二范式(2NF) 如果关系模式R是第一范式,且非主属性(不在候选键中的属性)都完全依赖于其主关键字,则称R满足第二范式或R是第二范式,简记为2NF。(见p46) 3、第三范式(3NF) 如果关系模式R是第二范式,且所有非主属性对任何主关键字都不存在传递依赖,则称R满足第三范式或R是第三范式,简记为3NF。(见p46-47)
3.4 小结 本章首先介绍了关系模型的数据结构以及关系模型的常用术语。在关系数据库中,完整性是非常重要的概念,完整性可以从三个方面来约束:实体完整性、参照完整性和用户定义完整性。然后介绍了关系代数,它分为两种:传统的集合运算;专门的关系运算。 最后介绍了关系数据库设计中的一个重要概念:函数依赖,并由此引出关系数据库的规范化理论。在对数据库中的数据进行规范化设计的时候一定要注意:并不是规范化程度越高,关系模式就越好,而是根据用户的需要以及数据之间的联系来进行设计。关系规范化理论的应用对设计一个良好的数据库是非常必要的。