2nf第二次正常形式难以锻炼

时间:2016-02-26 20:44:47

标签: sql database relational-database normalization

我有AB(A,B,C,D)和AB 主键和AD - > ç

我认为它是2nf因为你无法用AB的子集确定C. 来自wiki“如果表格在1NF中,则表格在2NF中,并且非主要属性不依赖于表格中任何候选键的任何适当子集”

但很多人说它是在1nf因为定义 “在2NF中,如果它在1NF中,并且表格的每个非素数属性都取决于每个候选键的全部” 所以AD不是整个主键,而只是另一个属性不是素数的一部分

如果您还可以提供一些不同的维基百科,那么我可以说明我的论文是否真的正确

1 个答案:

答案 0 :(得分:2)

您声明 AB 是给定关系 R 的主键。要做到这一点,除了 AD-> C 之外,还必须至少有一个功能依赖。

为了解释2NF,我假设缺少的FD是 B-> D 。所以我们有一个关系R(A,B,C,D)与FD的关系:

AD-&以及c
B-> d

然后我们的主键是 AB 。现在简单来说,2NF处理部分依赖,也就是说,当属性依赖于主键的一部分时。 (所以,如果我们有一个主键,只有一个属性,而不是R已经在2NF中!)

形式上:

给定关系 R 的功能依赖 X-> A ,其中:

  1. X R
  2. 属性的
  3. 非素数属性,不在 X
  4. 然后在2NF, X 应该是任何键的正确子集。

    回到我们的例子。主键是 AB 。所以主要属性是 A B 。非主要属性为 C D

    让我们考虑第一个FD, AD-> C

    此处 C 是非主要属性。要违反2NF条件, AD 是主键 AB 的正确子集。 AD不是AB的适当子集,因此它不违反2NF条件。

    让我们看看下一个FD, B-> D

    此处 D 是非主要属性, B 是主键 AB 的正确子集,因此违反了2NF条件。

    因此,关系R不是第二范式。

    另一方面,如果 R 的FD设置为:

    AD-&以及c
    AB-> d

    我们的主键仍然是 AB ,但现在关系R处于第二范式。