如何从一组功能依赖项中删除冗余属性?

时间:2013-11-09 06:31:07

标签: database database-normalization functional-dependencies

如何通过删除冗余属性来创建FD的最小封面?

例如,给定这个FD:

A1 ⟶ A3
A1A2 ⟶ A3
A3 ⟶ A4A6
A3A4 ⟶ A6
A3A5 ⟶ A1A2
A5A6 ⟶ A3

最小的封面是

A1 ⟶ A3
A3 ⟶ A4
A3 ⟶ A6
A3A5 ⟶ A1
A3A5 ⟶ A2
A5A6 ⟶ A3

如果有人能向我解释这些步骤,我会很高兴的。)

1 个答案:

答案 0 :(得分:3)

我将解释步骤并将输出添加到每个步骤。

  1. A1⟶A3已经很小了。所以保持这种方式。
    A1 ⟶ A3
    
  2. A1A2⟶A3表示你给A1和A2你可以识别A3。正如您在上一步中所知,给定A1您已经识别出A3然后实际上并没有添加任何额外信息。请注意,结论A2⟶A3在逻辑上是不正确的。所以我们可以删除整个FD,因为它是多余的。
    A1 ⟶ A3
    
  3. A3⟶A4A6表示A3⟶A4和A3⟶A6。所以我们删除这个FD并将其拆分为2。
    A1 ⟶ A3
    A3 ⟶ A4
    A3 ⟶ A6
    
  4. A3A4⟶A6与步骤2类似。由于A3⟶A6,A3A4⟶A6不会添加任何其他信息,使其成为冗余。
    A1 ⟶ A3
    A3 ⟶ A4
    A3 ⟶ A6
    
  5. A3A5⟶A1A2与步骤3类似。我们可以将它们分成2个不同的FDA3A5⟶A1和A3A5⟶A2。这是最小的,因为没有其他FD,例如A3⟶A1。
    A1 ⟶ A3
    A3 ⟶ A4
    A3 ⟶ A6
    A3A5 ⟶ A1
    A3A5 ⟶ A2
    
  6. A5A6⟶A3已经很小了。
    A1 ⟶ A3
    A3 ⟶ A4
    A3 ⟶ A6
    A3A5 ⟶ A1
    A3A5 ⟶ A2
    A5A6 ⟶ A3