【发布时间】:2015-10-16 02:59:02
【问题描述】:
我很难理解 3 Normal 形式。
3 NF:2 NF + 无转换
所以,例如:如果我有,
A -> B
B -> C
那么上面是一种过渡关系,因此不会在 3 NF 中? 我理解正确吗?
但在What exactly does database normalization do? 的这个答案中,paxdiablo 说,
Third normal form (3NF) - 2NF and every non-key column in a table depends on nothing but the key.据此,它将在 3 NF 中。我哪里错了?
【问题讨论】:
-
这是文本中过于复杂的简单概念之一。阅读这样的内容:essentialsql.com/…
-
B 是不是关键列?如果不是候选键之一,那么 B⟶C FD 不是表的键的依赖 如果是候选键,那么 B⟶A 和 A⟶C 都是函数依赖(都是 A和 B 是候选键,因此两者都确定 C,并且每个确定另一个)或 A⟶B 是非键依赖。如果唯一的函数依赖是显示的,那么你不能同时让 A 和 B 作为候选键,所以关系不能在 3NF 或 BCNF 中。
-
您的示例的所有列是什么?什么是所有 FD?这两个应该是最小的封面吗?即,表中的 FD 是否正是当这两个出现时必须存在的那些?这两个不能是 only 的,因为如果这些 FD 成立,那么 A ⟶ C 也成立。
-
@BrianMacKay 除了 1. 它指的是“主键”,但重要的是候选键。 2.它对传递依赖的定义是错误的。 X 传递地确定 Z 如果有一个 Y 其中 X → Y 和 Y → Z 而不是 Y → X
-
@JonathanLeffler A ⟶ B 和 B⟶ C 所以 A⟶C。所以A是CK。所以只有 2 种情况,B⟶ A 与否,B 是否为 CK(分别),给出 2NF 或 BCNF(分别)。
标签: database normalization database-normalization third-normal-form