什么时候进入 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 中并且:

  1. 要么每个属性都依赖于一个键,
  2. 或者,如果一个属性依赖于一个非键,那么它就是素数。

(是质数意味着它属于一个键)。

例如见Wikipedia.

如果只有第一个条件成立,则关系在 Boyce-Codd normal form 中,即:

  1. 每个属性都依赖于一个键

因此,在您的示例中,如果关系只有三个属性 ABC 以及两个依赖项,则 不是 在 3NF 中,因为 C 不是质数,并且取决于 B,这不是键。另一方面,如果还有其他属性,并且C是一个键或者键的一部分,那么它可以在3NF中(但这取决于其他功能依赖,应该满足上述条件)。

2NF 表示每个非素数属性都依赖于每个 whole 个候选键,而不是 part。例如,如果一个关系有属性 ABC,唯一的键是 ABB -> 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)中.

您(误)使用术语太草率了,以至于您的句子没有任何意义。了解术语以及如何在定义中使用它们来指代各种事物,并以这种方式使用它们来指代适当的事物。并从(信誉良好的)教科书中获取您的定义。