什么时候会在3NF?

时间:2015-07-25 14:24:08

标签: database normalization database-normalization third-normal-form

我很难理解3 Normal表格。

3 NF:2 NF +无过渡

所以,例如:如果我有,

Integer

那么上面是一种过渡关系,因此不会在3 NF中? 我理解正确吗?

但在这个答案What exactly does database normalization do?中,Float表示,

A -> B B -> C 据此,它将在3 NF中。我哪里错了?

2 个答案:

答案 0 :(得分:1)

如果它在2NF并且:

,则关系为3NF
  1. 每个属性都取决于一个键,
  2. 或者,如果某个属性依赖于非键,那么它就是素数。
  3. (素数表示它属于一个键)。

    例如参见Wikipedia

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

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

      2NF表示每个非素数属性取决于每个整个候选键,而不是 part 。例如,如果关系具有属性ABC,则唯一的关键字为ABB -> C,则此关系为不是在2NF。

答案 1 :(得分:0)

您正在尝试的2部分3nf定义是:

  • 2NF成立并且R的每个非素数属性都是非传递性地依赖于每个超级密钥。 (当Y为Y时,X传递地确定Z,其中X→Y和Y→Z 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)中。 / p>

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