BCNF转换

时间:2012-08-02 08:22:18

标签: database database-design relational-database normalization

我试图理解BCNF数据库,我无法完全理解它。

考虑以下关系:

R (A, B, C, D, E, F, G)

以下功能依赖性包含:

A -> E, F
A -> G
A, B -> D
B -> C
E, F -> G
A -> D

如何制作BCNF

3 个答案:

答案 0 :(得分:2)

非正式地说,在家庭作业问题上,你可以通过

进入BCNF
  • 假设你至少有1NF,
  • 删除部分密钥依赖关系以获得2NF(至少),
  • 删除传递依赖关系以获得3NF(至少),最后
  • 删除剩余的功能依赖关系,其中左侧不是到达BCNF的候选键(至少)。

部分密钥依赖性的一个例子是对

AB->D
A->D

由于A单独确定D,因此功能依赖性AB-> D具有部分密钥依赖性。

传递依赖的一个例子是对

A->EF
EF->G

无法保证您可以将给定关系规范化为BCNF 而不是更高。 (这似乎引起了大学生对SO的大量混淆。)删除部分密钥依赖关系以获得2NF可能会将所有关系留在5NF。

答案 1 :(得分:1)

)我们可以使用阿姆斯特朗公理来获得F +

  

A - > D,E,F,G

     

B - > C(A,B - > D被忽略,因为A - > D)

     

E,F - > ģ

我们可以获得主键(A,B)。

根据BCNF的定义,我们必须分开A-> (E,F),B-> C,A - > D和(E,F) - > G来自原始架构。

  

(A,B)主键(A,B)

     

(B,C)主键(B)

     

(A,D)主键(A)

     

(A,E,F)主键(A)

     

(E,F,G)主键(E,F)

这是BCNF分解。

答案 2 :(得分:0)

您可以尝试以下操作: 表1:具有复合主键(A,B)和外键(B)的A,B,D,E,F参见表2(B) 表2:B,C与B是主键 表3:具有复合主键(A,E,F)的A,E,F,G