【问题标题】:Boyce-Codd Normal FormBoyce-Codd 范式
【发布时间】:2023-03-17 11:19:01
【问题描述】:

我不明白 Boyce-Codd 范式。我看了我的课本,但我不明白。假设关系 R = (A,B,C,D,E) 和 F={A->C, D->CB, AC->E}。你如何确定 R 是否在 BCNF 中?需要帮忙。谢谢!

【问题讨论】:

    标签: database relational-database bcnf


    【解决方案1】:

    要确定一个关系是否为 BCNF,我们检查它的功能依赖关系。

    在 BCNF 中,如果对于每个 FD X→Y,我们要么有

    • X→Y 是一个平凡的函数依赖 (Y ⊆ X)
    • X 是模式 R 的超键。

    FD 是 A→C、D→CB、AC→E。让我们从第一个 FD A→C 开始。

    A→C 不是平凡的,因为 C ∉ A。例如,A→A 是平凡的依赖。

    现在 A→C 是超级键吗?为了检查我们是否计算了 FD 左侧的闭包,在本例中为 A。闭包是 A 逻辑暗示的所有元素。 [A]+ = A ∪ C ∪ E = ACE 左右我们有 A→ACE。

    ACE 不是超级键,因为它包含关系的所有属性。

    所以关系不在 BCNF 中,因为 A→C 既不是平凡的也不是超级键。

    还有其他违反 BCNF 的行为。 [D]+ = BCD,它不是超级密钥或微不足道的。 [AC]+ = ACE,它不是超级密钥或普通密钥。

    希望这会有所帮助!我认为一切都是正确的,但我现在正在为期末考试而学习,并尝试学习很多这些材料。

    【讨论】:

      【解决方案2】:

      非正式地,您首先确定所有候选键。然后你看看函数依赖中的箭头。

      如果每个箭头都是候选键的out箭头,则它在 BCNF 中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-09
        相关资源
        最近更新 更多