设关系模式R为R(H,I,J,K,L),R上的一个函数依赖集为F={H→J,J→K, I→j,JL→H},分解(23)是无损联接的。

admin2010-05-22  33

问题 设关系模式R为R(H,I,J,K,L),R上的一个函数依赖集为F={H→J,J→K, I→j,JL→H},分解(23)是无损联接的。

选项 A、p={HK,HI,IJ,JKL,HL}
B、P={HIL,IKL,IJL}
C、P={HJ,IK,HL}
D、P={HI,JK,HL}

答案B

解析 在本题中,因为关系模式分解为3个以上的子模式,所以不能使用(2)题介绍的判定定理,下面,我们介绍另外一种比较通用的判定方法。
   设关系模式R=A1,…,An,R上成立的FD集为F,R的一个分解p={R1,…,Rk)。
   无损联接分解的判断方法如下:
   (1) 构造一张k行n列的表格,每列对应一个属性Aj(1≤j≤n),每行对应一个模式 Ri(1≤i≤k)。如果Aj在Ri中,那么在表格的第i行第j列处填上符号aj,否则填上符号bij
   (2) 把表格看成模式R的一个关系,反复检查F中每个FD在表格中是否成立,若不成立,则修改表格中的元素。修改方法如下:对于F中一个FD X→Y,如果表格中有两行在X分量上相等,在Y分量上不相等,那么把这两行在Y分量上改成相等。如果Y的分量中有一个是aj,那么另一个也改成aj;如果没有aj,那么用其中的一个 bij替换另一个(尽量把ij改成较小的数),一直到表格不能修改为止。
   (3) 若修改的最后一张表格中有一行全是a,即(a1,a2,…,an,那么p相对于F是无损联接分解,否则是损失联接分解。
   根据上述判断方法,我们列出选项B的初始表如表18-2所示。
   
此表的填法就是:有字段处用aj表示,没有字段处用bij表示。例如,因为子模式HIL有字段H,I,L,所以对应的列用ai表示,其他列则用bij表示。 接下来比较函数依赖。因为函数依赖集中有函数依赖关系H→J,但表18-2中H列没有相同的值,所以不要修改。再看函数依赖J→K,表18-2中J列也没有相同的值,所以也不要修改。接着看函数依赖I→J,表18-2中第2列的值都为a2,而第3列的值不一样且有一个为a3,所以可以把b13和b23改为a3。后面的修改用同样的规则,表18-2变换为表18-3。

在此基础上,对于函数依赖集中的JL→H在属性列J和L上对应的1,2,3行上为a3,a5元素,所以,将属性列H的第二行b21和第三行b31改为a1。修改后如表18-4所示。

从表18-4可以看出,第二行为a1,a2,a3,a4,a5,所以p是无损联接。
转载请注明原文地址:https://jikaoti.com/ti/YXx7FFFM
0

最新回复(0)