很多资料讲解比较抽象下文相对比较通俗易懂,个人理解如有错误欢迎指正
当分解ρ只有两组的时候
这种情况相对较好判断,有现有公式: R1∩R2→R1-R2或R1∩R2→R2-R1 这两个条件满足任何一个都是无损连接都不满足即为有损连接 例如:
- 设有关系模式R(U,V,W,X,Y,Z),其函数依赖集:F={U→V,W→z,Y→U,WY→X},现有下列分解:ρ={UVY,WXYZ} (摘自软考题)
- R(UVY) ∩ R(WXYZ) 得出Y R1-R2 得出UV R2-R1 得出WXZ 此处注意Ri-Rj 以前一个Ri为基准有相同项去除保留不同项
- 现在只要证明 Y → UV 或 Y → WXZ 是否至少有一个成立
- 根据F={U→V,W→z,Y→U,WY→X} 因为 Y→U U→V 即 Y → UV 成立
- Y → WXZ 现有条件无法推出 但Y → UV 成立 即可判断为无损连接
当分解ρ大于两组的时候
此时相对复杂一点,需要列出初始判断表,根据已知条件在初始判断表里修改, 最终表里如果有一行全部为a的即为无损连接。具体规则如下
-
U=(A,B,C,D,E) F={A→D,E→D,D→B,BC→D,DC→A} 判断ρ={AB,AE,CE,BCD,AC}是否为无损连接分解。(摘自教材例题)
初始表(左侧第一列为ρ 第一行为U) 规则为:左侧的ρ包含U即为ai不包含则为bji i为第几列 j为第几行
ρ/U | A | B | C | D | E |
---|---|---|---|---|---|
AB | a1 | a2 | b13 | b14 | b15 |
AE | a1 | b22 | b23 | b24 | a5 |
CE | b31 | b32 | a3 | b34 | a5 |
BCD | b41 | a2 | a3 | a4 | b45 |
AC | a1 | b52 | a3 | b54 | b55 |
有了初始表现在根据F条件修改表
第一步 A→D 规则为:找出A列存在的相同项(初始表A列相同项为a1) 修改对应的D列不为ai的值,改为以第一行为基准,如果第一行为bij时需要添加特殊标记(有特殊标记*的再次更改时所有*bij也需要修改)[***此处相关材料存在错误,多谢评论区指出]
ρ/U | A | B | C | D | E |
---|---|---|---|---|---|
AB | a1 | a2 | b13 | b14 | b15 |
AE | a1 | b22 | b23 | *b14 | a5 |
CE | b31 | b32 | a3 | b34 | a5 |
BCD | b41 | a2 | a3 | a4 | b45 |
AC | a1 | b52 | a3 | *b14 | b55 |
第二步 E→D 规则如第一步: 相同项a5 D列对应第一行为b14
ρ/U | A | B | C | D | E |
---|---|---|---|---|---|
AB | a1 | a2 | b13 | b14 | b15 |
AE | a1 | b22 | b23 | *b14 | a5 |
CE | b31 | b32 | a3 | *b14 | a5 |
BCD | b41 | a2 | a3 | a4 | b45 |
AC | a1 | b52 | a3 | *b14 | b55 |
第三步 D→B 规则如第一步: 相同项b14 B列对应第一行为a2
ρ/U | A | B | C | D | E |
---|---|---|---|---|---|
AB | a1 | a2 | b13 | b14 | b15 |
AE | a1 | a2 | b23 | *b14 | a5 |
CE | b31 | a2 | a3 | *b14 | a5 |
BCD | b41 | a2 | a3 | a4 | b45 |
AC | a1 | a2 | a3 | *b14 | b55 |
第四步 BC→D 规则: 需要满足BC列相同(相同项为a2 a3) D列改为BC列(BC列为a)[***因为此时修改到标记过得*b14那么所有*b14都需要修改]
ρ/U | A | B | C | D | E |
---|---|---|---|---|---|
AB | a1 | a2 | b13 | b14 | b15 |
AE | a1 | a2 | b23 | a4 | a5 |
CE | b31 | a2 | a3 | a4 | a5 |
BCD | b41 | a2 | a3 | a4 | b45 |
AC | a1 | a2 | a3 | a4 | b55 |
第五步 DC→A 规则如第四步 满足DC列相同(相同项为a3 a4) A列改为DC列 a1
ρ/U | A | B | C | D | E |
---|---|---|---|---|---|
AB | a1 | a2 | b13 | b14 | b15 |
AE | a1 | a2 | b23 | a4 | a5 |
CE | a1 | a2 | a3 | a4 | a5 |
BCD | a1 | a2 | a3 | a4 | b45 |
AC | a1 | a2 | a3 | a4 | b55 |
最后判断最终表只要存在一行全为a则为无损连接 没有即为有损连接
ρ/U | A | B | C | D | E |
---|---|---|---|---|---|
AB | a1 | a2 | b13 | b14 | b15 |
AE | a1 | a2 | b23 | a4 | a5 |
CE | a1 | a2 | a3 | a4 | a5 |
BCD | a1 | a2 | a3 | a4 | b45 |
AC | a1 | a2 | a3 | b14 | b55 |
CE行都为a最后得出此题为无损连接