【问题标题】:Dependency preserving依赖保持
【发布时间】:2013-10-24 20:52:16
【问题描述】:

因此,我正在查看我的数据库笔记和材料,试图让自己对即将到来的采访的一般概念和术语进行更新。然而,我已经陷入了依赖和无损连接分解。我到处搜索,看到很多数学方程式,但我正在寻找一个简单明了的英语回答或示例。

我从http://www.cs.kent.edu/~jin/DM09Fall/lecture6.ppt 找到了一个简报,它说明了一个我无法完全理解的示例。贴在下面。

R = (A, B, C)F = {A → B, B → C)
Can be decomposed in two different ways
R1 = (A, B),   R2 = (B, C)
Lossless-join decomposition:
         R1 ∩ R2 = {B} and B → BC
Dependency preserving
R1 = (A, B),   R2 = (A, C)
Lossless-join decomposition:
         R1 ∩ R2 = {A} and A → AB
Not dependency preserving (cannot check B -> C without computing R1 ⋈ R2)

所以我知道拥有 A → B 和 B → C 意味着您彼此之间有一个“参考”,而 A → B 和 A → C 意味着 B 和 C 之间没有参考或联系。

所以,

  1. 无损连接分解是否意味着数据整体仍然完好无损?在这两种情况下,您最终仍然可以获得这两种数据,对吧?如果这是错误的,请纠正我! :)

  2. 在第二次分解中将 B 连接到 C 有什么意义,这如何使它不保持依赖关系?

    • 如果 A 被删除,您将只拥有 B 和 C 没有关系。

    • 如果 B 被删除,你仍然有 A → C。

    • 如果 C 被删除,你仍然有 A → B。

因为即使在第一个示例中,您在删除值时仍然会得到类似的结果。

  • 如果 A 被删除,你仍然会有 B → C 的关系。

    • 如果 B 被删除,您将只拥有 A 和 C 没有关系。

    • 如果 C 被删除,您将拥有 A → B 的关系。

因此,无论哪种方式,如果您删除每个项目,您仍然会有两个关系实例和一个没有关系的两个项目实例

我的猜测是,在删除示例 1 中的 B 和示例 2 中的 A 的“中间人关系”(是否有一个术语)时,您仍然可以关联示例 1 的 A → B 然后 B → C ,而在示例 2 中,您被 A → B 卡住,与 A → C 没有连接。

但是正如你所看到的,我现在又回到了第一个问题,为什么这会导致数据依赖,而在谷歌搜索“什么是数据依赖”或“数据依赖的示例”时,这对我来说根本没有任何意义。

如果有人可以帮助我澄清这一点,将不胜感激。

【问题讨论】:

  • FD 与“链接”或“参考”无关。当 A 的每个给定值的所有出现与 B 的相同值出现时,A → B 成立。阅读定义。

标签: database database-normalization functional-dependencies


【解决方案1】:

将关系R分解为R1和R2是无损连接分解,如果你可以通过连接关系R1和R2来构造回R(形式R1⋈R2你可以得到R)。

为了将关系 R 分解为 R1 和 R2 是无损的,它必须满足以下两个条件中的任何一个:

 1. R1 ∩ R2 -> R1
 2. R1 ∩ R2 -> R2

如果上述关系没有任何意义,那么可以这样想,当你与 2 个关系 R1 和 R2 相交并获得公共属性时,如果公共属性能够确定任何一个关系,那么这个 (这些)公共属性是(是)获得关系的候选键(想想为什么?),因此您可以使用这个候选键加入另一个关系以获得 R。

关于依赖保持,关系R的分解是依赖保持,如果R的函数依赖可以通过取所有分解关系的函数依赖的并集来获得。

【讨论】:

  • 第一段是正确的定义。第二个不是。 (您已从维基百科中获取它们,但这是错误的。)这是暗示无损分解但不是必需的条件。无论如何,FD保存不依赖于无损。 (正如你自己最后一段所说的那样。
【解决方案2】:

无损连接并不意味着任何元组都丢失了,或者在连接后无法恢复。无损连接意味着生成虚假元组,这些元组会导致“额外”行(元组)和“信息”丢失。

简单地说,我认为当我们在一个子模式的属性中找到 FD 的两边时,依赖关系被保留了。 (如果我错了,请有人纠正我)。

【讨论】:

    猜你喜欢
    • 2015-07-29
    • 2023-03-20
    • 2019-04-26
    • 1970-01-01
    • 2014-07-26
    • 1970-01-01
    • 2023-03-27
    • 2019-09-19
    • 2016-03-01
    相关资源
    最近更新 更多