Datenbanken Relationale Entwurfstheorie Ralf Mller Marc Stelzner Universitt
Datenbanken Relationale Entwurfstheorie Ralf Möller, Marc Stelzner Universität zu Lübeck Institut für Informationssysteme
RDM: Anfragen Relationale Anfragesprachen im Überblick: Relationale Algebra Binäre Operationen: • Vereinigung R S • Differenz R S • Durchschnitt R S • Kartesisches Produkt R S • Join (Verbindung) R S Unäre Operationen: • Projektion x(R) • Selektion (R) mengenorientierte, deklarative, quantifizierte Ausdrücke Relationales Kalkül Tupelkalkül, Relationenkalkül SQL geschachtelte Mengenausdrücke Domänenkalkül select. . . from. . . where. . . 2
Wiederholung: „Schlechte“ Relationenschemata Prof. Vorl Pers. Nr Name Rang Raum Vorl. Nr Titel SWS 2125 Sokrates C 4 226 5041 Ethik 4 2125 Sokrates C 4 226 5049 Mäeutik 2 2125 Sokrates C 4 226 4052 Logik 4 . . 2132 Popper C 3 52 5259 Der Wiener Kreis 2 2137 Kant C 4 7 4630 Die 3 Kritiken 4 Update-Anomalien – Sokrates zieht um, von Raum 226 in R. 338. Was passiert? Einfüge-Anomalien – Neue/r Prof ohne Vorlesungen? Löschanomalien – Letzte Vorlesung einer/s Profs wird gelöscht? Was passiert? 3
Wiederholung: Funktionale Abhängigkeiten Schema – R = {A, B, C, D} Ausprägung R Seien R, R genau dann wenn r, s R mit r. = s. {A} {B} R A B C D {C, D } {B} a 4 b 2 c 4 d 3 a 1 b 1 c 1 d 1 Nicht: {B} {C} a 1 b 1 c 1 d 2 a 2 b 2 c 3 d 2 a 3 b 2 c 4 d 3 Notationskonvention: CD B 4
Wiederholung: Schlüssel R ist ein Super-Schlüssel, falls folgendes gilt: – R Wir nennen Super-Schlüssel, weil noch nichts darüber ausgesagt wird, daß der Schlüssel minimal ist voll funktional abhängig von genau dann wenn gilt – und – kann nicht mehr verkleinert werden, d. h. • A folgt, dass ( - {A}) nicht gilt, oder kürzer • A : (( - {A}) ) . Notation für volle funktionale Abhängigkeit: R ist ein Kandidaten-Schlüssel, falls folgendes gilt: – . R 5
Schlüsselbestimmung Städte Name BLand Vorwahl Frankfurt Hessen 069 650000 Frankfurt Brandenburg 0335 84000 München Bayern 089 1200000 Passau Bayern 0851 50000 . . Kandidatenschlüssel von Städte: – {Name, BLand} – {Name, Vorwahl} EW . . . Kandidatenschlüssel lassen sich nicht aus Beispielen bestimmen! Funktionale Abhängigkeiten zählen. Schlüssel sollen FDs umsetzen! Beachte, dass 2 kleinere Städte dieselbe Vorwahl haben können 6
Wiederholung: Bestimmung funktionaler Abhängigkeiten Professoren: {[Pers. Nr, Name, Rang, Raum, Ort, Straße, PLZ, Vorwahl, Bland, EW, Landesregierung]} – {Pers. Nr} {Pers. Nr, Name, Rang, Raum, Ort, Straße, PLZ, Vorwahl, Bland, EW, Landesregierung} – {Ort, BLand} {EW, Vorwahl} – {PLZ} {Bland, Ort, EW} – {Bland, Ort, Straße} {PLZ} – {Bland} {Landesregierung} – {Raum} {Pers. Nr} Zusätzliche Abhängigkeiten, die aus obigen abgeleitet werden können: – {Raum} {Pers. Nr, Name, Rang, Raum, Ort, Straße, PLZ, Vorwahl, Bland, EW, Landesregierung} – {PLZ} {Landesregierung} 7
Hülle Funktionaler Abhängigkeiten Sei F eine Menge von Funktionalen Abhängigkeiten (FDs) F+ bezeichnet die Menge aller aus F ableitbaren FDs und wird Hülle genannt. Im allgemeinen gibt es unterschiedliche Mengen von FDs, deren Hülle gleich sind. In diesem Fall schreiben wir: F 1 F 2 (F 1 und F 2 sind äquivalent) 8
Wie kann man F+ methodisch bestimmen? • Kalkül: Armstrong-Axiome William W. Armstrong, Dependency Structures of Data Base Relationships, IFIP Congress, 1974 Beeri, C. ; Dowd, M. ; Fagin, R. ; Statman, R. . On the Structure of Armstrong Relations for Functional Dependencies, Journal of the ACM 31, pp. 30– 46, 1984 9
Herleitung funktionaler Abhängigkeiten: Armstrong-Axiome Reflexivität – Falls eine Teilmenge von ist ( ), dann gilt immer . Insbesondere gilt immer . Verstärkung – Falls gilt, dann gilt auch . Hierbei stehe z. B. für . Transitivität – Falls und gilt, dann gilt auch . Diese drei Axiome sind vollständig und korrekt (ohne Beweis). Zusätzliche Axiome erleichtern die Herleitung: – Vereinigungsregel: • Wenn und gelten, dann gilt auch – Dekompositionsregel: • Wenn gilt, dann gelten auch und – Pseudotransitivitätsregel: • Wenn und d, dann gilt auch d 10
Armstrong Axiome • Der Kalkül, der sich durch sättigende Anwendung der Armstrong-Axiome ergibt, ist korrekt und vollständig • Beweisargumente: siehe Übung 11
Schlüsselbestimmung Manuelle Bestimmung der Kandidatenschlüssel • ist aufwendig und • bei vielen FDs fehleranfällig. Automatisierbar? 12
Bestimmung der Hülle einer Attributmenge Bei der Schlüsselbestimmung ist man nicht an der gesamten Hülle einer Menge F von FDs interessiert, sondern nur an der Menge von Attributen, die von gemäß F funktional bestimmt werden (sog. Attributhülle). Eingabe: eine Menge F von FDs und eine Menge von Attributen . Ausgabe: die vollständige Menge von Attributen +, für die gilt +. Attr. Hülle(F, ) – Erg : = – While (Änderungen an Erg) do Foreach FD in F do If Erg then Erg : = Erg – Ausgabe + = Erg 13
Nutzen der Attributhülle • Mit Hilfe der Attributhülle kann man bestimmen, ob eine Menge von Attributen einen Superschlüssel für ein Relationenschema R darstellt: • Bestimme + und prüfe ob + = R • Mit Hilfe der Attributhülle kann man die Kandidatenschlüssel für ein Relationenschema bestimmen: • Bestimme alle bzgl. Mengeninklusion minimalen Mengen , so dass + = R, und damit R 14
Herleitung von Relationenschemata aus FDs – {Pers. Nr} {Pers. Nr, Name, Rang, Raum, Ort, Straße, PLZ, Vorwahl, Bland, EW, Landesregierung} – {Ort, BLand} {EW, Vorwahl} – {PLZ} {Bland, Ort, EW} – {Bland, Ort, Straße} {PLZ} – {Bland} {Landesregierung} – {Raum} {Pers. Nr} Welche Relationenschemata sollen verwendet werden, so dass FDs durch Schlüsselbedingung geprüft werden können? • Professoren: {[Pers. Nr, Name, Rang, Raum, Ort, Straße, PLZ, Vorwahl, Bland, EW, Landesregierung]} ? ? ? • Für jede FD ein Schema? ? ? 15
Vermeidung von Redundanz • In den Daten: • Können wir doppelt repräsentierte Daten vermeiden? • In der Modellierung: • Sind einige der aufgeschriebenen FDs überflüssig? 16
Redundanzfreie Darstellung von FDs Kanonische Überdeckung • Fc heißt kanonische Überdeckung von F, wenn die folgenden Kriterien erfüllt sind: = Fc F, d. h. Fc+ = F+ = In Fc existieren keine FDs , die überflüssige Attribute enthalten. D. h. es muß folgendes gelten: • A : (Fc - ( ) (( - {A}) )) / Fc • B : (Fc - ( ) ( ( - {B}))) / Fc = Jede linke Seite einer funktionalen Abhängigkeit in Fc ist einzigartig. Dies kann durch sukzessive Anwendung der Vereinigungsregel auf FDs der Art und erzielt werden, so dass die beiden FDs durch ersetzt werden. 17
Berechnung der kanonischen Überdeckung Führe für jede FD F die Linksreduktion durch, also: – Überprüfe für alle A , ob A überflüssig ist, d. h. , ob • Attr. Hülle(F, - A) gilt. Falls dies der Fall ist, ersetze durch ( - A) . Führe für jede (verbliebene) FD die Rechtsreduktion durch, also: – Überprüfe für alle B , ob • B Attr. Hülle(F – ( ) ( ( - B)), ) gilt. Falls dies der Fall ist, ist B auf der rechten Seite überflüssig und kann eliminiert werden, d. h. ersetze durch ( –B). Entferne die FDs der Form , die im 2. Schritt möglicherweise entstanden sind. Fasse mittels der Vereinigungsregel FDs der Form 1, . . . , n zusammen, so dass ( 1 . . . n) verbleibt. 18
Nutzung der kanonischen Überdeckung Naiver Ansatz: • Bilde relationales Schema für jede FD der kanonischen Überdeckung • Eventuell immer noch zu viele Relationen • Beispiel: – FDs = {A B, D ABCD} – Zwei Relationen? • Mehrere FDs einem relationalen Schema zuordnen? 19
Vereinbarungen FDs, die von jeder Relationenausprägung automatisch immer erfüllt werden, nennen wir trivial. Nur FDs der Art mit sind trivial. Attribute eines Relationenschemas, die Elemente eines Kandidatenschlüssels des Relationenschemas sind, heißen "prim". Alle anderen Attribute des Relationenschemas nennen wir "nicht prim". R steht für ein Relationenschema, FR ist die zugeordnete Menge von FDs. Wenn R klar ist, dann wird meist nur F geschrieben. 20
Vermeidung von Redundanz in den Daten Beispiel: R = {[A, B, C , D]}, F = {A B, D ABCD}, Schlüsselkandidat: {D} R A B C D 3 4 5 1 3 4 6 2 Do not represent the same fact twice Allgemeiner Fall: F, dann: Superschlüssel oder FD ist trivial ggf. Dekomposition notwendig (verlustfrei und abhängigkeitsbewahrend) 21
Zerlegung (Dekomposition) von Relationen Es gibt zwei Korrektheitskriterien für die Zerlegung von Relationenschemata: = Verlustlosigkeit • Die in der ursprünglichen Relationenausprägung R des Schemas R enthaltenen Informationen müssen aus den Ausprägungen R 1, . . . , Rn der neuen Relationenschemata R 1, . . , Rn rekonstruierbar sein. = Abhängigkeitserhaltung • Die für R geltenden funktionalen Anhängigkeiten müssen auf die Schemata R 1, . . . , Rn übertragbar sein. 22
Kriterien für die Verlustlosigkeit einer Zerlegung R = R 1 R 2 – R 1 : = PR 1 (R) – R 2 : = PR 2 (R) Eine Zerlegung von R in R 1 und R 2 ist verlustlos, falls für jede mögliche (gültige) Ausprägung R von R gilt: – R = R 1 |><| R 2 Hinreichende Bedingung für die Verlustlosigkeit einer Zerlegung – (R 1 R 2) R 1 oder – (R 1 R 2) R 2 R 1 R R 2 23
Biertrinker-Beispiel Biertrinker Kneipe Gast Bier Kowalski Kemper Pils Kowalski Eickler Hefeweizen Innsteg Kemper Hefeweizen 24
„Verlustige“ Zerlegung Biertrinker Kneipe Gast Bier Kowalski Kemper Pils Kowalski Eickler Hefeweizen Innsteg Kemper Hefeweizen PKneipe, Gast PGast, Bier Trinkt Besucht Kneipe Gast Bier Kowalski Kemper Pils Kowalski Eickler Hefeweizen Innsteg Kemper Hefeweizen 25
Biertrinker Kneipe Gast Bier Kowalski Kemper Pils Kowalski Eickler Hefeweizen Innsteg Kemper Hefeweizen Besucht P. . Trinkt Gast Bier Kemper Pils Kowalski Eickler Hefeweizen Innsteg Kemper Hefeweizen Kneipe Gast Kowalski |><| ≠ Besucht A Trinkt Kneipe Gast Bier Kowalski Kemper Pils Kowalski Kemper Hefeweizen Kowalski Eickler Hefeweizen Innsteg Kemper Pils Innsteg Kemper Hefeweizen 26
Erläuterung des Biertrinker-Beispiels Unser Biertrinker-Beispiel war eine „verlustige“ Zerlegung und dementsprechend war die hinreichende Bedingung verletzt. Es gilt nämlich nur die eine nicht-triviale funktionale Abhängigkeit – {Kneipe, Gast} {Bier} Wohingegen keine der zwei möglichen, die Verlustlosigkeit garantierenden FDs gelten – {Gast} {Bier} – {Gast} {Kneipe} Das liegt daran, dass die Leute (insbes. Kemper) in unterschiedlichen Kneipen unterschiedliches Bier trinken. In derselben Kneipe aber immer das gleiche Bier – (damit sich die Kellner. Innen darauf einstellen können? ) 27
Verlustfreie Zerlegung Eltern Vater Mutter Kind Johann Martha Else Johann Maria Theo Heinz Martha Cleo PVater, Kind PMutter, Kind Mütter Väter Vater Kind Mutter Kind Johann Else Martha Else Johann Theo Maria Theo Heinz Cleo Martha Cleo 28
Erläuterung der verlustfreien Zerlegung der Eltern-Relation Eltern: {[Vater, Mutter, Kind]} Väter: {[Vater, Kind]} Mütter: {[Mutter, Kind]} Verlustlosigkeit ist garantiert Es gilt nicht nur eine der hinreichenden FDs, sondern gleich beide – {Kind} {Mutter} – {Kind} {Vater} Also ist {Kind} natürlich auch der Schlüssel der Relation Eltern Die Zerlegung von Eltern ist zwar verlustlos, aber auch ziemlich unnötig, da die Relation in sehr gutem Zustand ist Normalform (s. u. ) 29
Abhängigkeitsbewahrung R ist zerlegt in R 1, . . . , Rn FR = (FR 1 . . . FRn) bzw FR+ = (FR 1 . . . FRn)+ Beispiel für Abhängigkeitsverlust – Geg. Schema PLZverzeichnis: {[Straße, Ort, Bland, PLZ]} Annahmen – Orte werden durch ihren Namen (Ort) und das Bundesland (Bland) eindeutig identifiziert – Innerhalb einer Straße ändert sich die Postleitzahl nicht – Postleitzahlengebiete gehen nicht über Ortsgrenzen und Orte nicht über Bundeslandgrenzen hinweg Daraus resultieren die FDs – {PLZ} {Ort, BLand} – {Straße, Ort, BLand} {PLZ} Betrachte die Zerlegung – Straßen: {[PLZ, Straße]} – Orte: {[PLZ, Ort, BLand]} 30
Zerlegung der Relation PLZverzeichnis Ort BLand Straße PLZ Frankfurt Hessen Goethestraße 60313 Frankfurt Hessen Galgenstraße 60437 Frankfurt Brandenburg Goethestraße 15234 PPLZ, Straße POrt, Bland, PLZ Straßen Orte PLZ Straße Ort BLand PLZ 15234 Goethestraße Frankfurt Hessen 60313 Goethestraße Frankfurt Hessen 60437 Galgenstraße Frankfurt Brandenburg 15234 Die FD {Straße, Ort, BLand} {PLZ} ist im zerlegten Schema nicht mehr enthalten Einfügen inkonsistenter Tupel möglich 31
Einfügen zweier Tupel, die FD Ort, Bland, Straße PLZ verletzen PLZverzeichnis Ort BLand Straße PLZ Frankfurt Hessen Goethestraße 60313 Frankfurt Hessen Galgenstraße 60437 Frankfurt Brandenburg Goethestraße 15234 PPLZ, Straße PStadt, Bland, PLZ Straßen Orte PLZ Straße Ort BLand PLZ 15234 Goethestraße Frankfurt Hessen 60313 Goethestraße Frankfurt Hessen 60437 Galgenstraße Frankfurt Brandenburg 15234 15235 Goethestrasse Frankfurt Brandenburg 15235
Einfügen zweier Tupel, die FD Ort, Bland, Straße PLZ verletzen PLZverzeichnis Ort BLand Straße PLZ Frankfurt Hessen Goethestraße 60313 Frankfurt Hessen Galgenstraße 60437 Frankfurt Brandenburg Goethestraße 15234 Frankfurt Brandenburg Goethestraße 15235 |><| Straßen Orte PLZ Straße Ort BLand PLZ 15234 Goethestraße Frankfurt Hessen 60313 Goethestraße Frankfurt Hessen 60437 Galgenstraße Frankfurt Brandenburg 15234 15235 Goethestrasse Frankfurt Brandenburg 15235
Gütekriterien für Relationenschemata • Redundanzfreiheit in den Daten • Prüfung der einem Relationenschema zugeordneten FDs möglichst nur durch Schlüsselbedingung Normalformen 34
Erste Normalform: nur „einfache“ Domänen Beispiel: Eltern Vater Mutter Kinder Johann Martha {Else, Lucie} Johann Maria {Theo, Josef} Heinz Martha {Cleo} 1 NF Eltern Vater Mutter Kind Johann Martha Else Johann Martha Lucie Johann Maria Theo Johann Maria Josef Heinz Martha Cleo 35
Exkurs: NF 2 -Relationen Non-First Normal-Form-Relationen Geschachtelte Relationen Eltern Vater Johann Heinz Mutter Martha Maria Martha Kinder KName KAlter Else 5 Lucie 3 Theo 3 Josef 1 Cleo 9 36
Zweite Normalform Eine Relation R mit zugehörigen FDs FR ist in zweiter Normalform, falls jedes Nichtschlüssel-Attribut A R voll funktional abhängig ist von jedem Kandidatenschlüssel der Relation. Studenten. Belegung Matr. Nr Vorl. Nr Name Semester 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 mit Schlüssel {Matr. Nr, Vorl. Nr} ist nicht in zweiter NF – {Matr. Nr} {Name} – {Matr. Nr} {Semester} 37
Zweite Normalform Matr. Nr Name Vorl. Nr 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? Zerlegung in zwei Relationen – hören: {[Matr. Nr, Vorl. Nr]} – Studenten: {[Matr. Nr, Name, Semester]} Beide Relationen sind in 2 NF – erfüllen sogar noch „höhere“ Gütekriterien ~ Normalformen. 38
Weitere Normalisierung: Motivation Beispiel: R = {[A, B, C , D]}, FR = {A B, D ABCD}, Schlüsselkandidat: {D} R A B C D 3 4 5 1 3 4 6 2 Do not represent the same fact twice Allgemeiner Fall: FR, dann: Superschlüssel oder FD ist trivial ggf. Dekomposition notwendig (verlustfrei und abhängigkeitsbewahrend) 39
Boyce-Codd-Normalform Die Boyce-Codd-Normalform (BCNF) stellt nochmals eine Verschärfung der zweiten Normalform dar. Ein Relationenschema R mit FDs F ist in BCNF, wenn zusätzlich zu den Bedingungen der zweiten Normalform für jede für R geltende funktionale Abhängigkeit der Form F mindestens eine der folgenden zwei Bedingungen gilt: – , d. h. , die Abhängigkeit ist trivial oder – ist Superschlüssel von R Man kann jede Relation verlustlos in BCNF-Relationen zerlegen Manchmal läßt sich dabei die Abhängigkeitserhaltung aber nicht erzielen 40
Beispiel PLZverzeichnis: {[Straße, Ort, Bland, PLZ]} Prüfung der FDs durch Schlüsselbedingung nicht möglich Funktionale Abhängigkeiten: – {PLZ} {Ort, BLand} – {Straße, Ort, BLand} {PLZ} Betrachte die Zerlegung – Straßen: {[PLZ, Straße]} – Orte: {[PLZ, Ort, BLand]} Diese Zerlegung – ist verlustlos aber – Nicht abhängigkeitserhaltend (die zweite FD kann keiner Subrelation zugeordnet werden) 41
Was, wenn Boyce-Codd-Normalform nicht möglich? Beispiel: R = {[A, B, C , D]} F = {A D, CD ABCD} Schlüsselkandidaten: {AC}, {DC} Codd 71: Schema „ganz gut“, wenn es keine „transitiven Abhängigkeiten“ gibt: 3. Normalform FD A D im obigen Schema wäre tolerierbar 42
Dritte Normalform (formuliert nach Zaniolo 82) Ein Relationenschema R ist in dritter Normalform, wenn für jede für R geltende funktionale Abhängigkeit der Form B mit R und B R mindestens eine von drei Bedingungen gilt: – B , d. h. , die FD ist trivial – ist Superschlüssel von R – Das Attribut B ist in einem Kandidatenschlüssel von R enthalten (B ist prim) Man beachte: Es wird jede für R geltende FD betrachtet FD-Hülle! Warum ist Zaniolos Formulierung interessant? 43
Frage • Können wir relationale Schemata finden, so dass alle FDs einem Schema zugeordnet werden können (Abhängigkeitserhaltung) und wenigstens die dritte Normalform gegeben ist?
Synthesealgorithmus Wir geben jetzt einen sogenannten Synthesealgorithmus an, mit dem zu einem gegebenen Relationenschema R mit funktionalen Anhängigkeiten F eine Zerlegung in R 1, . . . , Rn ermittelt wird, die alle drei folgenden Kriterien erfüllt. – R 1, . . . , Rn ist eine verlustlose Zerlegung von R. – Die Zerlegung R 1, . . . , Rn ist abhängigkeitserhaltend. – Alle R 1, . . . , Rn sind in dritter Normalform. 45
Synthesealgorithmus • Bestimme die kanonische Überdeckung Fc zu F. Wiederholung: q q Linksreduktion Rechtsreduktion Entfernung von FDs der Form Zusammenfassung gleicher linker Seiten • Für jede funktionale Abhängigkeit Fc: – Kreiere ein Relationenschema R : = – Ordne R die FDs F : = { ` ` Fc | ` ` R } zu. • 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 R aus und definiere folgendes Schema: – R : = – F : = • Eliminiere diejenigen Schemata R , die in einem anderen Relationenschema R ` enthalten sind, d. h. , – R R ` 46
Beispiel 1: Anwendung des Synthesealgorithmus Professoren. Adr: {[Pers. Nr, Name, Rang, Raum, Ort, Straße, PLZ, Vorwahl, BLand, EW, Landesregierung]} {Pers. Nr} {Name, Rang, Raum, Ort, Straße, BLand} {Raum} {Pers. Nr} {Straße, BLand, Ort} {PLZ} {Ort, BLand} {EW, Vorwahl} {BLand} {Landesregierung} {PLZ} {BLand, Ort} Professoren: {[Pers. Nr, Name, Rang, Raum, Ort, Straße, BLand]} PLZverzeichnis: {[Straße, BLand, Ort, PLZ]} Orte. Verzeichnis: {[Ort, BLand, EW, Vorwahl]} Regierungen: {[Bland, Landesregierung]} 47
Dekomposition der Relation Städte in BCNF-Relationen Städte: {[Ort, BLand, Ministerpräsident/in, EW]} Geltende FDs: – {BLand} {Ministerpräsident/in} – {Ort, BLand} {EW} – {Ministerpräsident/in} {BLand} Ri 1: – Regierungen: {[BLand, Ministerpräsident/in]} Ri 2: – Städte: {[Ort, BLand, EW]} Zerlegung ist verlustlos und auch abhängigkeitserhaltend – Glück gehabt! 48
Dekomposition Man kann grundsätzlich jedes Relationenschema R mit funktionalen Anhängigkeiten F so in R 1, . . . , Rn zerlegen, dass gilt: – R 1, . . . , Rn ist eine verlustlose Zerlegung von R. – Alle R 1, . . . , Rn sind in BCNF. – Es kann leider nicht immer erreicht werden, dass die Zerlegung R 1, . . . , Rn abhängigkeitserhaltend ist. 49
Nur der Vollständigkeit halber: Dekomposition als Algorithmus Starte mit Z = {R} Solange es noch ein Relationenschema Ri in Z gibt, das nicht in BCNF ist, mache folgendes: – Es gibt also eine für Ri geltende nicht-triviale funktionale Abhängigkeit ( ) mit • = • ( Ri) – Finde eine solche FD • Man sollte sie so wählen, dass alle von funktional abhängigen Attribute B (Ri - ) enthält, damit der Dekompositionsalgorithmus möglichst schnell terminiert. – Zerlege Ri in Ri 1 : = und Ri 2 : = Ri - – Entferne Ri aus Z und füge Ri 1 und Ri 2 ein, also • Z : = (Z – {Ri}) {Ri 1} {Ri 2} 50
Synthese Professoren. Adr: {[Pers. Nr, Name, Rang, Raum, Ort, Straße, PLZ, Vorwahl, BLand, EW, Landesregierung]} Fc : F 1 {Pers. Nr} {Name, Rang, Raum, Ort, Straße, BLand} F 2 {Raum} {Pers. Nr} F 3 {Straße, BLand, Ort} {PLZ} F 4 {Ort, BLand} {EW, Vorwahl} F 5 {BLand} {Landesregierung} F 6 {PLZ} {BLand, Ort} Professoren: {[Pers. Nr, Name, Rang, Raum, Ort, Straße, BLand]} = {{Pers. Nr}, {Raum}}, zugeordnete FDs = {F 1, F 2} PLZverzeichnis: {[Straße, BLand, Ort, PLZ]} = {{Straße, BLand, Ort}, {Straße, PLZ}}, zug. FDs = {F 3, F 6} Orte. Verzeichnis: {[Ort, BLand, EW, Vorwahl]} = {{Pers. Nr}, {Raum}} zugeordnete FDs = {F 4} Regierungen: {[Bland, Landesregierung]} = {{BLand}}, zugeordnete FDs = {F 5} 51
52
53
Weitere verwendbare Einschränkungen Gibt es weitere sinnvolle Einschränkungen (Dependencies)? • Enthaltensein-Einschränkungen (Inclusion Dependencies) – Beispiel: hat-kind vs. hat-nachfahre – Multidimensionale Fremdschlüssel (in SQL) • Mehrwertige Abhängigkeiten (Multiple-Value Dependencies) 54
Mehrwertige Abhängigkeiten: ein Beispiel Fähigkeiten Pers. Nr Sprache Prog. Sprache 3002 griechisch C 3002 lateinisch Pascal 3002 griechisch Pascal 3002 lateinisch C 3005 deutsch Ada Mehrwertige Abhängigkeiten dieser Relation: – {Pers. Nr} {Sprache} und – {Pers. Nr} {Prog. Sprache} MVDs führen zu Redundanz und Anomalien 55
Mehrwertige Abhängigkeiten R A 1. . . Ai Ai+1. . . Aj Aj+1. . . An t 1 a 1. . . ai ai+1. . . aj aj+1. . . an t 2 a 1. . . ai bi+1. . . bj bj+1. . . bn t 3 a 1. . . ai bi+1. . . bj aj+1. . . an t 4 a 1. . . ai ai+1. . . aj bj+1. . . bn gilt genau dann wenn – es zu zwei Tupel t 1 und t 2 mit gleichen –Werten – auch zwei Tupel t 3 und t 4 gibt mit "Zu zwei Tupeln mit gleichem • t 3. = t 4. = t 1. = t 2. Wert kann man die -Werte • t 3. = t 2. , t 4. = t 1. vertauschen, und die Tupel müssen auch in der Relation sein" • t 4. = t 2. , t 3. = t 1. 56
MVDs Tuple-generating dependencies – Man kann eine Relation MVD-konform machen, indem man zusätzliche Tupel einfügt – Bei FDs geht das nicht!! 57
Mehrwertige Abhängigkeiten R A B C a b c a bb c a b cc A B A C 58
Mehrwertige Abhängigkeiten: ein Beispiel Fähigkeiten Pers. Nr Sprache Prog. Sprache 3002 griechisch C 3002 lateinisch Pascal 3002 griechisch Pascal 3002 lateinisch C 3005 deutsch Ada Pers. Nr, Sprache Pers. Nr, Prog. Sprachen Pers. Nr Sprache Pers. Nr Prog. Sprache 3002 griechsich 3002 C 3002 lateinisch 3002 Pascal 3005 deutsch 3005 Ada
Mehrwertige Abhängigkeiten: ein Beispiel Fähigkeiten Pers. Nr Sprache Prog. Sprache 3002 griechisch C 3002 lateinisch Pascal 3002 griechisch Pascal 3002 lateinisch C 3005 deutsch Ada |><| Sprachen Prog. Sprachen Pers. Nr Sprache Pers. Nr Prog. Sprache 3002 griechsich 3002 C 3002 lateinisch 3002 Pascal 3005 deutsch 3005 Ada
Verlustlose Zerlegung bei MVDs: hinreichende + notwendige Bedingung R = R 1 R 2 • R 1 : = PR 1 (R) • R 2 : = PR 2 (R) Die Zerlegung von R in R 1 und R 2 ist verlustlos, falls für jede mögliche (gültige) Ausprägung R von R gilt: – R = R 1 >< R 2 Die Zerlegung von R in R 1 und R 2 ist verlustlos genau dann wenn – R = R 1 R 2 und mindestens eine von zwei MVDs gilt: – (R 1 R 2) R 1 oder – (R 1 R 2) R 2 61
Triviale MVDs … … sind solche, die von jeder Relationenausprägung erfüllt werden Eine MVD ist trivial genau dann wenn • oder • =R- 62
Vierte Normalform Eine Relation R ist in 4 NF wenn für jede MVD eine der folgenden Bedingungen gilt: • Die MVD ist trivial oder • ist Superschlüssel von R 63
Dekomposition in 4 NF Starte mit der Menge Z : = {R} Solange es noch ein Relationenschema Ri in Z gibt, das nicht in 4 NF ist, mache folgendes: – Es gibt also eine für Ri geltende nicht-triviale MVD ( ), für die gilt: • = • ( Ri) – Finde eine solche MVD – Zerlege Ri in Ri 1 : = und Ri 2 : = Ri - – Entferne Ri aus Z und füge Ri 1 und Ri 2 ein, also • Z : = (Z – {Ri}) {Ri 1} {Ri 2} 64
Dekomposition in 4 NF 65
Beispiel-Zerlegung 66
Zusammenfassung Die Verlustlosigkeit ist für alle Zerlegungsalgorithmen in alle Normalformen garantiert Die Abhängigkeitserhaltung kann nur bis zur dritten Normalform garantiert werden 67
- Slides: 67