【问题标题】:Database - Lossless Join Decomposition Criteria数据库 - 无损连接分解标准
【发布时间】:2017-07-08 22:48:19
【问题描述】:

Wikipedia 上,它说:

如果以下函数依赖项中的至少一个在 F+ 中,则分解是 R 的无损连接分解(其中 F+ 代表 F 中每个属性或属性集的闭包):
R1 ∩ R2 → R1 或 R1 ∩ R2 → R2

很遗憾,我不明白这个标准。众所周知,如果 R1 和 R2 的连接是 R,则分解是无损的,但是如何从上面的标准推导出来呢?

【问题讨论】:

    标签: database relational-database functional-dependencies


    【解决方案1】:

    那篇维基百科的文章一团糟。

    当且仅当组件(原始的投影)重新连接到它时,分解才是无损的。

    您引用的内容不是无损分解的定义。这是一个充分条件,表明分解是无损的,给定一些原始函数中的依赖关系。如果满足条件,则连接是无损的。这不是必要的条件。

    一些大学的 html 幻灯片:

    Decomposition

    10 我们将对无损连接做出更正式的定义:[...]
    11 换句话说,无损连接分解是这样一种分解:对于任何法律关系 r,如果我们分解 r 然后“重构”r,我们就会得到我们开始时的东西——不多也不少。

    一个有用的充分条件 Lossless-Join Decomposition during Normalization Using Functional Dependencies

    令 R 为关系模式。
    令 F 为 R 上的一组函数依赖。
    令 R1 和 R2 形成 R 的分解。
    如果至少以下函数依赖项之一在 F+ 中,则该分解是 R 的无损连接分解:
    1 R1 ∩ R2 → R1
    2 R1 ∩ R2 → R2

    知道充分条件背后的想法是,您只需要展示一些关于共享属性集和一些功能依赖关系的信息,就可以知道组件连接到原始组件并且(等效地)是无损分解。

    为什么这是真的?简单来说,就是保证自然连接中涉及的属性(R1 ∩ R2)是两个关系中至少一个的候选键。

    【讨论】:

      猜你喜欢
      • 2023-03-19
      • 2011-05-17
      • 2015-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多