摘要:表4选项B的中间表HIJKLHILa1a2a3b14a5IKLb21a2a3a4a5IJLb31a2a3b34a5对于函数依赖集中的JL→H在属性列J和L上对应的1、2、3行上为a3、a5元素,所以,将属性列H的第二行b21和第三行b31改为a1。修改后如表5所示:表5选项B的结果表HIJKLH
表4 选项B的中间表
H | I | J | K | L | |
HIL | a1 | a2 | a3 | b14 | a5 |
IKL | b21 | a2 | a3 | a4 | a5 |
IJL | b31 | a2 | a3 | b34 | a5 |
对于函数依赖集中的JL→H在属性列J和L上对应的1、2、3行上为a3、a5元素,所以,将属性列H的第二行b21和第三行b31改为a1。修改后如表5所示:
表5 选项B的结果表
H | I | J | K | L | |
HIL | a1 | a2 | a3 | b14 | a5 |
IKL | a1 | a2 | a3 | a4 | a5 |
IJL | a1 | a2 | a3 | b34 | a5 |
从表5可以看出,第二行为a1、a2、a3、a4、a5,所以分解p是无损的。
有一种特殊情况要注意:分解后的各个关系模式两两均无公共属性。由于是模式分解,那么任一一个分解后的关系模式覆盖的属性集不可能是分解前的整个全部属性U,因此初始表中不存在全是a的行。又注意到,分解后的各个关系模式两两均无公共属性,表明任两行在任一列上都没有相同的分量,这导致整个表格无法修改,保持初始状态。而初始状态不存在全是a的行,因此这种特殊情况的分解是有损的。
例如,函数依赖集合FD,将关系模式R(ABCDEF)分解成R1(AB)、R2(CDE)、R3(F),那么这种分解肯定是有损的。考试中可能碰到这种情况,那么一眼就可以判断出结果,从而节省了时间。
3. 无损连接分解的快捷判别方法
首先要申明,这种快捷方法是有前提的,前提就是分解后的关系模式只有两个。其内容为:
设ρ={R1,R2}是R的一个分解,F是R上的FD集,那么分解ρ相对于F是无损分解的充分必要条件是:(R1∩R2)→(R1–R2)或(R1∩R2)→(R2–R1)。这个“或”字很重要,这里表示(R1∩R2)→(R1–R2)、(R1∩R2)→(R2–R1)中只要有一个成立就行。这里的求交和相减运算的对象是关系模式的属性。
【例题】
关系模式R(U,F),其中U={W,X,Y,Z},F={WX→Y,W→X, X→Z,Y→W}。那么下列分解中是无损分解的是 。
供选择的答案:
A.p={R1(WY),R2(XZ)} B.p={R1(WZ),R2(XY)}
C.p={R1(WXY),R2(XZ)} D.p={R1(WX),R2(YZ)}
试题分析:
A选项,R1∩R2为空,肯定不满足条件。
B选项,R1∩R2为空,肯定不满足条件。
C选项,R1∩R2={X},R1-R2={WY},R2-R1={Z},根据函数依赖集,X→Z成立,所以满足条件。
D选项,R1∩R2为空,肯定不满足条件。
4. 总结
模式分解无损性判别的源泉仍然是普通的表格法。这种快捷方法只不过是根据这种表格法推断出来的而已,是它的一个特列。但是这种快捷方法却往往非常有用。
[1] [2]
软考备考资料免费领取
去领取