Funktionale Abhängigkeiten
Minimale Menge funktionaler Abhängigkeiten finden
- FDs (Functional Dependencies) rechte Seite aufteilen
-
A -> BC
wird zuA -> B, A -> C
-
- Linksreduktion
- Attribute auf der linken Seite, die von anderen Attributen auf der linken Seite abhängen werden entfernt
-
AB -> C, A -> B
wird zuA -> C, A -> B
- Ableitbare FDs entfernen
- Redundanz durch transitive Abhängigkeiten loswerden
-
A -> B, B -> C, A -> C
wird zuA -> B, B -> C
- FDs rechte Seite zusammenführen
-
A -> B, A -> C
wird zuA -> BC
-
Schlüsselmengen
- XL
- alle Attribute, die auf keiner rechten Seite vorkommen
- muss Teil jedes Schlüssels sein
- XR
- alle Attribute, die auf keiner linken Seite vorkommen
- ist nie Teil eines Schlüssels
- XB
- alle Attribute, die auf beiden Seiten vorkommen
- kann Teil eines Schlüssels sein
- Schlüsselkandidaten
- Alle Vereinigungsmengen von XL und allen Teilmengen von XB
- Ist ein Schlüsselkandidat tatsächlich ein Schlüssel?
- alle Attribute müssen teil der Attributhülle
X*
vom Schlüssel sein- Prüfen mit dem RAP-Algorithmus
-
Reflexivität
- Initialisierung
- alle Attribute des Schlüssels in
X*
-
Akkumulation
- Wähle eine FD, bei der alle Attribute der linken Seite bereits in
X*
sind - die Attribute der Rechten Seite sind von
X*
abhängig und somit jetzt auch in X* - wiederhole bis
X*
stabil
- Wähle eine FD, bei der alle Attribute der linken Seite bereits in
-
Projektion
- Umfasst
X*
alle Attribute?
- Umfasst
-
Reflexivität
- Prüfen mit dem RAP-Algorithmus
- der Schlüssel muss minimal sein
- deshalb mit den kleinsten Schlüsselkandidaten anfangen, die keine Teilmengen anderer noch nicht geprüfter Schlüsselkandidaten sind
- alle Attribute müssen teil der Attributhülle
No Comments