280 likes | 447 Views
第五章 关系数据理论. 这一章讨论关系数据理论。第一节从数据库逻辑设计中如何构造一个好的数据库模式这一问题出发,阐明了关系规范化理论研究的实际背景。第二节介绍规范化理论,讨论各种范式及可能存在的插入、删除等毛病,并直观地描述解决办法。第三节和第四节进一步讨论关系数据理论。第三节讨论函数依赖的推理规则。第四节给出了模式等价的不同定义及模式分解算法。. 第一节 问题的提出.
E N D
第五章 关系数据理论 • 这一章讨论关系数据理论。第一节从数据库逻辑设计中如何构造一个好的数据库模式这一问题出发,阐明了关系规范化理论研究的实际背景。第二节介绍规范化理论,讨论各种范式及可能存在的插入、删除等毛病,并直观地描述解决办法。第三节和第四节进一步讨论关系数据理论。第三节讨论函数依赖的推理规则。第四节给出了模式等价的不同定义及模式分解算法。
第一节 问题的提出 • 前面已经讨论了数据库系统的一般概念,介绍了关系数据库的基本概念、关系模型的三个部分以及关系数据库的标准语言。但是还有一个很基本的问题尚未涉及,针对一个具体问题,应该如何构造一个适台于它的数据模式,即应该构造几个关系模式.每个关系由哪些属性组成等。这是数据库设计的问题,确切地讲是关系数据库逻辑设计问题。
实际上设计任何一种数据库应用系统,不论是层次的、网状的还是关系的,都会遇到如何构造合适的数据模式即逻辑结构的问题。由于关系模型有严格的数学理论基础,并且可以向别的数据模型转换,因此,人们就以关系模型为背景来讨论这个问题,形成了数据库逻辑设计的一个有力工具—一关系数据库的规范化理论。规范化理论虽然是以关系模型为背景,但是它对于一般的数据库逻辑设计同样具有理论上的意义。实际上设计任何一种数据库应用系统,不论是层次的、网状的还是关系的,都会遇到如何构造合适的数据模式即逻辑结构的问题。由于关系模型有严格的数学理论基础,并且可以向别的数据模型转换,因此,人们就以关系模型为背景来讨论这个问题,形成了数据库逻辑设计的一个有力工具—一关系数据库的规范化理论。规范化理论虽然是以关系模型为背景,但是它对于一般的数据库逻辑设计同样具有理论上的意义。
一个关系通常是由赋予它的元组语义来确定的。元组语义实质上是一个n目谓词(n是属性集中属性的个数)。凡使该n目谓词为真的笛卡尔积中的元素(或者说凡符合元组语义的那部分元素)的全体就构成了该关系模式的关系。一个关系通常是由赋予它的元组语义来确定的。元组语义实质上是一个n目谓词(n是属性集中属性的个数)。凡使该n目谓词为真的笛卡尔积中的元素(或者说凡符合元组语义的那部分元素)的全体就构成了该关系模式的关系。
现实世界随着时间在不断地变化,因而在不同的时刻,关系模式的关系也会有所变化。但是,现实世界的许多已有事实限定了关系模式所有可能的关系必须满足一定的完整性约束条件。这些约束或者通过对属性取值范围的限定,或者通过属性之间的相互关联(主要体现于值的相等与否)反映出来。后者称为数据依赖,它是数据模式设计的关键。关系模式应当刻划这些完整性约束条件,于是一个关系模式应当是一个五元组。现实世界随着时间在不断地变化,因而在不同的时刻,关系模式的关系也会有所变化。但是,现实世界的许多已有事实限定了关系模式所有可能的关系必须满足一定的完整性约束条件。这些约束或者通过对属性取值范围的限定,或者通过属性之间的相互关联(主要体现于值的相等与否)反映出来。后者称为数据依赖,它是数据模式设计的关键。关系模式应当刻划这些完整性约束条件,于是一个关系模式应当是一个五元组。
五元组:R(U,D,dom,F) • (1)关系名R,它是符号化的元组语义; • (2)一组属性U; • (3)属性组U中属性所来自的域D • (4)属性到域的映射dom; • (5)属性组U上的一组数据依赖F。 • 本章中把关系模式看作是一个三元组:R(U,F)当且仅当U上的一个关系r满足F时,r成为关系模式R(U,F)的一个关系。
关系,作为一张二维表,对它有一个最起码的要求:关系,作为一张二维表,对它有一个最起码的要求: • 每一个分量必须是不可分的数据项。满足了这个条件的关系模式就属于第一范式(1NF)。 • 数据依赖是通过一个关系中属性间值的相等与否体现出来的数据间的相互关系。它是现实世界属性间相互联系的抽象,是数据内在的性质,是语义的体现。数据依赖有多种类型,其中最重要的是函数依赖(Functional Dependency,简称FD)和多值依赖(Multivalued dependency,MVD)
例见P170 • 如果只考虑函数依赖这一种数据依赖,得到一个描述学校的数据库模式S(U,F),它由一个单一的关系模式构成。这个模式有三个问题: • 1、如果一个系刚成立尚无学生,或者虽然有学生但尚未安排课程,那么就无法把这个系及其负责人的信息输入数据库,这称为插入异常。 • 2、反过来,如果某个系的学生全部毕业,在删除该系学生选修课的同时,把这个系及其负责人的信息也丢掉了,这称为删除异常。 • 3、冗余太大。浪费存储并且系统要付出很大的代价来维护数据库的完整性。
一个好的模式应当不会发生插入异常和删除异常、冗余应尽可能少。一个好的模式应当不会发生插入异常和删除异常、冗余应尽可能少。 • 为什么会发生插入异常和删除异常呢?这是因为模式中的函数依赖存在某些不好的性质。假如把这个单一的模式改造并分成三个关系模式,这三个模式都不会发生插入异常、删除异常的毛病,数据的冗余也得到了控制。
第二节 规范化 • 关系必须是规范化的(Normalization),即每一个分量必须是不可分的数据项,但是这只是最基本的规范化。必须作进一步的分析,以确定如何设计一个好的、反映现实世界的模式。 • 通常按属性间依赖情况来区分关系规范化的程度为第一范式、第二范式、第三范式和第四范式等,然后直观地描述如何将具有不合适性质的关系转换为更合适的形式。
一、函数依赖 • 定义5.1 设R(U)是属性集U上的关系模式。X、Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y或Y函数依赖于X,记作X Y 。 • 函数依赖和别的数据依赖一样是语义范畴的概念,只能根据语义来确定一个函数依赖。 • 注意,函数依赖不是指关系模式R的某个或某些关系满足的约束条件,而是指R的一切关系均要满足的约束条件。
定义5.2 在R(U)中,如果X→Y,并且对于X的任意一个真子集X’,都有X’→Y,则称Y对X完全函数依赖,记作:X F Y • 若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作: X P Y • 定义5.3 见P173。
二、码 • 定义5.4 设K为R(U,F)中的属性或属性组合,若K F U则K为R的候选码(Candidate Key)。若候选码多于一个,则选定其中的一个为主码(Primary Key)。 • 包含在任何一个候选码中的属性,叫做主属性(Prime attribute)。不含在任何码中的属性称为非主属性(Nonprime attribute)或非码属性(Non-key attribute)。最简单的情况,单个属性是码。最极端的情况,整个属性组是码,称为全码(All-key)。
定义5.5 关系模式R中属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R的外部码(Foreign key),也称外码。 • 主码与外部码提供了一个表示关系间联系的手段。如关系模式S与SC的联系就是通过SNO来体现的。
三、范式 • 关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同范式。满足最低要求的叫第一范式,简称1NF。在第一范式中满足进一步要求的的为第二范式。其余依此类推。 • 所谓第几范式是表示关系的某一种级别现在把范式理解成符合某一级别的关系范式的集合,则R为第几范式就可以写成R∈xNF。 • 一个低一级范式的关系模式通过模式分解可以转换为若干个高一级范式的的关系模式的集合,这种过程就叫规范化。
四、2NF • 定义5.6 若R∈1NF且每一个非主属性完全函数依赖于码,则R∈2NF。 • 一个关系模式R不属于2NF,就会产生以下一个问题: • 1、插入异常 • 2、删除异常 • 3、修改复杂
五、3NF • 定义5.7 关系模式R(U,F)中若不存在这样的码X,属性组Y及非主属性Z(Z不属于且不等于Y)使得X→Y,(Y→X)Y→Z成立,则称R(U,F)∈3NF。
六、BCNF • 定义5.8 关系模式R(U,F)∈1NF。若X→Y且Y不等于且不包含于X时,X必含有码,则R(U,F)∈BCNF。 • 也就是说,关系模式R(U,F)中,若每一个决定因素都包含码,则R(U,F)∈BCNF。 • 由BCNF的定义可以得到结论,一个满足BCNF的关系模式有: • 1、所有非主属性对每一个码都是完全函数依赖。 • 2、所有的主属性对每一个不包含它的码,也是完全函数依赖。 • 3、没有任何属性完全函数依赖于非码的任何一组属性。
七、多值依赖 • 定义5.9 设R(U)是属性集U上的一个关系模式。X,Y,Z是U子集,并且Z=U-X-Y。关系模式R(U)中多值依赖X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而与z值无关。
对于多值依赖的另一个等价的形式化的定义是:对于多值依赖的另一个等价的形式化的定义是: • 在R(U)的任一关系r中,如果存在元组t,s使得t[X]=s[X],那么就必然存在元组w,v∈r,(w,v可以与s,t相同),使得w[X]=v[X]=t[X],而w[Y]=t[Y],w[Z]=s[Z],v[Y]=s[Y],v[Z]=t[Z](即交换s,t元组的Y值所得的两个新元组必在r中),则Y多值依赖于X,记为X→→Y。这里,X,Y是U的子集,Z=U-X-Y。 • 若X→→Y,而Z=φ即Z为空,则称X→→Y为平凡的多值依赖
多值依赖的性质: • 1、多值依赖具有对称性。即若X→→Y,则X →→Z,其中Z=U-X-Y • 2、多值依赖的传递性。若X →→Y,Y →→Z,则X →→Z-Y。 • 3、函数依赖可以看作是多值依赖的特殊情况,即若X→Y,则X→→Y。 • 4、若X→→Y,X→→Z, 则X →→YZ。 • 5、若X→→Y,X →→Z,则X →→Y∩Z • 6、若X→→Y,X →→Z,则X →→Y-Z,X →→Z-Y
多值依赖与函数依赖相比有两个基本区别: • 1、多值依赖的有效性与属性集的范围有关。 • 一般地,在R(U)上若有X →→Y在W(W U)上成立,则称X→→Y为R(U)的嵌入型多值依赖。 • 2、若函数依赖X→Y在R(U)上成立,则对于任何Y’ Y均有X→Y’成立。而多值依赖X→→Y若在R(U)上成立,却不能断言对于任何Y’ Y有X→→Y’成立。 ∩ ∩ ∩
八、4NF • 定义5.10 关系模式R(U,F)∈1NF,如果对于R的每个非平凡多值依赖X→→Y,X都含有码,则称R(U,F)∈4NF。 • 4NF就是限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖。显然如果一个关系模式是4NF,则必为BCNF。一个关系模式如果已达到BCNF但不是4NF,这样的关系模式仍然具有不好的性质。
可以用投影分解的方法消去非平凡且非函数依赖的多值依赖。可以用投影分解的方法消去非平凡且非函数依赖的多值依赖。 • 函数依赖和多值依赖是两种最重要的数据依赖。如果只考虑函数依赖,则属于BCNF的关系模式规范化程度已经是最高的了。如果考虑多值依赖,则属于4NF的关系模式规范化程度是最高的了。如果消除了属于4NF关系模式存在的连接依赖,则可以进一步达到5NF的关系模式。
九、规范化小结 • 规范化的基本思想是逐步消除数据依赖中不合适的部分,使模式中的各关系模式达到某种程度的“分离”,即“一事一地”的模式设计原则。 • 关系模式的规范化过程是通过对关系模式的分解来实现的。把低一级的关系模式分解为若干个高一级的关系模式,这种分解不是唯一的。 • 各种范式及规范化过程详见P183。
第三节 数据依赖的公理系统 • 数据依赖的公理系统是模式分解算法的理论基础,首先讨论函数依赖的一个有效而完备的公理系统——Armstrong公理系统。 • 定义5.11 对于满足一组函数依赖F的关系模式R(U,F),其任何一个关系R,若函数依赖X→Y都成立(即r中任意两元组t,s,若t[X]=s[X],则t[Y]=s[Y],则称F逻辑蕴含X→Y。
Armstrong公理系统: • 设U为属性集总体,F是U上的一组函数依赖,于是有关系模式R(U,F)。对R(U,F)来说有以下的推理规则: • 1、A1自反律(Reflexivity) • 2、A2增广律(Augmentation) • 3、A3传递律(Transitivity) • 注意:由自反律所得到的函数依赖均是平凡的函数依赖,自反律的使用并不依赖于F。
定理5.1 引理5.1 定义5.12 算法5.1 • 定理5.2 引理5.2 定义5.13 • 定理5.3 引理5.3 定义5.14 • 定义5.15