Synthesealgorithmus
Der Synthesealgorithmus beschreibt, wie aus einem relationalen Datenbankschema ein Relationenschema der dritten Normalform wird. Das besondere an diesem Algorithmus ist, dass er im Gegensatz zu der intuitiven Zerlegung des Schemas in die dritte Normalform die Abhängigkeitserhaltung in jedem Fall garantiert.
Ein alternativer Algorithmus ist der Zerlegungsalgorithmus, welcher in die Boyce-Codd-Normalform (BCNF) transferiert. Dabei können allerdings Abhängigkeiten verloren gehen (nicht abhängigkeitstreu). Er ist insofern eine Alternative, als dass jedes relationale Schema, welches in BCNF transformiert wird, dann auch automatisch in dritter Normalform vorliegt.
Voraussetzung
Es müssen alle funktionalen 
Abhängigkeiten  
der zu zerlegenden Relation 
 
unter den Attributen 
bekannt sein. 
Beispiel:
Der Synthesealgorithmus besteht dann aus vier Schritten:
- Reduktion von , d.h. die Bestimmung der kanonischen Überdeckung. 
- Erzeugen der neuen Relationenschemata aus der kanonischen Überdeckung.
- Ggf. die Hinzunahme einer Relation, die nur den Ursprungsschlüssel enthält.
- Elimination der Schemata, die in einem anderen Schema enthalten sind.
Reduktion
Dies wird auch die Berechnung der kanonischen Überdeckung genannt.
1. Schritt: Linksreduktion
Für alle   
ersetze 
 
 durch 
 
, falls 
 
schon durch 
 
determiniert ist. 
Die obige Bedingung lässt sich testen, indem man überprüft, ob  
ist, 
wobei F die Menge der funktionalen Abhängigkeiten bezeichnet. Falls dies 
zutrifft, kann 
 
aus 
 
entfernt werden. 
Beispiel:  
In der zweiten Relation fällt E weg, da sich E in der Attributhülle 
von A ( 
= {A,B,D,E}) befindet. In der letzten Relation fällt C weg, wegen 
 
= {B,C,D,E,F}. Man kann es auch so formulieren: E wird in 
 
nicht benötigt, um B,D zu erreichen. 
Lösung:
2. Schritt: Rechtsreduktion
Für alle  
ersetze 
 
durch 
, 
falls 
 
schon transitiv durch 
 
bestimmt ist. 
Die obige Bedingung lässt sich überprüfen, indem man für jedes  
testet, ob 
 
ist. Falls dies zutrifft, kann 
 
aus 
 
entfernt werden. 
An obigem Beispiel:
In der ersten Relation fällt B weg, da  
= {A,B,D,E}. In der vierten Relation fällt ebenfalls das B weg, wegen 
 
= {B,C,D,E,F}. 
3. Schritt: Leere Klauseln
Eliminiere Klauseln der Form  
Im Beispiel aus Schritt 2 gibt es keine Abhängigkeiten mit leerer, rechter Seite. Also gibt es in diesem Fall hier nichts zu tun.
4. Schritt: Zusammenfassen
Fasse Formeln  
zu 
 
zusammen. 
Im Beispiel fassen wir nun Ausdrücke mit gleicher linker Seite zusammen:
Neues Relationenschema
Aus allen Ψ  
Γ wird R(Ψ, Γ). 
Zusätzlich muss ein neuer Schlüssel gefunden werden. Gegebenenfalls muss eine neue Relation erzeugt werden. Überflüssige Relationen können gestrichen werden, wenn diese in anderen enthalten sind.
Am Beispiel:
- (A,B,D,E) # A ist Primärschlüssel 
- (B,C,D,F) # F ist Primärschlüssel 
- (C,D,E,F) # CD ist Primärschlüssel (Die Elemente dieser Relation sind zwar schon durch - und - gegeben, jedoch muss zur Abhängigkeitserhaltung diese weiterhin aufgeführt werden, es dürfte nur entfernt werden, wenn eine Relation vollends in einer anderen enthalten wäre. Dies ist jedoch nicht möglich, da diese Fälle vorher durch die Links- und Rechtsreduktion entfernt wurden.) 
Hinzufügen einer Relation
Nun muss durch Hinzunahme einer Relation eine Beziehung zwischen , 
 
und 
 
hergestellt werden. Dies wird durch eine Relation 
 
ermöglicht, die nur den Ursprungsschlüssel AF (
={A,B,C,D,E,F}) 
enthält. Wir erhalten ein Schema in der 3. Normalform wie folgt: 
- (A,B,D,E) 
- (B,C,D,F) 
- (C,D,E,F) 
- (A,F), wobei A und F jeweils Fremdschlüssel darstellen und zusammengenommen den Primärschlüssel von - erzeugen. 
Formaler Algorithmus
Eingabe: universelles Schema R=(U,F)Ausgabe: 3. Normalform D von R
B:=Reduktion(F)
R:={}
i:=0
for each  mit
 mit  i := i+1
   i := i+1
    
    
    if
if  i: = i+1
   i: = i+1
    
 

 Wikipedia.de
  
    Wikipedia.de

© biancahoegel.de
Datum der letzten Änderung: Jena, den: 15.05. 2020