将关系转换为BCNF

时间:2017-12-03 08:42:29

标签: rdbms database-normalization

R(A B C)

AB - > C, C - >甲

AB是最小超级密钥,它是候选密钥。 AB - > C很好。 但是C - >由于素数属性取决于非素数属性,因此A不成立。 我知道如何分解到3 NF。我也知道为什么关系不在BCNF。 但我不知道如何打破这种与BCNF的关系。

任何人都可以将此关系分解为BCNF。

1 个答案:

答案 0 :(得分:0)

这种关系可以在BCNF中使用例如分析算法进行分解,从而产生以下分解:

R1(A, C) (with non trivial dependency C → A and candidate key C)
R2(B, C) (without non trivial dependencies and so with candidate key (B, C))

但是这种分解不会保留依赖关系:实际上,依赖关系A B → C会丢失。因此,通过这种分解,不能简单地对分解的关系强制执行由于这种依赖性而产生的约束。并且不能产生BCNF中的其他分解,从而保持依赖性。我们还可以注意到这种关系已经在3NF。