1、第五章 关系数据理论,二维表:逻辑数据的合理组织。关系模式设计;模式评价。,数据库逻辑设计 一组数据:应构造几个关系? 每个关系由哪些属性组成?,5.1 问题的提出,关系规范化理论,关系必须满足一定的完整性约束 条件。 依赖于值域的限制对属性取值范围的限制。 依赖于值的相等与否的限制属性间的相互关联。数据库模式设计的关键。,数据 依赖,已知:关系模式SB,要设计一个模式SD,它与SB“等价”, 但在某些方面“更好”一些。,例1: 要求设计一个教学管理数据库,希望从该 数据库中经常得到下面的有关信息:学号、姓名、年龄、性别、系、系主任姓名、课程号、成绩等。参考设计的关系模式如下: S1(SNO,
2、 SNAME, SAGE, SSEX, SDEPT,DNAME, CNO, GRADE),数据库模式设计:,关系模式S1的一个数据库 r,教学管理数据库,关系模式S1存在的问题是: 冗余大。每一个系名和系主任的名字存储次数等于该系学生人数乘以每个学生选修的课程门数,浪费存储。 插入异常。若一个系刚成立没有招生,或虽然有了学生,但尚未安排课程,那么系名和系主任就无法插入到数据库中。, 删除异常。当一个系的学生都毕业了而又没招新生时,删除了全部学生记录,随之也删除了系名和系主任名。这个系仍然存在,而在数据库中却无法找到该系的信息。 更新异常。若某系换系主任,数据库中该系的学生记录应全部更改,系统要
3、付出很大的代价来维护数据库的完整性。如有不慎,某些记录漏改了,则会造成数据的不一致而出错。,一个好的关系模式的条件应该: 尽可能少的数据冗余。 没有插入异常。 没有删除异常。 没有更新异常。原因:属性间值的相等与否,数据间存在着某些相互依赖的关系。,把关系模式S1分成三个关系模式: S_1(SNO, SNAME, SAGE, SSEX, SDEPT) r1 S_2(SDEPT, DNAME) r2 S_3(SNO, CNO, GRADE) r3r1:学生信息,与所学课程及系主任无关;r2:系的信息,与学生信息无关;r3:选课成绩信息,与学生的基本信息无关。,把关系模式S1分成三个关系模式: S
4、_1(SNO, SNAME, SAGE, SSEX, SDEPT) S_2(SDEPT, DNAME) S_3(SNO, CNO, GRADE)数据冗余度降低;无插入异常;无删除异常; 无更新异常,上述三个模式是否最佳? 到底什么样的关系模式是最佳的? 标准是什么? 如何实现?,函数依赖 数据依赖 多值依赖连接依赖,在设计关系模式时,必须从语义上 分析属性间的关联。各属性间的关联关 系称之为数据依赖。,每个关系中的属性一定要满足某种 内在的语义条件,即要按一定的规范设 计关系模式,这就是关系模式的规范化。关系数据库设计理论主要包括三个 方面的内容:数据依赖、范式、模式设 计方法。数据依赖起着核
5、心的作用。,1971年,E.F.Codd相继提出了第一范式第二范式第三范式 E.F.Codd与Boyce合作提出了Boyce- Codd范式(BCNF) 1976-1978年,Fagin,Delobe又定义了第四范式 到目前为止已经提出了第五范式,5.2 关系模式的规范化,一个关系数据库中的表,必须满足一定的条件。 应满足的条件分成几级,每一级称作一个范式,不同的级别有不同的范式。关系的规范化就是使关系满足某种条件的处理。,满足最基本规范化条件的的关系模式叫第一范式;第一范式的关系模式再满足另外一些约束条件就产生了第二范式、第三范式、BC范式等等;一个低一级的关系范式,通过模式分解可以转换成高
6、一级范式的关系模式的集合。这种过程叫关系模式规范化。,关系模式R为第几范式表示为:R xNF 其中, x:级别; NF:范式(Normal Forms)范式级别越高,应满足的条件就越严格。5NF4NFBCNF3NF2NF1NF,1NF,2NF,3NF,BCNF,4NF,5NF,1. 函数依赖函数依赖是关系模式中属性之间的一种依赖关系。在诸多的数据依赖中,其中最有 实际意义的是函数依赖(functional dependency)。例如:关系模式S1中,SNO与SAGE之间就有一种函数依赖关系。,定义: 设R(U)是属性集U上的关系模式。X,Y是U的子集。若对于R(U)的任意一个可能的关系r,r
7、中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等(即对于X的每一个具体值,Y都有唯一的值与之对应),则称X函数决定Y或Y函数依赖于X,记作XY。称X为决定因子,Y是依赖因子。XY为模式R(U)的一个函数依赖。,对一个关系中的任意两个元组,只要决定因子的值相同,所有其它属性的值也一定相同。即: 如果t1,t2是r的任意两个元组,如果t1X=t2X,则有t1Y=t2Y。,属性间的函数依赖完全来自于现实世界的语义,而不是凭主观臆断的。只能根据语义来确定属性间是否存在函数依赖关系。,下面介绍一些术语和记号:若XY,但YX则称XY是非平凡的函数依赖。若XY,但YX则称XY 是平凡的函数依赖。
8、若XY,则X叫决定因子,Y叫依赖因子。若XY,YX,则记作XY。若Y不函数依赖于X,则记作XY。,下面给出1:1、1:n、m:n联系的情况:若X,Y之间是1:1联系,则根据函数依赖定义可知存在:XY,且YX。若X,Y之间是n:1联系,则XY。若X,Y之间是m:n联系,则X与Y之间不存在函数依赖。,定义: 在R(U)中,如果XY,并且对于X的任何一个真子集X都有XY,则称Y完全函数依赖于X,记作 XY。若XY,并且对于X的某一个真子集X(XX),都有XY,则称Y部分函数依赖于X,记作:XY。如果Y部分函数依赖于X,则X必定是组合属性。例:(SNO, CNO)SNAME。,f,p,p,定义: 在R
9、(U)中,如果XY, (YX),YX,YZ,则称Z传递函数依赖于X,记作X Z 。 在例1的关系S_1中,SNOSDEPT,SNOSAGE,SNOSNAME(无重名)。在关系S_3中,SNOGRADE,(SNO, CNO) 是关键字,SNOCNO, SNOGRADE。,传递,2. 关键字(码)键是唯一地标识实体的属性集。定义: 设有关系R(U),U是R的全部属性集合,KU是一个属性或是一个属性组合。若KU,则K为R的候选关键字(Candidate Key)。若候选关键字多于一个,则选定其中的一个作为主关键字(Primary Key)。,f,主属性(Prime attribute):包含在任何一
10、个候选码中的属性。非主属性(Prime attribute) :不包含在任何一个码中的属性。全码(All-key):整个属性组是码。 例:在关系S_3中,(SNO, CNO)GRADE, (SNO, CNO) 是关键字,SNO,CNO称为主属性。,f,设有关系R(U),U是R的全部属性集合,XU是一个属性或是一个属性组合。若XU,则X为R的一个超键。例:在关系S1中,(SNO,SNAME,CNO,DNAME)也能函数决定R的全部属性,但相比之下,只能说是一个超键,而不能说是候选键,因为其中含有多余属性。,例2:全码的例子整个属性组都是关键字。关系模式R(姓名, 性别, 出生日期),可能存在重名
11、且性别相同。则关系R的关键字一般是(姓名, 性别, 出生日期)。,定义: 在关系模式R(U)中的属性或属性组X不是R的码,但X是另一个关系模式的码,则称X是R的外部关键字(Foreign Key),简称外键。主关键字与外键提供了一个表示关系间联系的手段。,在例1的关系S_3中,SNO不是关键字,但SNO是关系S_1的关键字,因此SNO是关系S_3的外键。关系模式S_1与关系模式S_3间的联系就是通过SNO来实现的。,3. 第一范式(1NF)例:关系模式study=SNO, CNAME,给出学生选修课程的关系。,Study是非规范化关系模式,其缺点是 更新操作困难。,定义6: 设有关系模式R(U
12、),其所有的属性均为简单属性,即每个属性都是不可再分的,则称R属于第一范式,简称1NF,记作R1NF。关系中的每个属性必须是不可再分的数据项,不能是组合项。,凡非规范化的关系模式必须化成规范化的关系模式。在非规范化的关系中去掉组项和重复数据项就能符合第一范式的条件,变为规范化的关系。例:关系模式S1中所有的属性都是不可再分的简单属性,可表示为S11NF。S1关键字为(SNO, CNO)。,例:分析关系模式S1中的函数依赖关系。(SNO, CNO)SNAME, SNOSNAME, (SNO, CNO)SAGE, SNOSAGE, (SNO, CNO)SSEX, SNOSSEX, (SNO, CN
13、O)SDEPT, SNOSDEPT, (SNO, CNO)GRADE, SDEPTDNAME,前面已分析过关系模式S1存在的问题。,4. 第二范式(2NF) 定义7: 设有关系模式R(U)1NF ,如果其所有非主属性都完全函数依赖于关键字,则称R属于第二范式,简称2NF,记作R2NF。解决关系模式中非主属性对关键字的部分函数依赖问题。,分析关系模式S1中的函数依赖关系: SNOSNAME, (SNO, CNO)SNAME,SNOSAGE, (SNO, CNO)SAGE, SNOSSEX, (SNO, CNO)SSEX, SNOSDEPT, (SNO, CNO)SDEPT, (SNO, CNO)
14、GRADE, SDEPTDNAME。存在非主属性部分函数依赖于主关键字,因此S11NF,而S12NF。,p,p,p,p,f,f,f,f,f,利用投影运算,将S1分解成如下的两个关系模式: SR(SNO, SNAME, SAGE, SSEX, SDEPT, DNAME) SC(SNO, CNO, GRADE) 在关系模式SR中,函数依赖是: SNOSNAME,SNOSAGE,SNOSSEX, SNOSDEPT,(SNO, CNO)GRADE, SDEPTDNAME。 可见: SR2NF,而SC2NF。,f,f,f,f,f,f,即使一个关系模式R2NF,仍然存在以下几个问题: 冗余大。 在关系模式
15、SR中,系主任(DNAME)的名字存储次数等于该系学生人数,浪费存储。 插入异常。 在关系模式SR中,若一个系刚成立没有招生,那么系名和系主任就无法插入到数据库中。,分析关系模式SR中的函数依赖关系: SNOSNAME,SNOSAGE,SNOSSEX, SNOSDEPT,SDEPTDNAME。 发现:非主属性DNAME函数依赖于SDEPT,而SDEPT函数依赖于关键字SNO,也就是说非主属性DNAME是传递函数依赖于关键字SNO,即SNO DNAME 。,f,f,f,f,传递,5. 第三范式(3NF) 定义8: 设有关系模式R(U)1NF,如果其所有非主属性都不传递函数依赖于关键字,则称R属于
16、第三范式,简称3NF,记作R3NF。解决关系模式中非主属性对关键字的传递函数依赖问题。,分析关系模式SR中的函数依赖关系: SNOSDEPT,SDEPTDNAME,即存在 SNO DNAME,所以SR2NF,SR3NF。 分析关系模式SC中的函数依赖关系: (SNO, CNO)GRADE,即不存在部分函数依赖和传递函数依赖,所以SC3NF。,f,传递,f,利用投影运算,将SR中的传递函数依赖消除,分解成如下的两个关系模式: S_1(SNO, SNAME, SAGE, SSEX, SDEPT) S_2(SDEPT, DNAME)经分析,在关系模式S_1和S_2中,既不存在部分函数依赖,也不存在传
17、递函数依赖,因此:S_13NF,S_23NF。,把关系模式S1分成三个关系模式: S_1(SNO, SNAME, SAGE, SSEX, SDEPT) S_2(SDEPT, DNAME) S_3(SNO, CNO, GRADE)S_13NF,S_23NF,S_33NF,考察 这三个关系模式的性能可以看出,它们 实现了:数据冗余度降低;无插入异常;无删除异常; 无更新异常,如果关系模式R3NF,X,A是属性集,XA,AX,都不会有下列情况出现: X是一个关键字的真子集,若出现,就产生了部分函数依赖;X不是关键字,且A是非主属性(AX)。若出现,就产生了传递依赖。 注意:3NF并未排除主属性对关键
18、字的依赖关系。,6. BCNF满足了3NF的有些关系模式仍具有不合适的性质。例3:关系模式STC(S, T, C),其含义为,S:学生,T:教师,C:课程。语义假设是,每一位教师仅教一门课程;每门课程有若干教师任教;某一学生选定某门课程,就对应一个确定的教师。,根据语义假设:后选关键字为(S,C)和(S,T),即不存在非主属性。关系模式STC的函数依赖为TC,(S,C)T。STC中不存在非主属性对关键字的部分函数依赖和传递函数依赖。因此STC3NF。,f,f, 仍有冗余。在教师上课的信息与学生选课的人数一样多。 插入异常。 没有学生选修的课程,则教师上该门课程的信息无法反映。 删除异常。在删除
19、学生选课记录,随之也删除了教师上该门课的信息。 修改复杂。某教师教授另一门课程。,因此3NF的关系模式还必须进一步分解。把STC分解成:ST(S,T),数据依赖为(S,T)T, (S,T)S TC(T,C),数据依赖为TCSTC分解后,解决了以上的4个弊端。关系模式ST和关系模式TC的决定因子都是关键字。,定义9: 设有关系模式R(U)1NF,若XY且YX时X必含有码,则称R属于BC范式,简称BCNF,记作RBCNF。若每一个决定因子都是这个关系模式的的一个关键字,或者说若每一个决定因子都包含关键字。BCNF是从任意属性与关键字,而不是非主属性与关键字来讨论问题的。,一个满足BCNF的关系模式
20、有以下三个结论: 所有非主属性对每一个关键字都是完全函数依赖; 所有的主属性对每一个不包含它的关键字,也是完全函数依赖; 没有任何属性完全函数依赖于非主属性的任何组合。BCNF排除了任何非主属性对关键字的部分函数依赖和传递函数依赖,包含了2NF和3NF的定义,而且排除了主属性对不包含它的关键字的部分函数依赖和传递函数依赖。,例4:关系模式COURSE(CNO, CNAME, CTIME)。 COURSE3NF,COURSEBCNF。例5:关系模式S(SNO, SNAME, SDEPT,SAGE),且假定不存在同名。后选关键字为SNO,SNAME。S3NF S中除SNO,SNAME外没有其它决定
21、因子,所以SBCNF。,例6:关系模式SCP(S, C, P),S:学生,C:课程,P:名次。语义为,每一个学生选修每门课程的成绩有一定的名次,每门课程中每一名次只有一个学生。由此可得到下面的函数依赖: (S, C)P;(C, P)S (S, C)与(C, P)是关键字,经分析可知 SCP3NF, SCPBCNF。,例7:例3的关系模式STC(S, T, C)。 由语义得到下面的函数依赖: (S, C)T;(S, T)C; TC; (S, C)与(S, T)都是关键字。经分析可知 STC3NF, STCBCNF。,因此把满足3NF的关系模式STC进一步分解成:ST(S,T),数据依赖为(S,T
22、)T, (S,T)S TC(T,C),数据依赖为TC关系模式ST和关系模式TC的决定因子都是关键字,所以有STBCNF,TCBCNF。,BCNF比3NF又进了一步。因此BCNF是3NF的推广和提高。在函数依赖的范畴中,关系模式的优劣基本到BCNF为止。一个关系模式属于BCNF,已消除了产生插入异常和删除异常的根源,数据冗余也减少到极小程度。一般说来,符合BCNF的关系模式就是一个较为理想的关系模式了。,7. 多值依赖(MVD) Multivalued Dependency 前面已在函数依赖的范畴内讨论了关于规范化的问题。但是函数依赖表示的是关系模式中属性间1:1和n:1的联系,而不能表示属性间
23、n:n的联系。因而一些关系模式虽然已是BCNF,仍然存在一些弊端。,例8:非规范化关系CTB(C, T, B), 其含义为,B:参考书,T:教师, C:课程。语义是: 某一门课程由多个教师任教,他们 使用相同的一套参考书; 每位教师可以讲授多门课程,每种 参考书可供多门课程使用;转换成等价的规范化的关系。,观察到数据间有这样的关系: 一个课程值,能确定一组教师与之对应,与参考书无关;一个课程值,能确定一套参考书与之对应,与教师无关。,这个关系存在的问题: 数据冗余大; 插入异常; 若某一门课程(如物理)增加一名任课教师(如周英)时,必须插入多个(此例是三个)元组:(物理,周英,普通物理),(物
24、理,周英,光学原理),(物理,周英,物理习题集)。 删除异常; 若某一门课程(如数学)要去掉一本参考书(如微分方程)时,则必须删除多个(此例是两个)元组:(数学,李勇,微分方程),(数学,张平,微分方程)。 修改异常。,分析:CTB的关键字是(C, T, B),即全关键字,因此,CTBBCNF。 一个属于BCNF的关系模式还有如此多的弊端。从属性间的联系分析入手,结果发现:对于表中C的一个具体值,T有多个值与其对应。同样,C与B也有类似的联系。 如C的值为物理,则T有李勇、王军两个值与其对应。对于表中C的值一经确定之后,其所对应的一组T值与B的值无关。 如对应物理的一组教师与此课程的参考书无关
25、。,CTB表中反映出来的属性C与T之间的联系不是函数依赖关系。产生问题的原因是:教师与参考书没有直接的联系; 教师与课程、参考书与课程是有直接联系的。在模式CTB中,一门课程可有多个教师讲授(1:n联系),一门课程可有多本参考书(1:n联系),而且教师与参考书之间没有直接联系。这种依赖称为多值依赖(MVD)。,定义10:设有关系模式R(U),U是属性集合,X、Y、Z是U的子集,且Z=U-X-Y。如果对于R的任一关系r,对于给定的一对(x, z)值有一组Y值与之对应,Y的这组值仅决定于x值而与z值无关,此时称Y多值依赖于X,或X多值决定Y,记为XY。,下面介绍一些术语和记号:若XY,且Z=U-X
26、-Y(空集),则称XY为非平凡的多值依赖。若XY,且Z=U-X-Y=(空集),则称XY为平凡的多值依赖。,在例8中,对于一个(物理,光学原理) 有一组T值李勇,王军与之对应,这组 值仅仅依赖于课程C上的值(物理)。也就 是说,对于另一个(物理,普通物理),它 对应的一组T值仍是李勇,王军,尽管 这时参考书B的值已经改变了。因此: T值多值依赖于C, 即CT,同理有CB。,定义10:设有关系模式R(U),U是属性集合,X、Y、Z是U的子集,且Z=U-X-Y。对于R的任一关系r,如果存在元组t,s,它们在X上的值相等,sX=tX,那么就必然存在元组w,vr,使得wX=vX=sX=tX,wY=tY且
27、wZ=sZ,vY=sY且vZ=tZ(即交换s,t元组的Y值所得的两个新元组必在r中),则称Y多值依赖于X,或X多值决定Y,记为XY。,定义10:设有关系模式R(U),U是属性集合,X、Y、Z是U的子集,且Z=U-X-Y。如果对于R的任一关系r,如果存在(x1,y1,z1)和(x2,y2,z2)时,那么就必然存在元组(x1,y2,z1)和(x2,y1,z2) ,则称Y多值依赖于X,或X多值决定Y,记为XY。,s,t,w,v,(x1,y1,z1),(x2,y2,z2),(x1,y2,z1),(x2,y1,z2),例9:关系模式WSC(W,S,C)中,W:仓库; S:保管员;C:商品。语义是: 每个
28、仓库有若干个保管员,有若干种商 品。每个保管员保管所在仓库的所有商 品,每种商品被所有保管员保管。 按照语义:对于W的每一个值Wi,S有 一个完整的集合与之对应而不论C取何值 (W与S是1:n的联系),所以WS。由 于C与S完全对应,必然有WC成立。,Si1 Si2 Sin,Ci1 Ci2 Cin,Wi,S,Wi,C,Wi,应当有S 中的每一个值和C 中的 每一个值对应。,Wi,Wi,表示此仓库的全部保管员,表示在此仓库中存放的所有商品,多值依赖具有以下性质:对称性:若XY,则 XZ=U-X-Y。传递性:若XY,YZ,则 XZ-Y。,函数依赖是多值依赖的的特殊 情况:即若XY,则XY。合并性:
29、若XY,XZ,则XYZ。分解性:若XY,XZ,则XYZ,XY-Z,XZ-Y 。,多值依赖与函数依赖的区别: 在关系模式R(U)中,函数依赖XY的有效性仅仅决定于X,Y这两个属性集的值。在多值依赖中,XY在属性全集U上是否成立,不仅要检查X,Y上的值,而且要检查Z=U-X-Y上的值。因此,如果XY在W(WU)上成立,而在U上则不一定成立。所以多值依赖的有效性与属性集的范围有关。如果函数依赖XY在关系R(U)上成立,则对于任何YY均有XY成立,而对多值依赖 XY在R(U)上成立,却不能断言对于任何YY有XY成立。,8. 第四范式(4NF) 例8所示的关系模式CTBBCNF,但从前面分析可知仍存在一
30、些问题。原因是CTB中存在非平凡的多值依赖,而决定因子不是关键字。将CTB分解,CTB1(C,T),CTB2(C,B),它们的冗余度明显下降。它们的属性间各有一个多值依赖CT,CB,都是平凡的多值依赖。,含有多值依赖的的关系模式中,减少数据冗余和操作异常的方法是用投影的方法消去非平凡的多值依赖。这样,就可以规定一个比BCNF更高的范式,称为4NF。统一用多值依赖的概念定义第四范式。,定义11:设有关系模式R(U)1NF,U是属性集合,X、Y是U的子集。如果对于R的任一非平凡的多值依赖XY(YX),X包含了R的一个关键字,则称R(U)是第四范式,记为R(U)4NF。,关系模式CTB(C,T,B)
31、,CTB4NF。 将关系模式CTB分解为CTB1(C,T),CTB2(C,B),因为都是两个属性,CT和CB均是平凡的多值依赖,所以CTB14NF,CTB24NF。,9. 规范化小结 规范化的基本思想是逐步消除数据依赖中不合适的部分,使各关系模式达到某种程度的“分离”。关系模式的规范化过程使通过对关系模式的分解来实现的。运用投影运算,把低一级的关系模式分解为若干个高一级的关系模式,要求将分解后的若干关系进行自然连接运算后必须得到与分解前相同的关系,不产生多余的信息,也不丢失任何信息。这种投影分解不是唯一的。(无损连接和保持函数依赖)。,关系模式的规范化过程,非规范化的关系,消除属性的组合性,并
32、指定关键字,消除非主属性对关键字的部分函数依赖,消除非主属性对关键字的传递函数依赖,消除主属性对关键字的部分和传递函数依赖,消除非平凡的多值依赖,消除决定 因子不是 关键字的 非平凡多 值依赖,关系模式规范化理论为数据库设计提供了理论指南和工具。但并不是规范化程度越高,模式就越好。(规范化程度越高,做综合查询时付出的做连接运算的代价越大)。在实际关系模式时,分解进行到3NF就可以了。,5.3 函数依赖1. 函数依赖的逻辑蕴涵定义12:对于满足一组函数依赖F的关系模式R ,X、Y是U的子集。对于其任何一个关系r,若函数依赖XY都成立(即r中任意两元组t,s,若tX=sX,则tY=sY),则称F逻
33、辑蕴含X Y。,2. Armstrong公理系统:设U为属性集总体,F是U上的一组函数依赖, 于是有关系模式R 。对R 来说有以下的推理规则:Al.自反律(Reflexivity): 若Y X U,则X Y为F所蕴含。A2.增广律(Augmentation):若XY为F所蕴含,且Z U,则XZYZ为F所蕴含。A3.传递律(Transitivity):若XY及YZ为F所蕴含,则XZ为F所蕴含。,定理5.l:Armstrong推理规则是正确的。证明: (l)设YXU 。 对R 的任一关系r中的任意两个元组t,s: 若tX=sX,由于Y X,有ty=sy, 所以XY成立,自反律得证。,(2)设XY为
34、F所蕴含,且Z U。设R 的任一关系r中任意的两个元组t,s; 若tXZ=sXZ,则有tX=sX和tZ=sZ; 由XY,于是有tY=sY,所以tYZ=sYZ, 所以XZYZ为F所蕴含,增广律得证。 (3)设XY及YZ为F所蕴含。对R 的任一关系r中的任意两个元组t,s。 若tX=sX,由于XY,有tY=sY; 再由YZ,有tZ=sZ,所以XZ为F所蕴含, 传递律得证。,根据A1,A2,A3这3条推理规则可以得到下面3条很有用的推理规则:合并规则:由XY,XZ,有XYZ。伪传递规则:由XY,WYZ,有XWZ。分解规则:由XY及ZY,有XZ。 根据合并规则和分解规则,很容易得到这样一个重要事实:
35、引理5.l: XA1 A2Ak成立的充分必要条件是XAi成立(i=l,2,k)。,定义13:在关系模式R中为F所逻辑蕴含的函数依赖的全体叫作F的闭包,记为F+。人们把自反律、传递律和增广律称为Armstrong公理系统。Armstrong公理系统是有效的、完备的。Armstrong公理的有效性指的是:由F出发根据Armstrong公理推导出来的每一个函数依赖一定在F+中;完备性指的是F+中的每一个函数依赖,必定可以由F出发根据Armstrong公理推导出来。,要证明完备性,首先要解决如何判定一个函数依赖是否属于由F 根据Armstrong公理推导出来的函数依赖的集合。当然,如果能求出这个集合,
36、问题就解决了。但不幸的是,这是一个NP完全问题。比如从F=XA1,XAn 出发,至少可以推导出2n个不同的函数依赖。为此引入了下面的概念:,3. 闭包与闭包的计算定义14:设F为属性集U上的一组函数依赖,X U,XF+=A|XA能由F 根据Armstrong公理导出,XF+ 称为属性集X关于函数依赖集F的闭包。,由引理5.1容易得出:引理5.2:设F为属性集U上的一组函数依赖,X,Y U,XY能由F根据Armstrong公理导出的充分必要条件是 Y XF+。 于是,判定XY是否能由F根据 Armstrong公理导出的问题,就转换为求出XF+,判定Y是否为XF+的子集的问题。这个问题由算法5.l
37、解决了。,算法5.l:求属性集X(X U)关于U上的函数依赖集F的闭包XF+。输入:X,F输出:XF+,步骤:(教材 P.185) (1)令X(0)=X,i=0 (2)求B,这里B = A |(V)(W)(VWFVX(i)AW); (3)X(i+1)=BX(i) (4)判断X(i+1)=x(i)吗? (5)若相等或X(i)=U 则X(i)就是XF+,算法终止。 (6)若否,则i=i+l,返回第(2)步。,例1 已知关系模式R, 其中U=A,B,C,D,E;F=ABC,BD,CE,ECB,ACB。 求(AB)F+ 。(按教材上步骤计算)解 由算法5.1,设X(0)=AB; 计算X(1);逐一扫描
38、F集合中各个函数依赖,找左部为A,B或AB的函数依赖,得到两个:ABC,BD,于是X(1)=ABCD=ABCD。,因为X(0)X(1),所以再找出左部为ABCD子集的那些函数依赖,又得到CE,ACB,于是X(2)=X(1)BE=ABCDE。因为X(2)已等于全部属性集合,所以(AB)F+ =ABCDE。对于算法5.l,令ai=|X(i)|,ai 形成一个步长大于1的严格递增的序列,序列的上界是|U |,因此该算法最多 |U|X| 次循环就会终止。,定理5.2:Armstrong公理系统是有效的、完备的。Armstrong公理系统的有效性可由定理5.l得到证明。完备性的证明从略,有兴趣的读者请参
39、考7。Armstrong公理的完备性及有效性说明了“导出”与“蕴含”是两个完全等价的概念。于是F+ 也可以说成是由F出发借助Armstrong公理导出的函数依赖的集合。从蕴含(或导出)的概念出发,又引出了两个函数依赖集等价和最小依赖集的概念。,定义14:如果G+=F+,就说函数依赖集F覆盖G(F是G的覆盖,或G是F的覆盖),或F与G等价。引理5.3:F+ = G+ 的充分必要条件是 F G+,和G F+ 。证明 必要性显然,只证充分性。 (1)若FG+,则XF+ XG+ 。,(2)任取XYF+ 则有 Y XF+ XG+ 。 所以XY (G+)+= G+。即F+ G+。 (3)同理可证G+ F+
40、,所以F+ = G+。而要判定F G+,只须逐一对F中的函 数依赖XY,考察 Y 是否属于就行了。因此引理5.3给出了判断两个函数依赖集等价的可行算法。,4. 最小函数依赖集定义15:如果函数依赖集F满足下列条件,则称F为一个极小函数依赖集。亦称为最小依赖集或最小覆盖。(1)F中任一函数依赖的右部仅含有一个属性。(2)F中不存在这样的函数依赖XA,使得F与FXA等价。(3)F中不存在这样的函数依赖XA,X有真子集Z使得FXAZA与F等价。,例2 考察关系模式S,其中:U=Sno,Sdept,MName,Cname,Grade, F=SnoSdept,SdeptMName, (Sno,Cname
41、)Grade设 F=SnoSdept,SnoMName, SdeptMName,(Sno,Cname)Grade, (Sno,Sdept)Sdept根据 定义15 可以验证F是最小覆盖,而F不是。因为FSnoMName与F等价, F(Sno,Sdept)Sdept与F等价。,定理5.3:每一个函数依赖集F均等价于一个极小函数依赖集Fm。此Fm称为F的最小依赖集。证明 这是一个构造性的证明,分3步对F进行“极小化处理”,找出F的一个最小依赖集来。(1) 逐一检查F中各函数依赖FDi:XY,若Y=A1A2 Ak,k2,则用XAj |j=1,2,k来取代XY。,(2) 逐一检查F中各函数依赖FDi:
42、XA,令G=FXA,若AXG+,则从F中去掉此函数依赖(因为F与G等价的充要条件是AXG+)。(3) 逐一取出F中各函数依赖FDi:XA,设X=B1B2Bm,逐一考查Bi(i=l,2,m),若A (XBi)F+,则以XBi 取代X(因为F与FXAZA等价的充要条件是AZF+ 其中Z=XBi)。,最后剩下的F就一定是极小依赖集,并且与原来的F等价。因为对F的每一次“改造”都保证了改造前后的两个函数依赖集等价。这些证明很显然,请读者自行补上。应当指出,F的最小依赖集Fm不一定是惟一的,它与对各函数依赖FDi 及XA中X各属性的处置顺序有关。,例3 F = AB,BA,BC,AC, CA Fm1= AB,BC,CA Fm2= AB,BA,AC,CA这里给出了F的两个最小依赖集Fm1,Fm2 。若改造后的F与原来的F相同,说明F本身就是一个最小依赖集,因此定理5.3的证明给出的极小化过程也可以看成是检验F是否为极小依赖集的一个算法。,两个关系模式R1 , R2,如果F与G等价,那么R1的 关系一定是R2的关系。反过来,R2的关 系也一定是R1的关系。所以在R 中用与F等价的依赖集G来取代F是允许的。,