功能依赖性推理规则

时间:2015-05-13 18:00:57

标签: database normalization database-normalization functional-dependencies

我与这些依赖关系存在这种关系:

R(A,B,C,D,E,F,G,H)
Fd1: A → B,C,D
Fd2: A,D → E  
Fd3: E,F,G → H
Fd4: F → G,H

我的问题是:此集合中存在冗余依赖关系,我想知道如何识别此冗余的过程。根据解决方案的答案是FD3但是我不知道这是如何实现的:有人可以解释一下吗?

1 个答案:

答案 0 :(得分:1)

删除任何冗余依赖项的方法之一是找到 最小化 。要找到最小封面 -

  • 首先确保单身右手边(RHS)
  • 第二次删除任何无关的左侧(LHS)属性
  • 第三次删除任何冗余的功能依赖

例如:在您的关系中R -

首先确保单身RHS。所以现在我们有 -

A->乙
A-&以及c
A-> d
A-&GT,E
EFG-> H
F-&GT克
F-> H

第二次我们删除任何无关的LHS属性。只有一个FD具有多个LHS属性( EFG - > H )。如果 E + E-closure F ,我们可以删除 F FD,反之亦然。这里F + G 所以我们删除 G

第三次现在我们可以检查多余的依赖项了!要检查每个FD( X-> Y ),我们会删除该依赖项,看看我们是否仍然可以从 X 获取 Y 。例如,在我们隐藏FD EF - > H 的情况下,我们仍然可以看到 H 来自 F 使用最后一个FD( F-> H )。因此,我们可以删除FD EF - > H 。所以现在我们有 -

A->乙
A-&以及c
A-> d
A-&GT,E
F-&GT克
F-> H

这是 minimal cover

最后,我们可以将FD与相同的LHS结合起来,这样我们终于有了 -

A-> BCDE
F-> GH

这应该是您的最终答案,没有多余的依赖关系。在你的情况下,因为你必须选择一个给定的FD作为冗余,然后 FD3 将是我们将其减少的答案。