【问题标题】:Lossless Join Decomposition无损连接分解
【发布时间】:2011-05-17 02:19:18
【问题描述】:

我正在为考试而学习,这在学习指南上。这不是家庭作业,不会评分。

关系模式 R = (A,B,C,D,E)

函数依赖 = (AB->E, C->AD, D->B, E->C)

是 r1 = (A,C,D) r2 = (B,C,E) 或

x1 = (A,C,D) x2 = (A,B,E) 无损连接分解?为什么?

【问题讨论】:

  • 现实世界中的R和A,b,c,d,e是什么
  • 支持不明原因的反对票。

标签: sql database


【解决方案1】:

我的关系代数非常生疏,但这是我记忆中的方式

如果在 FD 中使用 r1 ∩ r2 -> r1 - r2r1 ∩ r2 -> r2 - r1,则可以进行无损分解。

r1 ∩ r2 = C
r1 - r2 = AD

C->AD 处于功能依赖关系 => 无损

对于 x1 和 x2

x1 ∩ x2 = A
x1 - x2 = CD

A->CD 不在FDs 中 现在检查 x2 - x1

x2 - x1 = BE

A->BE 也不在FDs 中,因此有损

参考here,请检查我可能犯的可怕错误

【讨论】:

    【解决方案2】:

    这是我的理解,基本上你看你的分解并确定关系之间的共同属性是否是至少一个关系的关键。

    所以对于 R1 和 R2 - 它们之间唯一的共同点是 C。C 将是 R1 的关键,因为你得到了 C -> A,D。所以它是无损的。

    对于 X1 和 X2,唯一的共同点是 A,从给定的函数依赖关系来看,它本身既不是 X1 也不是 X2 的键。

    【讨论】:

      【解决方案3】:

      函数依赖 = (AB->E, C->AD, D->B, E->C)

      Is r1 = (A,C,D) r2 = (B,C,E) 在执行 Chase 算法时是无损的。 可以看出,两个表都同意'C',并且依赖关系C->AD保存在表ACD中。

      x1 = (A,C,D) x2 = (A,B,E) 是有损的,因为您将在执行追逐算法后得出结论。 或者,可以看出两个表都只对 A 达成一致,而没有完全功能依赖于 A 的这种依赖关系。

      【讨论】:

        猜你喜欢
        • 2015-06-27
        • 1970-01-01
        • 1970-01-01
        • 2017-07-08
        • 2023-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多