【问题标题】:Checking if a decompozition is in Boyce Codd Normal Form检查分解是否为 Boyce Codd 范式
【发布时间】:2014-04-14 02:28:36
【问题描述】:

考虑架构 S=(A,B,C,D) 以 AB 作为主键,并且下面的函数依赖 (FD) 保持在它上面:AB --> C, AB --> D, BC -- > D. 以下分解是 Boyce-Codd 范式 (BCNF) 吗? S1=(A,B,D) & S2=(B,C,D)

尝试的答案可能会遗漏一些东西: 使用给定的 FD,在 S1 中,键是 AB;在 S2 中,关键是 BC。 S1 包含 FD AB-->D,其左侧包含其键 AB。 S2 包含 FD BC-->D,其左侧包含其密钥 BC。 因此,分解似乎是在 BCNF 中。

但是,我们知道 BCNF 分解是无损的,而这个不是。 常见的属性是 {B,D},它的闭包仍然是 {B,D}。

那么错误在哪里?

【问题讨论】:

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


    【解决方案1】:

    “无损分解”中的无损意味着:

    • 原始模式的任何关系
    • * 满足原始架构中的所有依赖关系 *
    • 可以通过关系投影分解成与分解后的模式对应的关系值
    • 并且这些分解的关系值的自然连接可以保证再次产生原始关系值。

    这就是“无损”的意思,这就是它的意思全部

    它与分解模式中 FD 的可表达性没有任何关系(分解模式可能确实“丢失”了 - 正如您的示例中的情况)。

    没有错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-08
      相关资源
      最近更新 更多