【问题标题】:Normalizing the relation to third normal form规范化与第三范式的关系
【发布时间】:2017-05-25 15:04:11
【问题描述】:

鉴于以下函数依赖关系,这对我来说有点令人困惑,因为第三范式表示 R 的非主属性没有传递依赖于主键。所以我删除了功能依赖 C --> DE 来自表并将其置于新关系中,但所有这些属性也可以由关系的主键确定。我认为我无法从该表中删除 DE 或者我应该删除,因为进一步的 BCNF 也无助于删除这些属性。问题是我什么时候先删除我还应该从第一个表中删除 DE 吗?enter image description here

【问题讨论】:

  • 是的,您应该删除这些属性。考虑从关系 ABC 中,给定 AB 的某个值,您有 C 的(唯一)值。使用该值,在第二个关系中,您可以找到由 AB 确定的 D 和 E 的值。
  • 请尽可能使用文字而非图片。部分图片无法搜索或剪切粘贴。
  • 转到参考,了解“传递 FD”的定义和分解为 3NF/BCNF 的算法。那么如果“所有这些属性也可以由关系的主键决定”呢? PK总是决定所有属性。 “关系”和“这种关系”是指原始关系还是“新关系”?此外,PK 不重要,CK 重要。这与传递 FD 和 BCNF 有什么关系?如果你想要 3NF,为什么要 BCNF?请编辑您的问题以明确。说明您所谈论的所有这些事情,并确保始终清楚您所指的内容。
  • "R 的非主属性不传递依赖于主键" R 的非主属性传递依赖于任何候选键 i>.

标签: relational-database database-normalization functional-dependencies


【解决方案1】:

要将关系放入给定的 NF(范式)中,您应该遵循针对该 NF 建议的算法。 (例如,给定一些 FD,根据 Armstrong 的公理,还有很多其他的 FD;您也需要处理它们。例如,在可能的情况下“保留”FD 有一定的好处,并且总是分解为保留 FD 的 3NF 组件有可能;但是如果我们分解使得某些 FD 的属性在组件之间拆分,我们可能无法保留 FD。)

请注意,这些算法不涉及首先归一化为较低的 NF。 (这可以阻止“好的”更高 NF 设计成为最终结果。)

当您进行分解以从具有属性 R 的关系中去除 FD X -> Y 时,如果组件具有属性集 X U Y 和 R - Y,则分解将始终是非损失/非加性的。通过重复分解所有组件最终将在您想要的 NF 中(如果它是 BCNF 或更低)。但是你的整体分解不一定像建议算法给你的那样“好”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-20
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 2013-09-27
    • 2015-09-08
    • 2015-08-21
    • 1970-01-01
    相关资源
    最近更新 更多