1、2019/4/28,南晓数信学院,1,第2讲 函数依赖的公理体系,授课人: 李朔 Email:,2019/4/28,南晓数信学院,2,主要内容,阿姆斯特朗公理及推论 X关于F的闭包及其计算 最小函数依赖集 候选键的求解方法,2019/4/28,南晓数信学院,3,一、阿姆斯特朗公理及推论,是一系列推理规则 最早出现在1974年W.W.Armstrong的论文里 他人于1977年提出改进形式,F=XY,侯选键,XY在R中是否成立,能从F导出的所有XY,推导工具?,问题引入:,2019/4/28,南晓数信学院,4,1、阿姆斯特朗公理,设有关系模式R(U,F),U=A1,A2,An是R的属性集,F是R
2、的属性集U上的FD集,X、Y、Z、W是U的子集。 阿姆斯特朗公理为:A1 自反律:若YX,则XYA2 增广律:若XY,则XZYZA3 传递律:若XY,YZ,则XZ,2019/4/28,南晓数信学院,5,Armstrong公理是正确的。方法:从函数依赖的定义出发A1 自反律:若YX,则XY (增广律,传递律证明类似,P104) 证:设u、v为r的任意两个元组。若uX=vX,则u和v在X的任何子集上必然相等。 由条件YX ,所以有:uY=vY,由u、v的任意性,并根据函数依赖的定义,可得 XY。,2、定理5.1,2019/4/28,南晓数信学院,6,3、 阿姆斯特朗公理的推论,合并规则:若XY且X
3、Z,则XYZ (增广律)分解规则:若XY,且ZY,则XZ (自反律)伪传递规则:若XY且WYZ,则WXZ,证:,XY,WXZ,WXWY,WYZ,2019/4/28,南晓数信学院,7,例5.2简化版 P105 对关系模式R(A,B,C),依赖集F=C-A,AB-C,候选键为AB和CB,证明BC-ABC. 证明:已知有C-A,由增广律可得BC-AB,又已知AB-C,由增广律可得AB-ABC综上由传递律可得 BC-ABC,2019/4/28,南晓数信学院,8,作用:将一个FD分解成若干个右边是单属性的FD。用于确定关系的主键。,4、定理5.2,如果Ai(i=1,n)是关系模式R的属性,则XA1A2A
4、n成立的充分必要条件是XAi(i=1,n)均成立。,2019/4/28,南晓数信学院,9,二、X关于F的闭包及其计算,例:已知关系模式R(A,B,C),其函数依赖集为F=AB,BC,求函数依赖集F的闭包F+。(P103),2019/4/28,南晓数信学院,10,1、X关于F的闭包,设有关系模式R(U,F)和属性集U=A1,A2,An的子集X。则称所有用阿姆斯特朗公理从F推导出的函数依赖XAi的属性Ai组成的集合称为X关于F的闭包,记为XF+,通常简记为X+。即XF+=Ai|用公理从F推出的XAi,集合元素,2019/4/28,南晓数信学院,11,设有关系模式R(U,F),U=A1,A2,An是
5、R的属性集,F是R的属性集U上的函数依赖集,X、Y是U的子集,则XY能用Armstrong公理从F导出YX。,该定理把判定XY是否能由F根据Armstrong公理导出的问题 求出X,判定Y是否为X的子集的问题。,2、定理5.3,2019/4/28,南晓数信学院,12,算法5.1 求属性集X关于函数依赖集F的闭包X 输入:关系模式R的全部属性集U,U上的函数依赖集F,U的子集X。 输出:X关于F的闭包X。 计算方法:,3、X关于F的闭包X的计算,2019/4/28,南晓数信学院,13,(1)X(0)=X。 (2)从F中找出满足条件VX(i)的所有函数依赖VW,并把所有的VW中的属性W组成的集合记
6、为Z;也即从F中找出那些其决定因素是X(i)的子集的函数依赖,并把由所有这样的依赖的被决定因素组成的集合记为Z。 (3)若ZX(i),则转(5)。(当X(i)只决定自己时) (4)否则,X(i+1)=X(i)Z,并转(2)。(传递律) (5)停止计算,输出X(i),即为X+。,3、X关于F的闭包X的计算(续),2019/4/28,南晓数信学院,14,例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。(B、D、B,D) (2)X(1)=BDEG(B、D、
7、E、G、B、D2n-1个子集) (3)X(2)=BCDEG (4)X(3)=ABCDEG,X=ABCDEG,ABD,故BDA成立,4、举例,2019/4/28,南晓数信学院,15,一个函数依赖集F的闭包F通常包含很多函数依赖,有些函数依赖是无意义的,如平凡的函数依赖,还有一些是可以推导出的,即无关的函数依赖。如果将每一个函数依赖看作是对关系的一个约束,要检查F中的每一个函数依赖对应的约束,显然是一件很繁重的任务。如果能找出一个与F等价的、包含较少数目函数依赖的函数依赖集G,则可以简化此工作。最小函数依赖集的概念由此而提出。,三、最小函数依赖集,2019/4/28,南晓数信学院,16,定义5.5
8、设F和G是两个函数依赖集,如果FG,则称F和G等价。如果F和G等价,则称F覆盖G,同时也称G覆盖F。,1、函数依赖集的等价与覆盖,2019/4/28,南晓数信学院,17,定理5.4 FG的充要条件是FG和GF。,F= G,F,G,FG,定理,GF,定理意义:P107 不计算F+与G+,对于F(或G)中每个X-Y,只通过求Xg+中是否包含Y来判断FG, XF+来判断GF,FG, F (G)+,2019/4/28,南晓数信学院,18,作用:任一函数依赖集都可转化成由右端只有单一属性的依赖组成的集合。该结论是最小函数依赖集的基础。,推论,每一个函数依赖集F都被其右端只有一个属性的函数依赖组成的依赖集
9、G所覆盖。,2019/4/28,南晓数信学院,19,满足下列条件的函数依赖集F称为最小函数依赖集。 F中每一个FD的右端都是单个属性; 对F中任何FD:XA,F-XA不等价于F; 对F中的任何FD:XA和X的任何真子集Z,(F-XA)ZA不等价于F。,2、最小函数依赖集,F没有多余的FD,每个FD左端无多余的属性,2019/4/28,南晓数信学院,20,求解方法,(1)用分解规则将F中的所有函数依赖分解成右端为单个属性的函数依赖;,Armstrong公理的推论 分解规则:若XY,且ZY,则XZ,2019/4/28,南晓数信学院,21,求解方法(续一),(2)去掉F中冗余的函数依赖 对于F中任一
10、FD:XY G = F-XY; 求X关于G的闭包XG+; 看XG+是否包含Y。如果XG+包含Y,则在G中逻辑蕴涵XY,说明XY是多余的函数依赖,所以F=G;如果X+不包含Y,则保留XY。,2019/4/28,南晓数信学院,22,求解方法(续二),(3)去掉左端多余的属性对于F中左端是非单属性的函数依赖(XYA),假设要判断Y是否是多余的属性 G = (F-XYA)XA; 求X关于F的闭包XF+; 如果A不属于XF+,则XA不在F+中,说明Y不是多余的属性,接着判别X是否是多余的属性;如果A属于XF+,则说明Y是多余的属性,F=G。,2019/4/28,南晓数信学院,23,ABC,CA,BCD,
11、 ACDB,DEG,BEC, CGBD,CEAG,F=,ABC,CA,BCD,ACDB, DE,DG,BEC,CGB , CGD,CEA,CEG, F1=,例5.5:求函数依赖集F的最小函数依赖集法1:(步骤一:分解规则 ),3、举例,2019/4/28,南晓数信学院,24, F21=,ABC,CA,BCD,ACDB, DE,DG,BEC,CGB , CGD,CEA,CEG,F1=,ABC,CA,BCD,ACDB, DE,DG,BEC,CGD,CEA,CEG,3、举例(续一),例5.5:求函数依赖集F的最小函数依赖集 (步骤二:去掉F中冗余的函数依赖 ),2019/4/28,南晓数信学院,25
12、, 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的最小函数依赖集,(步骤二:去掉F中冗余的函数依赖 ),2019/4/28,南晓数信学院,26,ABC,CA,BCD,ACDB,DE,DG,BEC,CGD,CEG, F22=, F3=,ABC,CA,BCD, CDB,DE,DG, BEC,CGD,CEG,3、举例(续三),例5.5:求函数依赖集F的最小函数依赖集,步骤三:去掉左端多余的属性,2019/4/28,南晓数信学院,27,
13、F21=,ABC,CA,BCD, DE,DG,BEC, CGB,CEG,ABC,CA,BCD,ACDB, DE,DG,BEC,CGB CGD,CEA,CEG, F1=,3、举例(续四),例5.5:求函数依赖集F的最小函数依赖集 法2:(步骤一:分解规则 ),步骤二:去掉F中冗余的函数依赖,步骤三:去掉左端多余的属性,2019/4/28,南晓数信学院,28,四、候选键的求解方法,1、属性分类对于给定的关系R(U)和函数依赖集F,可将其属性分为4类: L类:仅出现在F的函数依赖左部的属性; R类:仅出现在F的函数依赖右部的属性; N类:在F的FD左右两边均未出现的属性; LR类:在F的FD左右两边
14、均出现的属性。,2019/4/28,南晓数信学院,29,四、候选键的求解方法,2、快速求解候选键的一个充分条件 (1)若X是L类属性,则X必为R的某一候选键的成员; (2)若X是L类属性,且X包含了R的全部属性,则X必为R的唯一候选键; (3)若X是R类属性,则X不是任一候选键的成员; (4)若X是N类属性,则X必包含在R的某一候选键中; (5)若X是R的N类属性和L类属性组成的属性集,且X包含了R的全部属性,则X是R的唯一候选键。,2019/4/28,南晓数信学院,30,四、候选键的求解方法,3、候选键的一般求解方法 将所有属性分为L、R、N和LR四类,并令X代表L和N类,Y代表LR类; 求
15、XF+:若XF+包含了R的全部属性,则X是R的唯一候选键,转; 在Y中取一属性A,并求(XA)F+ :若(XA)F+包含了R的全部属性,则XA为的一个候选键; 重复,直到Y中的属性依次取完为止; 从Y中除去所有已成为主属性的属性A;,2019/4/28,南晓数信学院,31,四、候选键的求解方法,3、候选键的一般求解法 在剩余的属性中依次取两个属性、三个属性,将其记为集合B,并求(XB)F+ :若(XB)F+包含了R的全部属性,且自身不包含已求出的候选键,则XB为R的一个候选键; 重复,直到Y中的属性按的组合依次取完为止; 输出候选键,算法结束。,2019/4/28,南晓数信学院,32,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,2019/4/28,南晓数信学院,33,XY是否能从F导出,Armstrong公理 及推论,小结,求X+,求最小FD集,无多余FD,FD左边 无多余属性,F+=G+,候选键,L类、N类、LR类,2019/4/28,南晓数信学院,34,谢谢,追求,休息一下!,