数据库规范化:模式分解是否具有无损连接
什么是模式分解?
无损连接分解的测试算法
例子
1
举例1:已知R<U,F>,U={A,B,C},F={A→B},如下的两个分解:
① ρ1={AB,BC}
② ρ2={AB,AC}
判断这两个分解是否具有无损连接性。
①因为AB∩BC=B,AB-BC=A,BC-AB=C
所以B→A ¢F+,B→C ¢ F+
故ρ1是有损连接。
② 因为AB∩AC=A,AB-AC=B,AC-AB=C
所以A→B €F+,A→C ¢F+
故ρ2是无损连接。
2
已知R<U,F>,U={A,B,C,D,E},F={A→C,B→C,C→D,DE→C,CE→A},R的一个分解为R1(AD),R2(AB),R3(BE),R4(CDE),R5(AE),判断这个分解是否具有无损连接性。
① 构造一个初始的二维表,若“属性”属于“模式”中的属性,则填aj,否则填bij
② 根据A→C,对上表进行处理,由于属性列A上第1、2、5行相同均为a1,所以将属性列C上的b13、b23、b53改为同一个符号b13(取行号最小值)。
③ 根据B→C,对上表进行处理,由于属性列B上第2、3行相同均为a2,所以将属性列C上的b13、b33改为同一个符号b13(取行号最小值)。
④ 根据C→D,对上表进行处理,由于属性列C上第1、2、3、5行相同均为b13,所以将属性列D上的值均改为同一个符号a4。
⑤ 根据DE→C,对上表进行处理,由于属性列DE上第3、4、5行相同均为a4a5,所以将属性列C上的值均改为同一个符号a3。
⑥ 根据CE→A,对上表进行处理,由于属性列CE上第3、4、5行相同均为a3a5,所以将属性列A上的值均改为同一个符号a1。
⑦ 通过上述的修改,使第三行成为a1a2a3a4a5,则算法终止。且分解具有无损连接性。