Normalisierung
Normalformen
-
1. Normalform
- nur atomare Attribute
-
2. Normalform
- 1NF und
- Jedes nicht zum Primärschlüssel gehörende Attribut ist vom Primärschlüssel voll funktional abhängig
- nicht in 2NF ist also:
- Schlüssel:
AB
- FD:
A -> C
- weil
C
nur vonA
, also nicht dem gesamten Schlüssel abhängt
- Schlüssel:
-
3. Normalform
- 2NF und
- Keine transitiven Abhängigkeiten zwischen einem Schlüssel und Nicht-Schlüsselattributen
- nicht in 3NF ist also:
- Schlüssel:
A
- FDs:
A -> B
undB -> C
- weil
C
kein Schlüsselattribut ist und transitiv vonA
abhängt
- Schlüssel:
-
Boyce-Codd-Normalform
- 3NF und
- auch keine transitiven Abhängigkeiten über Schlüsselattribute
-
R1 = {C, D, E}, F1 = {DE → C, C → D}, K1 = {CE, DE}
erfüllt die 3NF, aber nicht die BCNF -
R2 = {D, A, C, F }, F2 = {D → ACF, AC → D}, K2 = {{D}, {A, C}}
erfüllt die BCNF, aber nicht die 4NF -
Was ist der Unterschied zwischen diesen beiden? Warum erfüllt die eine die BCNF und die andere nicht???
- In
R1
istC
kein Superkey, inR2
sind diesD
undAC
jedoch schon. Für die BCNF muss die linke Seite jedes FDs ein Superkey sein.
- In
Syntheseverfahren
- dient zur Erreichung der 3NF
- garantiert Verbundtreue und Abhängigkeitstreue
- Verbundtreue heißt, dass wenn man alle Relationen JOINt, man wieder die Ausgangsrelation erhält
- Vorgehen
- Sortiere die FDs
- absteigend nach Anzahl der beteiligten Attribute
- absteigend nach der länge der linken Seite
- führe für jede FD folgende Schritte durch
- gibt es eine Relation, die bereits alle Attribute der FD enthält?
- ja: füge die FD zu dieser Relation hinzu
- nein: erstelle eine neue Relation mit der FD und all seinen Attributen
- gibt es eine Relation, die bereits alle Attribute der FD enthält?
- gibt es eine Relation, die den gesamten Schlüssel enthält?
- wenn nein, erstelle eine solche
- Sortiere die FDs
Dekompositionsverfahren
- dient zur Erreichung der BCNF
- garantiert Verbundtreue, nicht aber Abhängigkeitstreue
- Vorgehen
- Wähle eine FD, die die BCNF verletzt (weil die linke Seite kein Superkey ist)
- Teile die Relation auf in
- alle Attribute außer der, der rechten Seite der FD
- alle Attribute der FD
- füge die betrachtete FD der zweiten Relation und alle anderen FDs der transitiven Hülle, deren Attribute in der ersten Relation enthalten sind, der ersten Relation hinzu
- wiederhole dies solange, bis alle Relationen die BCNF erfüllen
- abhängig von der Reihenfolge der betrachteten FDs ergeben sich unterschiedliche Ergebnisse
No Comments