Rückblick: Relationale Entwurfstheorie Redundanzen führen zu Anomalien beim Einfügen, Löschen und Ändern Gute Relationenschemata vermeiden Redundanzen und damit Anomalien Funktionale Abhängigkeiten zwischen Attributmengen als zentraler Begriff Relationale Normalformen charakterisieren Güte eines Relationenschemas 34
Motivation Relationale Normalformen charakterisieren Güte eines Relationenschemas Wir haben gesehen, wie man feststellen kann, in welcher Normalform sich eine Relation befindet und wie man, zumindest in einfachen Fällen, die dritte Normalform irgendwie durch Zerlegung erreichen kann Heute: Systematische Vorgehensweise zum Erreichen der dritten Normalform durch Zerlegung anhand funktionaler Abhängigkeiten 35
55 Bestimmung funktionaler Abhängigkeiten Wie lassen sich alle für eine Relation R geltenden funktionalen Abhängigkeiten bestimmen? Vorlesungsplan PersNr Vorname Name Büro Fach VorlNr Titel SWS 101101 Donald Knuth 2781 Informatik 101 Informatikgrundlagen 4 101101 Donald Knuth 2781 Informatik 110 Datenbanken 4 231011 Albert Einstein 3141 Physik 201 Physik 1 4 231011 Albert Einstein 3141 Physik 202 Physik 2 4 Beispiel: Im Vorlesungsplan seien die beiden folgenden funktionalen Abhängigkeiten bestimmt worden (Variante 1) {PersNr} {Vorname, Name, Büro, Fach} {VorlNr} {Titel, SWS, PersNr} 36
Armstrong Axiome Armstrong Axiome sind Regeln zu Herleitung der Hülle einer Menge funktionaler Abhängigkeiten; hierzu seien α, β, γ und δ Teilmengen der Attribute einer Relation R i Reflexivität: Falls β eine Teilmenge von α ist, so gilt immer α β ii Verstärkung: Falls α β gilt, so gilt α γ β γ iii Transitivität: Falls α β und β δ gelten, so gilt auch α δ 37
Weitere Herleitungsregeln Folgende zusätzlichen Regeln zur Herleitung funktionaler Abhängigkeiten folgen aus der Definition der funktionalen Abhängigkeit und den Armstrong Axiomen iv Vereinigungsregel: Falls α β und α γ gelten, so gilt auch α β γ v Dekompositionsregel: Falls α β γ gilt, so gelten auch α β und α γ vi Pseudotransitivitätsregel: Falls α β und γ β δ gelten, so gilt auch α γ δ 38
Hülle funktionaler Abhängigkeiten Durch wiederholte Anwendung der Herleitungsregeln, lässt sich zu einer Menge funktionaler Abhängigkeiten F deren sogenannte Hülle (closure) F+ bestimmen Beispiel: Relation Studenten mit FA-Menge { {MatrNr} {Vorname, Name}, {MatrNr} {Name, Semester} } {MatrNr} {Vorname, Name, Semester} (iv) {MatrNr} {Vorname} (v) {MatrNr} {Name} (v) {MatrNr} {Semester} (v) {MatrNr, Vorname} {Semester, Vorname} (ii) 39
Äquivalenzen von FA-Mengen Zwei Mengen funktionaler Abhängigkeiten F und G heißen äquivalent, F G, wenn ihre Hüllen gleich sind, dh wenn F+ = G+ gilt Die Hülle einer Menge funktionaler Abhängigkeiten kann sehr groß werden; es ist selten praktikabel, diese vollständig zu berechnen 40
Attributhülle Oft reicht es aus zu bestimmen, welche Attribute funktional abhängig von einer Menge von Attributen α unter einer Menge funktionaler Abhängigkeiten F sind Beispiel: Wir können für eine Menge von Attributen α überprüfen, ob sie ein Superschlüssel ist, dh ob α sch(r) gilt; um danach zu überprüfen, ob es sich dabei auch um einen Kandidatenschlüssel handelt, müssen wir sicherstellen, dass sich α nicht verkleinern lässt 41
Attributhülle Attributhülle α+ zu einer Menge von Attributen α gemäß einer Menge F von funktionalen Abhängigkeiten ist die Menge aller Attribute, die von α funktional abhängig sind Attributhülle α+ = AttrHülle(F, α) wie folgt zu bestimmen initialisiere τ = α solange τ sich ändert für jede funktionale Abhängigkeit β γ in F wenn β τ gilt, dann τ = τ γ gib α+ = τ zurück 42
Kanonische Überdeckung Viele unterschiedliche Mengen funktionaler Abhängigkeiten können paarweise zueinander äquivalent sein Kanonische Überdeckung ist eine normalisierte Darstellung von Mengen funktionaler Abhängigkeiten, dh sind zwei solche Mengen zueinander äquivalent, so haben sie die gleiche kanonische Überdeckung Kanonische Überdeckung stellt Menge funktionaler Abhängigkeiten kompakt dar 43
Kanonische Überdeckung Kanonische Überdeckung F c zu einer Menge funktionaler Abhängigkeiten F hat folgende Eigenschaften F F c, dh F+ = F c + In F c existieren keine funktionalen Abhängigkeiten α β, so dass α oder β überflüssige Attribute enthalten A œ :(F c \ ( æ ) fi (( \{A}) æ )) F c B œ :(F c \ ( æ ) fi ( æ ( \{B}))) F c Jede linke Seite einer funktionalen Abhängigkeit in F c ist einzigartig, dh es gibt keine zwei funktionalen Abhängigkeiten α β und γ δ, so dass α = γ gilt (immer erreichbar durch wiederholte Anwendung von iii) 44
Kanonische Überdeckung Kanonische Überdeckung F c zu einer Menge funktionaler Abhängigkeiten F lässt sich wie folgt bestimmen Führe Linksreduktion für jede FA α β in F durch; überprüfe für alle A α, ob A überflüssig ist, dh AttrHülle(F, \{A}) Führe Rechtsreduktion für jede verbliebene FA α β durch; überprüfe für alle B β, ob B überflüssig ist B œ AttrHülle((F \{ æ }) fi { æ ( \{B})}, ) Entferne FAen der Form α, die evtl entstanden sind Fasse FAen der Form α β 1,, α β n mittels der Vereinigungsregel (iv) zu α β 1 β n zusammen 45
Übung zur kanonischen Überdeckung Vorlesungsplan mit folgenden funktionalen Abhängigkeiten unter Annahme von einem Professor pro Vorlesung {VorlNr, PersNr} {Name, Vorname, Fach, Titel} {VorlNr} {Titel, SWS, PersNr} {PersNr} {Name, Vorname, Fach} Nach Linksreduktion {VorlNr} {Name, Vorname, Fach, Titel} {VorlNr} {Titel, SWS, PersNr} {PersNr} {Name, Vorname, Fach} 46
Übung zur kanonischen Überdeckung Nach Rechtsreduktion {VorlNr} {} {VorlNr} {Titel, SWS, PersNr} {PersNr} {Name, Vorname, Fach} Nach Eliminierung von FAen {VorlNr} {Titel, SWS, PersNr} {PersNr} {Name, Vorname, Fach} 47
56 Zerlegung von Relationen Wir haben bereits gesehen, dass man höhere relationale Normalformen durch Zerlegung erreichen kann Zerlegung einer Relation ist nur dann zulässig, wenn bestimmte Korrektheitskriterien erfüllt sind (zb kein Verlust von Informationen) Systematische Vorgehensweise zum Zerlegen einer Relation anhand von funktionalen Abhängigen, um die dritte Normalform zu erreichen 48
Verlustlosigkeit Zerlegung einer Relation R in zwei Relationen R 1 und R 2, so dass sch(r) = sch(r 1 ) sch(r 2 ) ist verlustlos, wenn gilt R=R 1 ÛÙ R 2 Beispiel: Verlustbehaftete Zerlegung des Prüfungsplan Prüfungsplan VorlNr Datum Art 101 20022016 M 110 21022016 K 201 20022016 M 202 21022016 M VorlNr Prüfungen Datum = ÛÙ 101 20022016 110 21022016 201 20022016 202 21022016 Datum Arten Art 20022016 M 21022016 K 21022016 M 49
Abhängigkeitsbewahrung Zerlegen wir eine Relation R verlustlos in die Relationen R 1 und R 2, so können wir die ursprüngliche Relation R rekonstruieren als R=R 1 ÛÙ R 2 Zerlegung einer Relation R in R 1 und R 2 soll so erfolgen, dass wir funktionale Abhängigkeiten auf R 1 und R 2 überprüfen können, ohne R rekonstruieren zu müssen Intuitiv darf es keine funktionalen Abhängigkeiten geben, welche die beiden Relationen R 1 und R 2 überspannen 50
Abhängigkeitsbewahrung Beispiel: Relation Vorlesungsanmeldungen Vorlesungsanmeldungen MatrNr VorlNr Studiengang Titel 19889 101 PI Informatikgrundlagen 19889 110 PI Datenbanken 19999 101 PI Informatikgrundlagen 19999 111 PI Theoretische Informatik 20101 301 WI BWL 1 20202 303 WI VWL 1 Es gelten die folgenden funktionalen Abhängigkeiten {MatrNr} {Studiengang} (nur Vorlesungen in ihrem Studiengang) {VorlNr} {Studiengang, Titel} 51
Abhängigkeitsbewahrung Beispiel: Relation Vorlesungsanmeldungen Anmeldungen MatrNr 19889 101 19889 110 19999 101 19999 111 20101 301 20202 303 VorlNr Vorlesungen VorlNr Studiengang Titel 101 PI Informatikgrundlagen 110 PI Datenbanken 111 PI Theoretische Informatik 301 WI BWL 1 303 WI VWL 1 Zerlegung ist verlustfrei Zerlegung ist nicht abhängigkeitsbewahrend, da die funktionale Abhängigkeit {MatrNr} {Studiengang} nur nach Rekonstruktion der ursprünglichen Relation überprüft werden kann 52
57 3NF-Synthesealgorithmus Systematische Vorgehensweise, um eine Relation R anhand der gültigen funktionalen Abhängigkeiten F in Relationen R 1,, R n in dritter Normalform zu zerlegen 1 Bestimme kanonische Überdeckung F c F 2 Für jede funktionale Abhängigkeit α β F c, erstelle Relation R α mit sch(r α ) = α β und ordne R α alle FAen γ δ mit γ δ sch(r α ) zu 3 Falls keine der so erzeugten Relationen einen Kandidatenschlüssel von R enthält, erstelle Relation R κ mit Kandidatenschlüssel κ 4 Eliminiere Relationen R α, die in einer anderen Relation R β enthalten sind, dh sch(r α ) sch(r β ) 53
Übung zu 3NF-Synthesealgorithmus Vorlesungsplan mit folgenden funktionalen Abhängigkeiten unter Annahme von einem Professor pro Vorlesung {VorlNr, PersNr} {Name, Vorname, Fach, Titel} {VorlNr} {Titel, SWS, PersNr} {PersNr} {Name, Vorname, Fach} 1 Kanonische Überdeckung bereits bestimmt {VorlNr} {Titel, SWS, PersNr} {PersNr} {Name, Vorname, Fach} 2 Erstelle die beiden Relationen Vorlesungen : {[ VorlNr, Titel, SWS, PersNr ]} Professoren : {[ PersNr, Name, Vorname, Fach ]} 54
Übung zu 3NF-Synthesealgorithmus 3 Überprüfung auf Kandidatenschlüssel Vorlesungen enthält Kandidatenschlüssel {VorlNr} 4 Eliminiere Relationen es ist keine der beiden Relationen zu eliminieren 55
Zusammenfassung Armstrong Axiome zum Bestimmen aller funktionaler Abhängigkeiten Kanonische Überdeckung als kompakte, normalisierte Darstellung von Mengen funktionaler Abhängigkeiten Verlustlosigkeit und Abhängigkeitsbewahrung als Korrektheitskriterien für die Zerlegung von Relationen 3NF-Synthesealgorithmus zur Zerlegung in Relationen in dritter Normalform anhand von funktionaler Abhängigkeiten 56
Literatur [1] A Kemper und A Eickler: Datenbanksysteme Eine Einführung, De Gruyter Oldenbourg, 2015 (Kapitel 6) [2] G Saake, K-U Sattler und A Heuer: Datenbanken - Konzepte und Sprachen, mitp Professional, 2013 (Kapitel 6) 57