2013-12-14 43 views
2

GDAY小伙子,3NF VS BCNF:例

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

我知道

甲关系,R,是当且仅当3NF每非平凡FD(X-> A)由R满足下列条件中的至少一个为真:

( a)X是R的超级键,或

(b)中A是对于R a键属性

甲关系,R,是当且仅当BCNF每非平凡FD(X-> A)满足 由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->的原因的违规行为? C不是一个超级密钥,它不是微不足道的,对于D-> B也是如此。

但它不是一个BCNF:

  1. 在BCNF是R,为什么呢?如果不是,则将其分解成BCNF 否。因为对于C-> A,C不是超级密钥。对于D->乙R1 = {C, d},R2 = {A,C},R3 = {B,d}
+0

的可能重复[什么是3NF和BCNF之间的区别?](http://stackoverflow.com/questions/19749913/what-is-the-difference-between-3nf-and-bcnf) –

+0

@MostyMostacho嗯,我已经读过这个和其他3个线程,但仍然.. – geekybedouin

+0

@MostyMostacho我不能在那里发表评论,我需要问你在早些时候的答案.. – geekybedouin

回答

4

嗯相似,不C->甲导致违反? C是不是一个超级密钥,它不是微不足道的...

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

(提示:这种演习的目的是部分也告诉你为什么3NF是不是一个非常有用的正常形态,且情况3NF和BCNF事项之间的区别)