确定关系是3NF还是2NF

时间:2013-05-17 16:45:23

标签: database relational-database database-normalization 3nf

从Database Management Systems一书:给定关系SNLRWH(每个字母表示一个属性)和以下功能依赖:

  • S-> SNLRWH(S是PK)
  • R-> W

我的尝试:

  • 首先,它不是3NF:对于第二个FD,R既不包含W,也不包含R键,W也不是键的一部分。
  • 其次,是/不是 2NF。如果我们检查第二个FD,则W依赖于R,而R又不是密钥的一部分。 STUCK。

2 个答案:

答案 0 :(得分:3)

如果候选键的某个适当子集在您的一个(非平凡)依赖项的左侧显示为决定因素,则会违反<2> 2NF。问问自己,您的任何决定因素是否是候选密钥的子集。

通常只有在关系具有复合键时才会违反2NF - 具有多个属性的键。如果空集(∅)碰巧是一个决定因素,那么只有简单键(单个属性键)才能违反2NF的关系技术上 。这种情况相当不寻常,很少被认为值得考虑,因为它们显然是“错误的”。为了完整起见,这是一个有趣的例子。在以下关系中,Circumference和Diameter都是候选键。违反2NF的依赖性是∅ - &gt; Pi,圆周与直径的比率。

CIRCLE relation

答案 1 :(得分:0)

2NF与部分密钥依赖关系有关。为了使关系失败2NF的测试,该关系必须具有至少一个具有至少两列的候选键。

由于您的关系只有一个候选键,并且该候选键只有一列,因此您不可能具有部分键依赖关系。它通过了2NF的测试。