9.2.4 闭包及候选键求解方法
1.函数依赖集的闭包
F:FD的集合称为函数依赖集。
F闭包:由F中的所有FD可以推导出所有FD的集合,记为F+。
例1,对于关系模式R(ABC),F={A→B,B→C},求F+。
根据FD的定义,可推出F+={φ→φ,A→φ,A→A,A→B,A→C,A→AB,A→BC,A→ABC,…},共有43个FD。其中,φ表示空属性集。
例2,设有关系模式R(A,B,C,G,H,I)及其函数依赖集F={A→B,A→C,CG→H,CG→I,B→H}。判断A→H、CG→HI和AG→I是否属于F+。
解:根据 Armstrong公理系统:
(1)A→H。由于有A→B和B→H,根据传递性,可推出A→H。
(2)CG→HI。由于有CG→H和CG→I,根据合并规则,可推出CG→HI。
(3)AG→I。由于有A→C和CG→I,根据伪传递规则,可推出AG→I。
因此,A→H、CG→HI和AG→I均属于F+。
2.属性集闭包
属性集闭包定义 :设有关系模式R(U,F),U为R的属性集,F是R上的函数依赖集,X是U的一个子集(X⊆U)。用函数依赖推理规则可从F推出的函数依赖X→A中所有A的集合,称为属性集X关于F的闭包,记为X+(或XF+)。即:
X+ = {A | X→A 能够由F根据 Armstrong据公理导出}
对关系模式R(U,F),求属性集X相对于函数依赖集F的闭包X的算法如下:
步骤1:初始,X+ = X
步骤2:如果F中有某个函数依赖Y→Z满足Y⊆X+。则X+ = X+ ∪Z