- 1. Normalform
- 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 von A, also nicht dem gesamten Schlüssel abhängt
- 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 und B -> C
- weil
C kein Schlüsselattribut ist und transitiv von A abhängt
- 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 ist C kein Superkey, in R2 sind dies D und AC jedoch schon. Für die BCNF muss die linke Seite jedes FDs ein Superkey sein.
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 den gesamten Schlüssel enthält?
- wenn nein, erstelle eine solche
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