3NF对比BCNF:例子

时间:2013-12-14 05:30:58

标签: database-design relational-database database-normalization 3nf bcnf

Gday小伙伴,

好的,所以我有一个数据库类,我有这个例子让我觉得我真的没有完全理解两个NF之间的区别..

我知道

  

如果满足以下条件中的至少一个条件的R满足每个非平凡FD(X-> A),则关系R为3NF:

     

(a)X是R的超级密钥,或

     

(b)A是R

的关键属性

  

对于每个非平凡FD(X-> A)满足,关系R在BCNF中   由R满足以下条件:

     

(a)X是R

的超级密钥

以下是示例:

  

R =(A,B,C,D)F = {AB-> C,AB-> D,C-> A,D-> B}   1.R在3NF,为什么?    如果不是,请将其分解为3NF

Sol:
Yes. Find all the Candidate Keys:
AB, BC, CD, AD
Check all FDs in F for 3NF condition

嗯,不是C-> A导致违规? C不是超级密钥,它不是微不足道的,对于D-> B?

也是如此

但它不是BCNF:

  
      
  1. BC在BCNF,为什么?如果不是,则将其分解为BCNF   不。因为对于C-> A,C不是超级密钥。类似于D-> B R1 = {C,   D},R2 = {A,C},R3 = {B,D}
  2.   

1 个答案:

答案 0 :(得分:4)

嗯,不是C-> A导致违规? C不是超级密钥,它不是一件轻而易举的事......

3NF的第二个条件怎么样?是R中某个键的属性吗?

(提示:此类练习的目的部分也是为了向您展示为什么3NF不是一个非常有用的正常形式,以及3NF和BCNF之间区别的情况)