作者:微笑5885 | 来源:互联网 | 2022-12-27 10:41
根据函数依赖集,怎样来对关系进行无损联接分解,请以2002年第38题为例!
8 个解决方案
使用一种算法,比较的麻烦,
先建立原始造型表,
然后对原始造型表结合函数依赖式进行计算,
具体过程可看关系数据库参考书,
我在《关系数据库理论》马垣著 看过,可以从超星里头找到这本书
无损联接的测试
[算法4.2]
输入:关系模式R=A1A2…An,R上成立的FD集F,及R的一个分解ρ={Ri}(i=1,2, …,k)。
输出:判断ρ相对于F是否具有无损联接特性。
方法:
第一步:构造一张k行n列的表格,每列对应一个属性Ai(1 j n),
每行对应一个分解后的关系模式Ri(1 i k)。如果Aj
在Ri中,则在表格的第i行第j列上填写上aj,否则填上
bij。
第二步:反复检查F的每一个FD,并修改表格中的元素,其方法如下:(Chase过程)
取F的一个FD X Y,如果表中有两行在X分量上相等,在Y分量上不等,则修改Y,使在这两行上的分量相等。如果Y的分量上有一个是aj,则另一个也修改为aj,如果没有aj,则用其中的某一个bij替代另一个符号(尽量将ij改成较小的数),一直到表格不能再修改为止。
第三步:判断若修改到最后表格中有一行是全a,即a1a2…an,则可以下结论ρ相对于F是无损联接。
定理4。8、如果R的分解ρ={R1,R2},F为R所满足的FD集,分解ρ具有无损联接的充分必要条件是:
R1 R2 (R1-R2)或者
R1 R2 (R2-R1)
其中R1 R2表示模式的交,为两模式的公共属性组成,(R1-R2)与(R2-R1)表示两模式的差集。它表示当一个关系模式分解成两个关系模式时,如果两关系模式的公共属性能够函数决定它们中的其它属性时,这样的分解具有无损联接性。
那这样做题时是不是每个答案A\B\C\D我们都要去用这样的方法画一下表格然后看哪个表格到最后形成了一行全是a?
这样岂不是太麻烦太费时间了?