문제

How do I create a minimal cover of FDs by removing redundant attributes?

For example, given this FDs:

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

The minimal cover is

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

I'll be glad if someone can explain the steps to me :)

도움이 되었습니까?

해결책

I'll explain the steps and add the output up to each step.

  1. A1 ⟶ A3 is already minimal. So leave it that way.
    A1 ⟶ A3
    
  2. A1A2 ⟶ A3 means that you given A1 and A2 you can identify A3. As you know from the previous step that given A1 you can already identify A3 then this doesn't actually add any extra information. Note that it is not logically correct to conclude that A2 ⟶ A3. So we can remove this whole FD as it is redundant.
    A1 ⟶ A3
    
  3. A3 ⟶ A4A6 means that A3 ⟶ A4 and A3 ⟶ A6. So we remove this FD and split it into 2.
    A1 ⟶ A3
    A3 ⟶ A4
    A3 ⟶ A6
    
  4. A3A4 ⟶ A6 is similar to step 2. As A3 ⟶ A6 then A3A4 ⟶ A6 doesn't add any additional information making it redundant.
    A1 ⟶ A3
    A3 ⟶ A4
    A3 ⟶ A6
    
  5. A3A5 ⟶ A1A2 is similar to step 3. We can just split them into 2 different FDs A3A5 ⟶ A1 and A3A5 ⟶ A2. This is minimal as there are no other FDs such as A3 ⟶ A1.
    A1 ⟶ A3
    A3 ⟶ A4
    A3 ⟶ A6
    A3A5 ⟶ A1
    A3A5 ⟶ A2
    
  6. A5A6 ⟶ A3 is already minimal.
    A1 ⟶ A3
    A3 ⟶ A4
    A3 ⟶ A6
    A3A5 ⟶ A1
    A3A5 ⟶ A2
    A5A6 ⟶ A3
    
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top