3NF对比BCNF:例子

问题描述 投票:2回答:1

Gday小伙子,

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

我知道

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

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

(b)A是R的关键属性

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

(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}
database-design relational-database database-normalization 3nf bcnf
1个回答
4
投票

那么,C-> A不会导致违规吗? C不是超级钥匙,它不是一件轻而易举的事......

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

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

© www.soinside.com 2019 - 2024. All rights reserved.