什么时候进入 3NF?
When will it be in 3NF?
我很难理解 3 范式。
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。我哪里错了?
一个关系在 3NF 中,如果它在 2NF 中并且:
- 要么每个属性都依赖于一个键,
- 或者,如果一个属性依赖于一个非键,那么它就是素数。
(是质数意味着它属于一个键)。
例如见Wikipedia.
如果只有第一个条件成立,则关系在 Boyce-Codd normal form 中,即:
- 每个属性都依赖于一个键
因此,在您的示例中,如果关系只有三个属性 A
、B
和 C
以及两个依赖项,则 不是 在 3NF 中,因为 C
不是质数,并且取决于 B
,这不是键。另一方面,如果还有其他属性,并且C是一个键或者键的一部分,那么它可以在3NF中(但这取决于其他功能依赖,应该满足上述条件)。
2NF 表示每个非素数属性都依赖于每个 whole 个候选键,而不是 part。例如,如果一个关系有属性 A
、B
和 C
,唯一的键是 AB
和 B -> C
,那么这个关系是 不 2NF.
您正在尝试的 2 部分 3nf 定义是:
- 2NF 成立并且 R 的每个非素数属性都非传递地依赖于每个超键。 (当存在 Y 时,X 可传递地确定 Z,其中 X → Y 和 Y → Z and not Y → X。)
3NF的另一个定义是:
- 对于每个非平凡的 FD X → Y,要么 X 是超键,要么 Y 中但 X 中不存在的属性是质数。 (当 X 包含 Y 时,X → Y 是微不足道的。)
那么BCNF就是:
- 对于每个非平凡的 FD X → Y,X 是一个超级键
见this answer。
如果您的示例的唯一列是 A、B 和 C,并且您的两个 FD 形成最小覆盖,那么唯一的候选键是 A,而 C 依赖于非超级键,因此它不在 3NF(或 BCNF)中.
您(误)使用术语太草率了,以至于您的句子没有任何意义。了解术语以及如何在定义中使用它们来指代各种事物,并以这种方式使用它们来指代适当的事物。并从(信誉良好的)教科书中获取您的定义。
我很难理解 3 范式。
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。我哪里错了?
一个关系在 3NF 中,如果它在 2NF 中并且:
- 要么每个属性都依赖于一个键,
- 或者,如果一个属性依赖于一个非键,那么它就是素数。
(是质数意味着它属于一个键)。
例如见Wikipedia.
如果只有第一个条件成立,则关系在 Boyce-Codd normal form 中,即:
- 每个属性都依赖于一个键
因此,在您的示例中,如果关系只有三个属性 A
、B
和 C
以及两个依赖项,则 不是 在 3NF 中,因为 C
不是质数,并且取决于 B
,这不是键。另一方面,如果还有其他属性,并且C是一个键或者键的一部分,那么它可以在3NF中(但这取决于其他功能依赖,应该满足上述条件)。
2NF 表示每个非素数属性都依赖于每个 whole 个候选键,而不是 part。例如,如果一个关系有属性 A
、B
和 C
,唯一的键是 AB
和 B -> C
,那么这个关系是 不 2NF.
您正在尝试的 2 部分 3nf 定义是:
- 2NF 成立并且 R 的每个非素数属性都非传递地依赖于每个超键。 (当存在 Y 时,X 可传递地确定 Z,其中 X → Y 和 Y → Z and not Y → X。)
3NF的另一个定义是:
- 对于每个非平凡的 FD X → Y,要么 X 是超键,要么 Y 中但 X 中不存在的属性是质数。 (当 X 包含 Y 时,X → Y 是微不足道的。)
那么BCNF就是:
- 对于每个非平凡的 FD X → Y,X 是一个超级键
见this answer。
如果您的示例的唯一列是 A、B 和 C,并且您的两个 FD 形成最小覆盖,那么唯一的候选键是 A,而 C 依赖于非超级键,因此它不在 3NF(或 BCNF)中.
您(误)使用术语太草率了,以至于您的句子没有任何意义。了解术语以及如何在定义中使用它们来指代各种事物,并以这种方式使用它们来指代适当的事物。并从(信誉良好的)教科书中获取您的定义。