函数依赖的逻辑蕴涵、FD的闭包F+:
设F是关系模式R的一个函数依赖集,X,Y是R的属性子集,如果从F中的函数依赖能够推出X—>Y,则称F逻辑蕴涵X—>Y,记为F X→Y。
被F逻辑蕴涵的函数依赖的全体构成的集合,称为F的闭包,记为F+。F+={X→Y|F X→Y}
其他例题:
3 已知关系模式R,其中
U={A,B,C,D,E},F={AB->C,B->D,C->E,EC->B,AC->B}。求(AB)F+。
[解] 设X(0)=AB,
(1) F中左部为AB子集的函数依赖有:AB->C,B->D,
所以X(1)=AB∪CD=ABCD。
(2) X(0)≠ X(1),F中左部为ABCD子集的新的函数依赖有:C->E,AC->B,
所以X(2)=X(1)∪BE=ABCDE。
(3) X(2)=U,算法终止
所以(AB)F+=ABCDE。
4.已知关系模式R,其中:U={A,B, C, D, E, G},F={AB→C, C→A, BC→D, ACD→B, D→EG, BE→C, CG→BD, CE→AG}。计算(CD)F+。
解:令X(0)=CD
(1)找左部为C, D或CD的函数依赖,得:
C→A, D→EG
∴ X(1)=CD∪AEG=ACDEG
(2)X(0)≠X(1)
再找出左部为ACDEG子集的那些函数依赖,又得:
ACD→B, CG→BD, CE→AG
∴ X(2)= X(1)∪ADG=ABCDEG
∵ X(2)已等于全部的属性集合
∴ (CD)F+ =ABCDEG
5.已知关系模式R,其中U={A,B,C,D,E },F = { AB→C, B→D, C→E, EC→B, AC→B },求(AB)F+ 。(要求写出求解步骤)
解:设X(0)=AB;
(1) 找左部为A,B或AB的函数依赖。得到两个:
AB→C,B→D。于是X(1)= AB∪CD = ABCD。
(2)因为X(0)≠ X(1) ,所以再找出左部为ABCD子集的那些函数依赖,又得到:
AB→C,B→D, C→E,AC→B,于是X(2)=X(1)∪BCDE = ABCDE。
(3)因为X(2)= U,
所以(AB)F+ = ABCDE。