《函数依赖公理体系.ppt》由会员分享,可在线阅读,更多相关《函数依赖公理体系.ppt(32页珍藏版)》请在三一办公上搜索。
1、第2讲 函数依赖的公理体系,第5章 关系数据库模式设计,主要内容,阿姆斯特朗公理及推论X关于F的闭包及其计算最小函数依赖集候选键的求解方法,一、阿姆斯特朗公理及推论,是一系列推理规则最早出现在1974年的论文里他人与1977年提出改进形式,F=XY,侯选键,XY在R中是否成立,能从F导出的所有XY,推导工具?,问题引入:,1、阿姆斯特朗公理,设有关系模式R(U,F),U=A1,A2,An是R的属性集,F是R的属性集U上的FD集,X、Y、Z、W是U的子集。阿姆斯特朗公理为:A1 自反律:若YX,则XY A2 增广律:若XY,则XZYZ A3 传递律:若XY,YZ,则XZ,Armstrong公理是
2、正确的。方法:从函数依赖的定义出发 A1 自反律:若YX,则XY证:设u、v为r的任意两个元组。若uX=vX,则u和v在X的任何子集上必然相等。由条件YX,所以有:uY=vY,由u、v的任意性,并根据函数依赖的定义,可得 XY。,2、定理5.1,3、阿姆斯特朗公理的推论,合并规则:若XY且XZ,则XYZ 分解规则:若XY,且ZY,则XZ 伪传递规则:若XY且WYZ,则WXZ,证:,XY,WXZ,WXWY,WYZ,作用:将一个FD分解成若干个右边是单属性的FD。用于确定关系的主键。,4、定理5.2,如果Ai(i=1,n)是关系模式R的属性,则XA1A2An成立的充分必要条件是XAi(i=1,n)
3、均成立。,二、X关于F的闭包及其计算,例:已知关系模式R(A,B,C),其函数依赖集为F=AB,BC,求函数依赖集F的闭包F+。,1、X关于F的闭包,设有关系模式R(U,F)和属性集U=A1,A2,An的子集X。则称所有用阿姆斯特朗公理从F推导出的函数依赖XAi的属性Ai组成的集合称为X关于F的闭包,记为XF+,通常简记为X+。即 XF+=Ai|用公理从F推出的XAi,集合元素,设有关系模式R(U,F),U=A1,A2,An是R的属性集,F是R的属性集U上的函数依赖集,X、Y是U的子集,则 XY能用Armstrong公理从F导出YX。,该定理把判定XY是否能由F根据Armstrong公理导出的
4、问题求出X,判定Y是否为X的子集的问题。,2、定理5.3,算法5.1 求属性集X关于函数依赖集F的闭包X输入:关系模式R的全部属性集U,U上的函数依赖集F,U的子集X。输出:X关于F的闭包X。计算方法:,3、X关于F的闭包X的计算,(1)X(0)=X。(2)从F中找出满足条件VX(i)的所有函数依赖VW,并把所有的VW中的属性W组成的集合记为Z;也即从F中找出那些其决定因素是X(i)的子集的函数依赖,并把由所有这样的依赖的被决定因素组成的集合记为Z。(3)若ZX(i),则转(5)。(4)否则,X(i+1)=X(i)Z,并转(2)。(5)停止计算,输出X(i),即为X+。,3、X关于F的闭包X的
5、计算(续),例5.4 已知R(U),U=A,B,C,D,E,G,R上的FD集 F=ABC,CA,BCD,ACDB,DEG,BEC,CGBD,CEAG,X=BD,求X,BDA是否成立?(1)X(0)=BD。(2)X(1)=BDEG(3)X(2)=BCDEG(4)X(3)=ABCDEG,X=ABCDEG,ABD,故BDA成立,4、举例,一个函数依赖集F的闭包F通常包含很多函数依赖,有些函数依赖是无意义的,如平凡的函数依赖,还有一些是可以推导出的,即无关的函数依赖。如果将每一个函数依赖看作是对关系的一个约束,要检查F中的每一个函数依赖对应的约束,显然是一件很繁重的任务。如果能找出一个与F等价的、包含
6、较少数目函数依赖的函数依赖集G,则可以简化此工作。最小函数依赖集的概念由此而提出。,三、最小函数依赖集,定义5.5 设F和G是两个函数依赖集,如果FG,则称F和G等价。如果F和G等价,则称F覆盖G,同时也称G覆盖F。,1、函数依赖集的等价与覆盖,定理5.7 FG的充要条件是FG和GF。,F=G,F,G,FG,定理,GF,XY能否由G根据公理导出?,Y XG+?,作用:任一函数依赖集都可转化成由右端只有单一属性的依赖组成的集合。该结论是最小函数依赖集的基础。,推论,每一个函数依赖集F都被其右端只有一个属性的函数依赖组成的依赖集G所覆盖。,满足下列条件的函数依赖集F称为最小函数依赖集。F中每一个F
7、D的右端都是单个属性;对F中任何FD:XA,F-XA不等价于F;对F中的任何FD:XA和X的任何真子集Z,(F-XA)ZA不等价于F。,2、最小函数依赖集,F没有多余的FD,每个FD左端无多余的属性,求解方法,(1)用分解规则将F中的所有函数依赖分解成右端为单个属性的函数依赖;,Armstrong公理的推论分解规则:若XY,且ZY,则XZ,求解方法(续一),(2)去掉F中冗余的函数依赖 对于F中任一FD:XY G=F-XY;求X关于G的闭包XG+;看XG+是否包含Y。如果XG+包含Y,则在G中逻辑蕴涵XY,说明XY是多余的函数依赖,所以F=G;如果X+不包含Y,则保留XY。,求解方法(续二),
8、(3)去掉左端多余的属性 对于F中左端是非单属性的函数依赖(XYA),假设要判断Y是否是多余的属性 G=(F-XYA)XA;求X关于F的闭包XF+;如果A不属于XF+,则XA不在F+中,说明Y不是多余的属性,接着判别X是否是多余的属性;如果A属于XF+,则说明Y是多余的属性,F=G。,ABC,CA,BCD,ACDB,DEG,BEC,CGBD,CEAG,F=,ABC,CA,BCD,ACDB,DE,DG,BEC,CGB,CGD,CEA,CEG,F1=,例5.5:求函数依赖集F的最小函数依赖集法1:,3、举例,F21=,ABC,CA,BCD,ACDB,DE,DG,BEC,CGB,CGD,CEA,CE
9、G,F1=,ABC,CA,BCD,ACDB,DE,DG,BEC,CGD,CEA,CEG,3、举例(续一),例5.5:求函数依赖集F的最小函数依赖集,F22=,ABC,CA,BCD,ACDB,DE,DG,BEC,CGD,CEA,CEG,F21=,ABC,CA,BCD,ACDB,DE,DG,BEC,CGD,CEG,3、举例(续二),例5.5:求函数依赖集F的最小函数依赖集,ABC,CA,BCD,ACDB,DE,DG,BEC,CGD,CEG,F22=,F3=,ABC,CA,BCD,CDB,DE,DG,BEC,CGD,CEG,3、举例(续三),例5.5:求函数依赖集F的最小函数依赖集,F21=,ABC
10、,CA,BCD,DE,DG,BEC,CGB,CEG,ABC,CA,BCD,ACDB,DE,DG,BEC,CGBCGD,CEA,CEG,F1=,3、举例(续四),例5.5:求函数依赖集F的最小函数依赖集法2:,四、候选键的求解方法,1、属性分类 对于给定的关系R(U)和函数依赖集F,可将其属性分为4类:L类:仅出现在F的函数依赖左部的属性;R类:仅出现在F的函数依赖右部的属性;N类:在F的FD左右两边均未出现的属性;LR类:在F的FD左右两边均出现的属性。,四、候选键的求解方法,2、快速求解候选键的一个充分条件(1)若X是L类属性,则X必为R的某一候选键的成员;(2)若X是L类属性,且X包含了R
11、的全部属性,则X必为R的唯一候选键;(3)若X是R类属性,则X不是任一候选键的成员;(4)若X是N类属性,则X必包含在R的某一候选键中;(5)若X是R的N类属性和L类属性组成的属性集,且X包含了R的全部属性,则X是R的唯一候选键。,四、候选键的求解方法,3、候选键的一般求解方法 将所有属性分为L、R、N和LR四类,并令X代表L和N类,Y代表LR类;求XF+:若XF+包含了R的全部属性,则X是R的唯一候选键,转;在Y中取一属性A,并求(XA)F+:若(XA)F+包含了R的全部属性,则XA为的一个候选键;重复,直到Y中的属性依次取完为止;从Y中除去所有已成为主属性的属性A;,四、候选键的求解方法,
12、3、候选键的一般求解法 在剩余的属性中依次取两个属性、三个属性,将其记为集合B,并求(XB)F+:若(XB)F+包含了R的全部属性,且自身不包含已求出的候选键,则XB为R的一个候选键;重复,直到Y中的属性按的组合依次取完为止;输出候选键,算法结束。,R的候选键:A、E、BC和CD,四、候选键的求解方法,3、候选键的一般求解法例:设有关系模式R(A,B,C,D,E),R的函数依赖集FABC,CDE,BD,EA,求R的所有候选键。,均为LR类,令Y=ABCDE。,A+=ABCDE E+=ABCDE,BC+=ABCDE CD+=ABCDE,XY是否能从F导出,Armstrong公理及推论,小结,求X+,求最小FD集,无多余FD,FD左边无多余属性,F+=G+,候选键,L类、N类、LR类,