0

我有一个关系和函数依赖关系如下:

R = (A, B, C, D, E)
F = (A -> B C,
   B C -> D,
   A C -> D E)

现在我将使用这个视频计算最小/规范覆盖。


因此,首先我检查我的 FD 中是否有单例右侧。不,我没有,所以我必须把它们分开。即A -> B C分为A -> BA -> C。同样对于A C -> D E

所以现在我有...

F = (A -> B,
     A -> C,
   B C -> D,
   A C -> D,
   A C -> E)

其次,我检查是否有任何 FD 具有超过 1 个 LHS 属性。如果是这样,我看看是否可以通过检查它们的闭包是否包含另一个元素来消除它们中的任何一个。如果是这样,那么我们不需要其他元素。

所以对于B C -> D, B closureisBC closureis C。没有一个闭包包含 other 属性,所以我们不能消除B C -> D

所以现在我们移动到A C -> D. A closure就是ABCDE,我们可以瞬间看到那个A的闭包CC无关属性也是如此 ,并且可以删除,因此我们的新 FD 集是...

F = (A -> B,
     A -> C,
   B C -> D,
     A -> D,
   A C -> E)

所以现在我们转到最后一个:A C -> E,同样,A的闭包是ABCDE,它包含C所以我们可以C从 FD 中消除 。所以我们的 FD 集现在是:

F = (A -> B,
     A -> C,
   B C -> D,
     A -> D,
     A -> E)

最后,我们检查是否有任何冗余 FD。我们通过遍历每个 FD 来做到这一点,将其覆盖,并查看其 LHS 的关闭是否包含其 RHS。

因此A -> B,我们将其掩盖并计算A closure,即ACDE不包含B因此我们无法消除A -> B。我们对所有 FD 执行此操作,我们最终看到我们只能消除A -> D,因为当我们掩盖A -> D并计算A closure它 containsD时,我们不需要A -> D


所以现在我们的新 FD 集是:

F = (A -> B,
     A -> C,
   B C -> D,
     A -> E)

现在我的问题是:

我的最后一组 FD 是正确的最小/规范封面吗?能不能换成别的写法?此外,在视频中,它说对于给定的一组功能依赖关系可以存在多个规范封面。我怎样才能发现这些?

感谢您的时间。

4

2 回答 2

1

我检查了你所有的步骤,你的最后一组是正确的。

也就是说,我不确定多重封面的事情。最小覆盖和规范覆盖之间的唯一区别是规范覆盖“允许”在右侧具有多个属性,而最小覆盖不是[source]。在这种(微不足道的)意义上,您显然可以以不同的方式编写相同的集合 FD。

另一方面,我不知道是否可以有两组不同的最小封面具有相同的封闭。我会说这是不可能的,但这只是我的直觉,我没有支持它的元素。

于 2014-05-17T19:16:57.950 回答
1

例如。

X→YZ
Y→XZ
Z→XY

用不止一种最小集合的可能性检查这个答案

1:

X→Y,
Y→Z,
Z→X

2:

Z→Y,
Y→X,
X→Z
于 2014-12-16T08:32:19.987 回答