【问题标题】:How to find number of minimal covers?如何找到最小封面的数量?
【发布时间】:2020-02-13 10:09:38
【问题描述】:

考虑 R(A, B, C, D, E, F, G) 是一个关系模式 以下函数依赖:AC → G,D → EG,BC → D,CG → BD, ACD → B, CE → AF。
可能的不同最小覆盖数 是

我该如何解决上述问题?

我尝试了什么:
------------------------------------------- -------------------
我找到可能的最小覆盖数量的方法是首先使用算法(如下所示),然后通过运行算法找到可以找到最小覆盖的不同方法(因此给出可能的最小覆盖的数量)。问题是我不确定我应该如何考虑“找到最小封面的不同方法”。例如:

找到最小覆盖的算法(教科书:“数据库系统基础” - Elmasri,Navathe):

输入:一组函数依赖 E.

  1. 设置 F := E.

  2. 将 F 中的每个函数依赖 X → {A1, A2, ..., An} 替换为 n 个函数依赖 X →A1, X →A2, ..., X → An.

  3. 对于每个功能依赖 X → A in F
    对于每个属性 B 这是 X 的一个元素 if { {F – {X → A} } ∪ { (X – {B} ) → A} } 等价于 F 然后在 F 中将 X → A 替换为 (X – {B} ) → A。

  4. 对于每个剩余的函数依赖 X → A in F if {F – {X → A} } 等价于 F,然后从 F 中移除 X → A。

在应用算法时,在 ACD → B 处,我发现 A 和 D 在第 3 步是无关的(将 ACD → B 替换为 C → B 给出了一组等效于 F 的函数依赖关系),但我不确定是否我必须用 C → B 或 ACD → B 用 AC → B 或 ACD → B 用 CD → B 替换 ACD → B。假设我用 AC → B 或 CD → B 替换 ACD → B,我不确定是否用 AC → B 替换 ACD → B 可能会导致一个可能的最小覆盖,而用 CD → B 替换 ACD → B 可能会导致另一个可能的最小覆盖。
-------------------------------------------------- -----------
注意

  • “可能的不同最小覆盖数”表示在给定上述关系和函数依赖关系的情况下可能的最小覆盖数。
  • 假设问题中提到的所有函数依赖都成立。

【问题讨论】:

  • 那些 FD 并不是所有的。 (我解释了两次。)测试的意思和应该说的是,这些 FD 构成了模式中所有 FD 的覆盖。

标签: database-design database-normalization functional-dependencies


【解决方案1】:

我不确定是否必须将 ACD → B 替换为 C → B 或 ACD → B 替换为 AC → B 或 ACD → B 替换为 CD → B。

实际上算法必须按顺序应用。因此,您可以从该依赖项中删除 A 或 D,但随后您必须根据算法规则再次检查功能依赖项的结果集。

事实上,如果你删除 A,例如,得到的依赖是CD → B,如果你重复这一步,你会发现现在这个依赖中没有更多的无关属性了。同样,如果删除 D,则生成的依赖项 AC → B 也不包含无关属性。

因此,您可以看到,根据您在此步骤中检查属性的顺序,理论上您可以生成不同的最小覆盖(并非总是如此)。

关于找到所有可能的最小覆盖的问题,我不知道是否有算法或巧妙的技术可以找到它们。一种方法是尝试通过考虑所有可能顺序中的依赖关系以及所有可能顺序中依赖关系的左侧部分来尝试应用该算法,但这当然是一个指数过程。

【讨论】:

  • “再次检查算法规则”没有帮助,因为算法不清楚。不能“从该依赖项中删除 A 或 D”,依赖项就是它的本质。是的,当然你的意思是说一些关于相关的 FD & 使用它和/或原始 & F 和/或 F 的新值在接下来的步骤中,但你和算法都没有说。这更像是与引用相同的不清楚的写作。而且这个问题还不清楚——应该澄清它,直到那时关闭和否决票没有回答。 (但我相信你已经看过我的 cmets 了。)
【解决方案2】:

我认为答案是 2

因为以下 FD 相互关联,因此您可以删除其中任何一个 CG --> B ACD --> B

所以最小封面将只包含其中一个,因此两个最小封面是可能的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多