例题讲解:
已知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);判定是否为无损分解。
(1)构造初始表
- 规则
- 分为几个关系就画几行,有几个属性就画几列。
- a代表能够确定(角标按列填写),b代表不能确定(角标按行和列填写)。(按行进行推导,不看依赖关系F)
A | B | C | D | E | |
ABC | a1 | a2 | a3 | b14 | b15 |
CD | b21 | b22 | a3 | a4 | b25 |
DE | b31 | b32 | b33 | a4 | a5 |
(2)判定表构造
- 查看依赖集F
- AB→C,查看第一列第二列各自有无相同分量(角标不同不算相同分量),无,所以第三列C不变。
- C→D,查看第三列有无相同分量(前两行a3),有,所以将对应的第四列的前两行改为能够确定即a4。
- D→E,查看第四列有无相同分量(前三行a4,注意第一行刚刚更改),有,将对应的E第五列的后两行改为a5。
A | B | C | D | E | |
ABC | a1 | a2 | a3 | a4 | a5 |
CD | b21 | b22 | a3 | a4 | a5 |
DE | b31 | b32 | b33 | a4 | a5 |
(3)观察判定表
- 是否有任意一行全部能够确认。
- 第一行全部为a,代表能够全部确认。
- 得出分解具有无损连接性。