【问题标题】:Deriving functional dependencies of minimal cover导出最小覆盖的函数依赖
【发布时间】:2018-02-25 04:49:34
【问题描述】:

给定依赖集 AB->C、BD->EF、AD->GH、A->I、H->J。 你如何找到一个最小的封面?通过应用书中描述的过程,我得到: AB->C, A->I, BD->EF, AD->GH, H->J 而不是 AB->CI, BD->EF, AD-> GHIJ。是否可以将 AB->C 和 A->I 合并为 AB->CI 并摆脱 A->I?

【问题讨论】:

  • 我明白了。但我可以说 AB->CI 推断 A->I 吗?
  • 不,给定 AB->CI 我们无法推导出 A->I。
  • 嗨。告诉我们这本书并展示你是如何遵循它的。我们还能如何指出您的错误?另外,为什么其他人必须重新提出解决方案而不仅仅是检查您的解决方案?谷歌“stackexchange 作业”。 PS要“摆脱”一个FD,它需要被你保留的FD暗示。对于 A-> 我给 AB-> CI 的情况并非如此。但是您可能可以通过制作一些简单的 ABCI 数据来证明这一点。但是,由于删除该 FD 不是您尝试遵循的流程中任何步骤的一部分,您为什么要问这个问题?
  • PS 你说你得到的只是输入列表。此外,你说这本书给出的集合不是输入的封面,因为它并不意味着 A-> I。所以你看起来很困惑。请确认输入,您的输出和书籍输出。 “组合成”也不是有用的措辞。 AB->C 和 A->I 暗示 AB->CI。但我们可以放弃的是别人暗示的东西。导出 AB->CI 后,如果所有其他 FD 都暗示它,我们只能删除 A->I。遵循参考流程。

标签: database database-normalization functional-dependencies


【解决方案1】:

一组依赖F的最小覆盖的函数依赖必须满足四个条件:

  1. 它们必须是 F 的封面(当然!)
  2. 每个右边部分只有一个属性
  3. 每个左边的部分都不能有无关的属性(即即使我们删除它们也可以派生原始依赖项的属性)
  4. 没有任何覆盖的依赖是多余的(即可以从剩余的依赖中导出)。

所以这意味着该示例的最小覆盖是(请注意,可以有多个最小覆盖,即满足上述条件的设置):

{ AB → C
  AD → G
  AD → H
  A → I
  BD → E
  BD → F
  H → J }

当然,你可以应用阿姆斯壮公理来推导出许多其他依赖项(例如AD → GHAB → CIAD → GHIJABD → EJ 等),但这些不是任何最小覆盖的一部分的 F(即它们不满足上述定义)。

【讨论】:

  • 我费心检查 FD 集,输入已经只是将 RHS 单一属性最小形式重新排列为 RHS 多重属性最小形式.问题中的那个和其他奇怪的事情(见我的评论)表明,也许所谓的输入实际上是这本书的输出。反正上面有些不对劲。 PS您的回答虽然有用,但实际上并没有回答问题中的任何一个问题。
猜你喜欢
  • 2015-12-31
  • 2014-07-05
  • 2014-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-01
  • 2020-04-12
  • 2023-03-10
相关资源
最近更新 更多