【问题标题】:Theoretical functional dependency理论函数依赖
【发布时间】:2017-06-03 22:26:28
【问题描述】:

我正在学习函数依赖,但我陷入了困境:

给定表格 L(A,B,C,D) 和 FD:AB->C, C->D

我们可以从中得到函数依赖 BC->D 吗?为什么?

我会说是的,因为我们有 C->D,我们可以直接使用 BC->DB,然后将其拆分为 BC->D 和 BC->B。这种推理方式正确吗?

表 L 是第二范式吗?是在第三吗?是3.5范式吗?

现在,我不确定:我认为它是第二范式,但不是第三范式,但我不知道它是否在 3.5 中(也许是的,因为我们只有一个键 (AB)?) 如果不是,我们如何将它变成 3.5NF?

【问题讨论】:

  • 如果您想知道一个表在哪些 NF 中,那么您必须找到这些 NF 的定义。然后您通过查找然后遵循专为此设计的 算法 将表放入 NF。

标签: functional-dependencies


【解决方案1】:

AB → C, C → D你可以推导出BC → D,你的推理是正确的。这可以通过使用Armstrong’s axioms 来显示:

1. From C → D you can derive BC → BD (by augmentation with B)
2. From BC → BD you can derive BC → D (by decomposition)

由于关系的唯一候选键是 AB(所以 AB 是主要属性),依赖 C → D 违反了第三范式以及 Boyce-Codd 范式(有时称为 3.5 范式)。如果每个行列式都是超键,则关系在 BCNF 中,但情况并非如此,因为C 不是超键。一个关系可能在 3NF 中,即使行列式不是超键,但行列式是素数属性(这不是这种情况,因为D 不是素数)。该模式改为 2NF,因为没有依赖于候选键的适当子集的非主属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-07
    • 1970-01-01
    相关资源
    最近更新 更多