很多资料讲解比较抽象下文相对比较通俗易懂,个人理解如有错误欢迎指正

当分解ρ只有两组的时候

这种情况相对较好判断,有现有公式: 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} (摘自软考题)
  1. R(UVY) ∩ R(WXYZ) 得出Y   R1-R2 得出UV   R2-R1 得出WXZ   此处注意Ri-Rj 以前一个Ri为基准有相同项去除保留不同项
  2. 现在只要证明 → UV  或 → WXZ 是否至少有一个成立
  3. 根据F={U→V,W→z,Y→U,WY→X}  因为 Y→U  U→V   Y → UV 成立
  4. → WXZ 现有条件无法推出   但Y → UV 成立  即可判断为无损连接

当分解ρ大于两组的时候

此时相对复杂一点,需要列出初始判断表,根据已知条件在初始判断表里修改, 最终表里如果有一行全部为a的即为无损连接。具体规则如下

  • U=(A,B,C,D,E)    F={AD,ED,DB,BCD,DCA} 判断ρ={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规则为:找出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规则如第一步: 相同项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规则如第一步: 相同项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规则: 需要满足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规则如第四步 满足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最后得出此题为无损连接

 

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐