无损分解得到BCNF(正常形式)

时间:2016-04-29 14:44:46

标签: database-design

我们说我的关系如下:

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,它可以被分解,但我不确定。任何人都可以帮我澄清一下吗?

1 个答案:

答案 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}>

我们可以注意到,分解会保留所有依赖关系。