我们说我的关系如下:
R(A,B,C,D){A-> B,B-> C}
我可以在保留功能依赖性的同时,无损地将R分解为BCNF中的组件关系吗?
如果我将其更改为:
,该怎么办?R(A,B,C,D){A-> B,B-> C,BC-> D)?
我相信第一个不能分解成BCNF。我相信加入BC-> D,它可以被分解,但我不确定。任何人都可以帮我澄清一下吗?
答案 0 :(得分:0)
在这两种情况下,您都可以在BCNF中进行分解,同时保留功能依赖性。
在第一种情况下,唯一键是AD,使用分析算法的分解如下(每个关系都显示在其上投影的依赖关系的封面):
R1< (A B), {A→B}>
R2< (B C), {B→C}>
R3< (广告) , {}>
你可以注意到两个依赖关系都被保留了,因为我们有两个具有依赖关系属性的关系。
在第二种情况下,依赖项的规范封面是:
{A→B, B→C, B→D}
密钥是A,使用分析算法的分解如下(同样,每个关系都显示在其上投影的依赖关系的封面):
R1< (B C D), {B→C, B→D}>
R2< (A B), {A→B}>
我们可以注意到,分解会保留所有依赖关系。