Web Science & Technologies University of Koblenz Landau, Germany Grundlagen der Datenbanken (Teil 2) Dr. Gerd Gröner Wintersemester 2013/14
Gliederung Funktionale Abhängigkeiten Dekomposition der Relationenschemata: Verlustlosigkeit und Abhängigkeitsbewahrung Normalformen Erste Normalform Zweite Normalform Dritte Normalform, Zerlegung mit dem Synthesealgorithmus Boyce Codd Normalform (BCNF), Dekompositions- Algorithmus 2 2
Wozu Normalformen? Bisherige Beobachtungen: Auftreten von Anomalien Unnötiger Speicherbedarf Redundanzen Mögliche Probleme: Änderungen führen zu inkonsistenten Daten Idee: Normalisierung Aufteilung von Attributen einer Relation auf mehrere Relationen Vorgehensweise: Normalisierungsregeln Ansatz (nach Codd): Redundanzen sind vermeidbar, wenn FDs nur noch von Schlüsselkandidaten ausgehen 3
Normalformen: informeller Überblick 1NF: Das Modell ist strikt relational 2NF: 3NF: BCNF: Keine Abhängigkeiten von Teilschlüsseln Keine Kettenabhängigkeiten Keine Abhängigkeiten von Teilschlüssel, auch nicht in Kandidatenschlüssel 4NF: 5NF: Beschreibt mehrwertige Abhängigkeiten Relation lässt sich nicht weiter aufspalten, ohne dass Information verloren geht 4
Erste Normal Nur atomare Domänen Eltern Vater Mutter Kinder Johann Martha {Else, Lucie} Johann Maria {Theo, Josef} Heinz Martha {Cleo} 1NF Eltern Vater Mutter Kind Johann Martha Else Johann Martha Lucie Johann Maria Theo Johann Maria Josef Heinz Martha Cleo 5
Exkurs: NF2-Relationen Non-First Normal-Form-Relationen Geschachtelte Relationen (Oracle: Nested Tables) Eltern Vater Mutter Kinder Johann Johann Heinz Martha Maria Martha KName Else 5 Lucie 3 Theo 3 Josef 1 Cleo 9 KAlter 6
Zweite Normalform (2NF) Eine Relation R mit zugehörigen FDs F R ist in zweiter Normalform, falls kein Nichtschlüssel-Attribut A R voll funktional abhängig ist von einer Teilmenge eines Kandidatenschlüssels. α R ist StudentenBelegung Kandidatenschlüssel: α R MatrNr VorlNr Name Semester (ist minimal) 26120 5001 Fichte 10 27550 5001 Schopenhauer 6 27550 4052 Schopenhauer 6 28106 5041 Carnap 3 28106 5052 Carnap 3 28106 5216 Carnap 3 28106 5259 Carnap 3......... Studentenbelegung ist nicht in 2NF, denn es gilt: {MatrNr} {Name} {MatrNr} {Semester} ABER: {MatrNr, VorlNr} ist Kandidatenschlüssel (minimal), nicht {MatrNr} 7
Zweite Normalform: Beispiel MatrNr Name VorlNr Semester Einfügeanomalie: Was macht man mit Studenten, die keine Vorlesungen hören? Updateanomalien: Wenn z.b. Carnap ins vierte Semester kommt, muss man sicherstellen, dass alle vier Tupel geändert werden. Löschanomalie: Was passiert wenn Fichte ihre einzige Vorlesung absagt? Lösung: Zerlegung in zwei Relationen hören: {[MatrNr, VorlNr]} Studenten: {[MatrNr, Name, Semester]} Beide Relationen sind in 2NF 8
Dritte Normalform (3NF) Ein Relationenschema R ist in dritter Normalform, wenn es in 2NF ist und kein Nichtschlüsselattribut transitiv von einem Schlüsselkandidaten abhängt. Dies bedeutet: R ist in dritter Normalform, wenn für jede für R geltende funktionale Abhängigkeit der Form α B mit B R mindestens eine von drei Bedingungen gilt: B α, d.h., die FD ist trivial oder Das Attribut B ist ein Schlüsselattribut oder α ist Superschlüssel von R 9
Dritte Normalform (3NF) Studenten MatrNr Fachbereich Standort Name Semester 26120 Informatik Koblenz Fichte 4 27550 Informatik Koblenz Meyer 8 27551 Psychologie Landau Carnap 5 Studenten ist nicht in 3NF {Fachbereich} {Standort} 10
Bsp. für Nicht 3NF (Wdh.) ProfessorenAdr: {[PersNr, Name, Rang, Raum, Ort, Straße, PLZ, Vorwahl, BLand, EW, Landesregierung]} Rang PersNr Name Straße PLZ Raum Ort Kandidatenschlüssel? BLand Vorwahl - {PersNr} - {Raum} Landesregierung EW 11
Zerlegung von R Synthesealgorithmus Ziel: Zerlegung von R mit vorgegebenen FDs F in R 1,..., R n, wobei folgende Kriterien erfüllt sind: Zerlegung von R in R 1,..., R n erfolgt verlustlos Zerlegung R 1,..., R n ist abhängigkeitserhaltend Alle R 1,..., R n sind in 3NF 12
Synthesealgorithmus 1) Bestimme die kanonische Überdeckung Fc zu F. Wiederholung: (a) Linksreduktion (b) Rechtsreduktion (c) Entfernung von FDs der Form α (d) Zusammenfassung gleicher linker Seiten 2) Für jede funktionale Abhängigkeit α β Fc: Sei R α := α β Ordne R α die FDs F α := {α' β' Fc α' β' R α } zu. 3) Falls eines der in Schritt 2. erzeugten Schemata einen Kandidatenschlüssel von R bzgl. Fc enthält, sind wir fertig. Sonst wähle einen Kandidatenschlüssel k R aus und definiere folgendes Schema: R k := k F k := 4) Eliminiere diejenigen Schemata R α, die in einem anderen Relationenschema Rα' enthalten sind, d.h., R α R α' d.h. aus jeder FD wird ein Schema UND Zuordnung von FDs d.h. erzeuge ein Schema zum Verknüpfen der Teilschemata 13
Anwendung Synthesealgorithmus ProfessorenAdr: {[PersNr, Name, Rang, Raum, Ort, Straße, PLZ, Vorwahl, BLand, EW, Landesregierung]} FDs von F C (nach Schritt 1): fd1: {PersNr} {Name, Rang, Raum, Ort, Straße, BLand} fd2: {Raum} {PersNr} fd3: {Straße, BLand, Ort} {PLZ} fd4: {Ort, BLand} {EW, Vorwahl} fd5: {BLand} {Landesregierung} fd6: {PLZ} {BLand, Ort In Schritt 2 werden diese 6 FDs sukzessive behandelt: Aus fd1 folgt Schemata: Professoren: {[PersNr, Name, Rang, Raum, Ort, Straße, BLand]} Mit fd1 und fd2 (fd2 selbst liefert keine neuen FDs (sind hier schon enthalten)) Aus fd3 folgt: PLZverzeichnis: {[Straße, BLand, Ort, PLZ]} Mit zugeordneten Fds fd3 und fd6 Aus fd4 resultiert: OrteVerzeichnis: {[Ort, BLand, EW, Vorwahl]} (mit nur einer zugeordneten FD nämlich fd 4 selbst) Aus fd5 folgt: Regierungen: {[BLand, Landesregierung]} Mit nur dieser FD selbst fd 6 liefert nichts neues (alle Attribute in fd6 kommen bereits in Relation PLZverzeichnis vor) In Schritt 3 passiert nichts neues. Kandidatenschlüssel {PersNr} (oder {Raum}) ist bereits Schlüssel in einer der Relationen (nämlich in Professoren). 14
Boyce-Codd-Normalform (BCNF) BCNF ist eine weitere Verschärfung der 3NF Ziel: Informationseinheiten (Fakten) nur einmal zu speichern. Ein Relationenschema R mit FDs F ist in BCNF, wenn für jede für R geltende funktionale Abhängigkeit der Form α β F gilt: entweder β α, d.h., die Abhängigkeit ist trivial, oder α ist ein Superschlüssel von R D.h. in BCNF gilt, dass alle FDs durch Schlüssel impliziert sind. Man kann jede Relation verlustlos in BCNF-Relationen zerlegen Manchmal lässt sich dabei die Abhängigkeiterhaltung aber nicht erzielen 15
Beispiel: Relation in 3NF, aber nicht in BCNF Städte: {[Ort, BLand, Ministerpräsident, EW]} Geltende FDs: fd1: {Ort, BLand} {EW} fd2: {BLand} {Ministerpräsident} fd3: {Ministerpräsident} {BLand} Kandidatenschlüssel: {Ort, BLand} {Ort, Ministerpräsident} Die rechten Seiten von fd2 und fd3 sind bereits in Schlüsselkandidaten enthalten. ABER: linke Seiten von fd2 und fd3 sind keine Superschlüssel! Diese FDs werden nicht durch Schlüssel impliziert Folge: Wir könnten mehrfach abspeichern, wer welches BLand regiert! 16
Zerlegung in BCNF-Teilrelationen Man kann grundsätzlich jedes Relationenschema R mit funktionalen Anhängigkeiten F so in R 1,, R n zerlegen, dass gilt: R 1,, R n ist eine verlustlose Zerlegung von R Alle R 1,, R n sind in BCNF Es kann leider nicht immer erreicht werden, dass die Zerlegung R 1,, R n abhängigkeitserhaltend ist 17
Dekompositionsalgorithmus Starte mit Z = {R} Solange es noch ein Relationenschema R i in Z gibt, das nicht in BCNF ist, mache folgendes: Es gibt also eine für R i geltende nicht-triviale funktionale Abhängigkeit (α β) mit α β = Ø (α R i ) Finde eine solche FD Man sollte sie so wählen, dass β alle von α funktional abhängigen Attribute B (R i α) enthält, damit der Dekompositionsalgorithmus möglichst schnell terminiert. Zerlege R i in R i1 := α β und R i2 := R i β Entferne R i aus Z und füge R i1 und R i2 ein, also Z := (Z {R i }) {R i1 } {R i2 } 18
Dekompositionsalgorithmus (2) das Prinzip des Dekompositionsalgorithms Zerlegung von Relationenschema R i in R i1 und R i2 entlang der FD α β R i1 R i2 β α R i ( α β) 19
Dekomposition der Relation Städte Städte: {[Ort, BLand, Ministerpräsident, EW]} Geltende FDs: {BLand} {Ministerpräsident} {Ort, BLand} {EW} {Ministerpräsident} {Bland} Zerlegung entlang FD {BLand} {Ministerpräsident}: R i1 : Regierungen: {[BLand, Ministerpräsident]} R i2 : Städte: {[Ort, BLand, EW]} Zerlegung ist verlustlos und auch abhängigkeitserhaltend 20
Dekomposition der Relation Städte veranschaulicht Zerlegung von Relationenschema {[Ort, BLand, Ministerpräsident, EW]} in R i1 und R i2 entlang D Zerlegung entlang FD {BLand} {Ministerpräsident}: R i1 R i2 β α R i ( α β) {Ministerpräsident} {BLand} {Ort, EW} 21
Dekomposition des PLZverzeichnis in BCNF fd2 PLZverzeichnis: {[Straße, Ort, BLand, PLZ]} verletzt BCNF Zerlegung entlang fd2 Funktionale Abhängigkeiten: {PLZ} {Ort, BLand} {Straße, Ort, BLand} {PLZ} Betrachte die Zerlegung Orte: {[PLZ, Ort, BLand]} Straßen: {[PLZ, Straße]} Diese Zerlegung ist verlustlos aber Nicht abhängigkeitserhaltend fd1 oft Abwägung zwischen 3NF und BCNF mit Abhängigkeitsverlust 22
Zerlegung der Relation PLZverzeichnis PLZverzeichnis Ort BLand Straße PLZ Frankfurt Hessen Goethestrasse 60313 Frankfurt Hessen Galgenstrasse 60437 Frankfurt Brandenburg Goethestrasse 15234 Straßen := π [PLZ, Straße] (PLZverzeichnis) PLZ Straße 15234 Goethestrasse 60313 Goethestrasse 15235 Goethestrasse 60437 Galgenstrasse Orte := π [Ort, BLand] (PLZverzeichnis) Ort BLand PLZ Frankfurt Hessen 60313 Frankfurt Hessen 60437 Frankfurt Brandenburg 15234 Frankfurt Brandenburg 15235 23
Zerlegung der Relation PLZverzeichnis Straßen := π [PLZ, Straße] (PLZverzeichnis) PLZ Straße 15234 Goethestrasse 60313 Goethestrasse 15235 Goethestrasse 60437 Galgenstrasse Strassen Orte Orte := π [Ort, BLand] (PLZverzeichnis) Ort BLand PLZ Frankfurt Hessen 60313 Frankfurt Hessen 60437 Frankfurt Brandenburg 15234 Frankfurt Brandenburg 15235 Ort BLand Straße PLZ Frankfurt Hessen Goethestrasse 60313 Frankfurt Hessen Galgenstrasse 60437 Frankfurt Brandenburg Goethestrasse 15235 Frankfurt Brandenburg Goethestrasse 15234 Die Relationale FD Entwurfstheorie {Straße, Ort, BLand} {PLZ} wird verletzt 24
Fragen? groener@uni-koblenz.de http://west.uni-koblenz.de/teaching/ws1314/gldb1314 25