1.函数依赖的闭包
定义:在关系模式R(U,F)中,U是R的属性全集,F是R上的一组函数依赖。
被F逻辑蕴涵的函数依赖的全集称为F的闭包,记作
eg:设有关系模式R(A,B,C,,G,H,I)及其函数依赖集F={AB,AC,CGH,CGI,BH}
判断AH,CGHI,AGI是否属于。
解:根据Armstrong公理系统:
(1)AH。有AB和BH,根据传递性,可推出AH 。
(2)CGHI。有CGH和CGI,根据合并规则,可推出CGHI。
(3)AGI。有AC和CGI根据伪传递规则,可推出AGI。
因此,AH,CGHI,AGI属于。
2.属性集闭包
定义:设关系模式R(U,F),U为R的属性集,F是R上的函数依赖集,X是U的一个子集(XU)。
用函数依赖推理规则可从F推出的函数依赖XA中所有A的集合,称为属性集X关于F的闭包,记为(或)
eg:有不安息模式R(U,F),其中U={A,B,C,D,E},F={(A,B)C,BD,CE,(C,E)B,(A,C)B},计算。
解:步骤1:初始:=AB。
步骤2:
(1)对中的A,B,因为有(A,B)C,所以=C=ABC。
(2)对中的B,因为有BD,所以=D=ABCD。
(3)对中的C,因为有CE,所以=E=ABCDE。
因此,计算完毕。
3.候选键的求解方法
对于给定的关系模式R(,.....)和函数依赖集F,现将R的属性集分为如下四类
(1)L类:仅出现在函数依赖左部的属性。
(2)R类:仅出现在函数依赖右部的属性。
(3)N类:在函数依赖的左部和右部均不出现的属性。
(4)LR类:在函数依赖的左部和右部均出现的属性。
对R中的属性X,有一下结论:
(1)若X是L类属性,则X一定包含在关系模式R的任何一个候选键中;若包含R的全部属性,则X为关系模式R的唯一候选键。
(2)若X是R类属性,则X不包含在关系模式R的任何一个候选键中。
(3)若X是N类属性,则X一定包含在关系模式R的任何一个候选键中。
(4)若X是LR类属性,则X可能包含在关系模式R的一个候选键中。
eg:设有关系模式R(U,F),其中U={A,B,C,D},F={DB,BD,ADB,ACD},
求R的所有候选键。
解:观察F中的函数依赖,发现A,C两个属性是L类属性,因此A,C两个属性必定在R的任何一个候选键中;又由于=ABCD,其包含了R的全部属性,因此,AC是R的唯一候选键。