1.函数依赖集的闭包

在关系模式R(U,F)中U是R的属性全集,F是R上的一组函数依赖。设X,Y是U的子集,对于关系模式R的任一关系R,如果满足F,则r满足X箭头Y,那么称F逻辑蕴涵X箭头Y,或称函数依赖X箭头Y可由F导出。所有被F逻辑蕴涵的函数依赖的全集称为F的闭包,记作F+。

应用Armstrong公理系统系统计算F+过程

步骤1:初始,F+=F。

步骤2:对F+中的每个函数依赖f,在f上应用自反性和增广性,将结果加入F+中;对F+中的一对函数依赖f1和f2,如果f1和f2可以使用传递律结合起来,则将结果加入F+中

步骤3:重复步骤2,直到F+不再增大为止。

2.属性集闭包

步骤1:初始,X+=X

步骤2:如果F中有某个函数依赖Y箭头Z满足Y包含于X+。则X+=X+ U z.

步骤3:重复步骤2,直到X+不再增大为止

例如:设有关系模式R(U,F),其中属性集U={X,Y,Z,W},函数依赖集F={X箭头Y哦,Y箭头Z,W箭头Y}计算X+,(XW)+.

解:(1)计算X+

步骤1:初始X+=X。

步骤2:(1)对X+中的X因为有X箭头Y,所以X+=X+ U Y=XY

(2)对X+中的Y,因为有Y箭头Z,所以X+=X+ U Z=XYZ

2.计算(XW)+

步骤1:初始:(XW)+=XW

步骤2:(1)对(XW)中的X,因为有X箭头Y,所以(XW)+=XW+ U Y=XWY

(2)对(XW)中的Y,因为有Y箭头Z,所以(XW)+=XW+ U Z=XWYZ

(3)对(XW)+中的W,有W箭头Y,但Y已在(XW)+中因此(XW)+保持不变

(4)对(XW)+中的Z,由于Z不出现在任何函数依赖的左部,因此(XW)+ 保持不变

最终(XW)+=XWYZ

3.候选键的求解方法

(1)L类:仅出现在函数依赖左部的属性

(2)R类:仅出现在函数依赖右部的属性

(3)N类在函数依赖的左部和右部均不出现的属性

(4)LR类:在函数依赖的左部和右部均出现的属性

对R中的属性X,可以有如下结论

1.若 X是L类属性,则X一定包含在关系模式R的任何一个候选键中;若X+包含了R的全部属性,则X为关系模式R的唯一候选键

2.若X是R类属性,则X不包含在关系模式R的任何一个候选键中

3.若X是N类属性,则X一定不包含在关系模式R的任何一个候选键中。

4.若X是LR类属性,则X可能包含在关系模式R的某个候选键中

求候选键时只求得1个候选键时就要考虑LR类属性,与L或N类一一组合求得