【问题标题】:2nf second normal form difficult exercise2nf第二范式高难度练习
【发布时间】:2016-06-10 05:45:17
【问题描述】:

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

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

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

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

【问题讨论】:

  • {AB} 是键意味着 AB->CD。 “如果关系 R 处于第一范式并且 R 的每个非主属性完全依赖于 R 的每个候选键,则关系 R 处于第二范式。” [1] 因此,R 确实满足 2NF,因为每个非主属性 (C,D) 都完全依赖于每个键 ({A,B})。 [1] Codd EF,Randall J. Rustin(编辑)中的“数据库关系模型的进一步规范化”,数据库系统:Courant 计算机科学研讨会系列 6,Prentice-Hall,新泽西州 Englewood Cliffs,1972 年.

标签: sql database relational-database normalization


【解决方案1】:

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

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

AD->C
B->D

那么我们的主键是AB。现在简单地说,2NF 处理部分依赖,即当属性依赖于主键的一部分时。 (所以如果我们有一个主键,它只是一个属性,而不是关系 R 已经在 2NF 中!)

正式地:

给定关系 R 的函数依赖关系 X->A 其中:

  1. XR 的一组属性
  2. A非主 属性,不在 X

那么要在 2NF 中,X 应该是任何键的真子集。

回到我们的例子。主键是AB。所以主要属性是 AB。非主要属性是 CD

让我们考虑第一个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 处于第二范式。

【讨论】:

  • 考虑到这两种情况的好答案。谢谢。
猜你喜欢
  • 1970-01-01
  • 2019-08-30
  • 2016-10-31
  • 2017-01-18
  • 2015-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多