0

这是对 3NF 和 BCNF 之间的简单回答差异的跟进(必须能够向 8 岁的孩子解释)。为什么下表在 3NF 中?Pizaa,Topping 是候选键,Topping 类型部分依赖于 Topping,因此它甚至不在 2NF 中。

 Pizza    Topping    Topping Type
-------- ---------- -------------
1        mozarella  cheese
1        pepperoni  meat
1        olives     vegetable
2        mozarella  meat
2        sausage    cheese
2        peppers    vegetable

请详细说明。

4

1 回答 1

2

您链接到的答案表明该表有两个键:(Pizza,Topping)和(Pizza,Topping Type)。依赖 Topping->Topping Type 不违反 2NF 或 3NF,因为 Topping Type 是主要属性(候选键的一部分)。只有当 Topping Type 是非素数时,才会违反 2NF 和 3NF。

这个例子显示了 BCNF 和 3NF 之间的本质区别。BCNF 关注所有属性的部分或非关键依赖关系,而不仅仅是非主要属性。

于 2015-09-19T16:22:41.870 回答