判断是否为无损连接分解

这个就考前看了一本课外的辅导教材,现学了一下方法,不知道能不能回忆起来。

题目:U=(A,B,C,D,E)    F={A->D,E->D,D->B,BC->D,DC->A}

判断ρ={AB,AE,CE,BCD,AC}是否为无损连接分解。

解:

先求出候选键为CE。

然后画一个初始判定表如下图所示。

 ABCDE
ABa1a2b13b14b15
AEa1b22b23b24a5
CEb31b32a3b34a5
BCDb41a2a3a4b45
ACa1b52a3b54b55

解释一下这张初始判定表的含义:

直接看ρ,比如第一个是AB,那么就在A列写a1,在B列写a2,其余都写b1j。

然后开始计算。这时候要看F中的函数依赖。

比如,第一个是A->D,看A列有没有ai,看到有a1,再看D列中对应的,如果不相同,也有aj的话,就把其他换成aj,如果没有,就以第一个ai对应的bij为基准,其他都换成bij。

所以判定表应换成:

 ABCDE
ABa1a2b13b14b15
AEa1b22b23b14a5
CEb31b32a3b34a5
BCDb41a2a3a4b45
ACa1b52a3b14b55

接下来看E->D:

以前面修改后的表为基准。

 ABCDE
ABa1a2b13b14b15
AEa1b22b23b14a5
CEb31b32a3b14a5
BCDb41a2a3a4b45
ACa1b52a3b14b55

D->B:

这里看D列,因为b14对应B列有a2,所以就不以D列中a4为基准,而是以b14为基准,改B列对应位置为a2。

 ABCDE
ABa1a2b13b14b15
AEa1a2b23b14a5
CEb31a2a3b14a5
BCDb41a2a3a4b45
ACa1a2a3b14b55

BC->D:

当左边出现两个元素时,看B列和C列相同的行,发现是a2、a3,然后修改D列对应位置为a4。

 ABCDE
ABa1a2b13b14b15
AEa1a2b23b14a5
CEb31a2a3a4a5
BCDb41a2a3a4b45
ACa1a2a3a4b55

DC->A:

D列和C列有相同的行,是a3、a4,然后修改A列对应位置为a1。

 ABCDE
ABa1a2b13b14b15
AEa1a2b23b14a5
CEa1a2a3a4a5
BCDa1a2a3a4b45
ACa1a2a3a4b55

最终表:

 ABCDE
ABa1a2b13b14b15
AEa1a2b23b14a5
CEa1a2a3a4a5
BCDa1a2a3a4b45
ACa1a2a3a4b55

再看表中全部为a的行,发现是第三行,所以ρ为无损连接分解。

教材上的例题图片:




版权声明:本文为博主原创文章,未经博主允许不得转载。

©️2020 CSDN 皮肤主题: 像素格子 设计师:CSDN官方博客 返回首页