这个问题很难一言以蔽之,我给你举一个我常用的例子,希望对你有帮助: 设关系模式R(U,F)中,U={A,B,C,D,E},F={AB→C,C→D,D→E},R的一个分解ρ={ R1(A,B,C),R2(C,D),R3(D,E)}。试判断ρ具有无损连接性。
解:① 首先构造初始表,如图(a)所示。 A B C D E
R1(A,B,C) a1 a2 a3 b14 b15
R2(C,D) b21 b22 a3 a4 b25
R3(D,E) b31 b32 b33 a4 a5 (a) A B C D E
R1(A,B,C) a1 a2 a3 a4 a5
R2(C,D) b21 b22 a3 a4 b25
R3(D,E) b31 b32 b33 a4 a5 (b)
图:分解的无损连接判断表
② 按下列次序反复检查函数依赖和修改M:
AB→C,属性A、B(第1、2列)中都没有相同的分量值,故M值不变;
C→D,属性C中有相同值,故应改变D属性中的M值,b14改为a4;
D→E,属性D中有相同值,b15、b25均改为a5。
结果如图(b)所示。
③ 此时第一行已为a1,a2,a3,a4,a5,所以ρ具有无损连接性。
说明:在上例步骤后,如果没有出现a1,a2,a3,a4,a5,并不能马上判断ρ不具有无损连接性。而应该进行第二次的函数依赖检查和修改M。直至M值不能改变,才能判断ρ是否具有无损连接性。
解:① 首先构造初始表,如图(a)所示。 A B C D E
R1(A,B,C) a1 a2 a3 b14 b15
R2(C,D) b21 b22 a3 a4 b25
R3(D,E) b31 b32 b33 a4 a5 (a) A B C D E
R1(A,B,C) a1 a2 a3 a4 a5
R2(C,D) b21 b22 a3 a4 b25
R3(D,E) b31 b32 b33 a4 a5 (b)
图:分解的无损连接判断表
② 按下列次序反复检查函数依赖和修改M:
AB→C,属性A、B(第1、2列)中都没有相同的分量值,故M值不变;
C→D,属性C中有相同值,故应改变D属性中的M值,b14改为a4;
D→E,属性D中有相同值,b15、b25均改为a5。
结果如图(b)所示。
③ 此时第一行已为a1,a2,a3,a4,a5,所以ρ具有无损连接性。
说明:在上例步骤后,如果没有出现a1,a2,a3,a4,a5,并不能马上判断ρ不具有无损连接性。而应该进行第二次的函数依赖检查和修改M。直至M值不能改变,才能判断ρ是否具有无损连接性。
A B C D E
R1(A,B,C) a1 a2 a3 b14 b15
R2(C,D) b21 b22 a3 a4 b25
R3(D,E) b31 b32 b33 a4 a5 (a) A B C D E
R1(A,B,C) a1 a2 a3 a4 a5
R2(C,D) b21 b22 a3 a4 b25
R3(D,E) b31 b32 b33 a4 a5 (b)
图:分解的无损连接判断表
这里的X和Y就是函数依赖FD中的属性
其实这个算法,就是求原来关系在分解后的关系上的投影