如何找到函数依赖的无关属性?

How to find the extraneous attributes of functional dependency?

我有一个 r(A,B,C,D,E,F) 满足的关系:

AB->C
C->A
BC->D
ACD->B
BE->C
CE->FA
CF->BD
D->EF

我需要找到这个关系的规范覆盖?

我知道找到规范封面的算法。然而在算法中,我们需要找到无关的属性。有没有算法可以找到无关的属性?

查找无关属性的算法如下:

let F the initial set of functional dependencies
assume that each dependency F is in the form A1, A2, ..., An -> B
for each functional dependency A1, A2, ..., An -> B in F with n > 1
    for each Ai
      if B ∈ ({A1, A2, ..., An} - Ai)+ 
         then Ai is an extraneous attribute and must be removed from the left hand side

请注意,剩余属性的闭包必须通过考虑所有 F 的依赖关系来计算,包括正在检查的依赖关系(这可能违反直觉)。

例如,将此算法应用于您的示例,从依赖项开始:

{ A B → C
  A C D → B
  B C → D
  B E → C
  C → A
  C E → A
  C E → F
  C F → B
  C F → D
  D → E
  D → F }

A C D → B中,A{C D}+ = (A B C D E F)以来是外来的,而在C E → A中,E{C}+ = (A C)以来是外来的。