Synthesealgorithmus
Dieser Synthesealgorithmus beschreibt, wie aus einem Datenbankentwurf ein Relationenschema der 3.Normalform wird.
Vorraussetzung: Es müssen alle funktionalen Abhängigkeiten unter den Attributen bekannt sein.
Beispiel
Relation(A,B,C,D,E) A -> B,C A,D -> B B,D -> E A,D -> E
1. Reduktion
1.1
Für alle ψ ∈ Ψ ersetze Ψ -> Γ durch ( Ψ - ψ ) -> Γ, falls B schon durch ( Ψ - ψ ) -> Γ determinieert ist.
Für alle γ ∈ Γ ersetze Ψ -> Γ durch Ψ -> ( Γ - γ ), falls γ schon transitiv durch Ψ bestimmt ist.
Beispiel
Relation(A,B,C,D,E) A -> B,C A,{} -> B # D fällt weg (Linksreduktion) B,D -> E A,D -> {} # E fällt weg (Rechtsreduktion)
1.2 Zusammenfassung
Alle rechtsleeren Abhängigkeiten können entfernt werden.
Alle funktionalen Abhängigkeiten mit gleicher linker Seite
können zusammengefasst werden.
Beispiel
Relation(A,B,C,D,E) A -> B,C B,D -> E
2.Neues Relationenschema
Aus allen Ψ -> Γ wird R(Ψ, Γ).
Zusätzlich muss ein neuer Schlüssel gefunden werden, der gegebenenfalls
muss eine neue Relation erzeugt werden.
Überflüssige Relationen können gestrichen werden.
Beispiel
Relation(A,B,C) # A ist Primärschlüssel Relation(B,D,E) # B ist Primärschlüssel Relation(A,B) # A,B sind Primärschlüssel