正常化&分解为BCNF

时间:2016-05-21 09:49:35

标签: schema primary-key database-normalization bcnf

我已经获得了关系和功能依赖

enter image description here

我希望证明它的形式是合理的,然后将其转化为BCNF。

现在我提出它在3NF,因为第二个FD是一个具有关键属性作为其RHS的传递依赖。第二个FD也违反了BCNF,因为C不是R的超级密钥。

但是 - 我不确定如何分解成BCNF。

如果我分解成;

enter image description here

这使第一个FD无效,并有效地使(A,C)成为新密钥 - 所以它看起来并不正确!这种关系可以转换为BCNF吗?

1 个答案:

答案 0 :(得分:2)

  

这种关系可以转换为BCNF吗?

每个关系都可以通过应用“分析算法”在BCNF中转换,该算法可以在任何有关数据库的好书中找到。

请注意,该关系有两个键,AB和AC,因此所有属性都是素数(因此,关系自动在3NF中)。

您必须首先找到所有违反BCNF的依赖项,在这种情况下只有C → B,因为C不是超级密钥。

然后你分解两个关系中的关系,一个关系C,所有属性由它确定(在这种情况下只有B),另一个包括所有其他属性加{{ 1}}。

所以分解实际上是:

C

然后必须对每个具有某种违反BCNF的依赖关系重复分解,但在这种情况下没有这种关系,因为R1(B, C), with key C, with the only (non-trivial) dependency C → B R2(A, C), with key AC, without (non-trivial) dependencies R1都在BCNF中。

最后请注意,分解不会保留依赖项。事实上,依赖R2不会在分解中保留。