2

Gday小伙子们,

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

我知道

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

(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. R在BCNF中,为什么?如果不是,则将其分解为 BCNF No。因为对于 C->A,C 不是超键。D->B 类似 R1 = {C, D}, R2 = {A, C}, R3 = {B, D}
4

1 回答 1

4

那么,C->A 不会导致违规吗?C 不是超级键,也不是微不足道的......

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

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

于 2013-12-14T21:03:44.873 回答