Kanonische Abdeckung, Dekomposition

Cognitive Interaction Technology Center of Excellence. Überflüssige Attribute. • Frage: Wann ist denn ein Attribut in einer funktionalen. Abhängigkeit überflüssig ...
1MB Größe 2 Downloads 249 Ansichten
Cognitive Interaction Technology Center of Excellence

Kanonische Abdeckung

• Motivation: eine Instanz einer Datenbank muss nun alle funktionalen Abhängigkeiten in F+ erfüllen. Das muss natürlich immer überprüft werden (z.B. bei jedem update). Es reicht natürlich dabei, zu überprüfen, ob die Instanz der Datenbanken die funktionalen Abhängigkeiten in F erfüllt. F+ folgt ja schließlich aus F. • Frage: F kann relativ viele funktionale Abhängigkeiten beinhalten. Gibt es vielleicht ein Fc so dass F+=Fc+ und Fc „einfacher“ dahingehend ist, dass die funkt. Abhängigkeiten in Fc weniger Attribute verwenden? Ein solches Fc nennen wir dann eine minimale Überdeckung von F. 69

Cognitive Interaction Technology Center of Excellence

Überflüssige Attribute

• Frage: Wann ist denn ein Attribut in einer funktionalen Abhängigkeit überflüssig? Bsp: Gegeben seien folgende funktionale Abhängigkeiten F: 1) A -> BC 2) B -> C 3) A -> B 4) AB -> C Feststellung: A ist in 4) auf jeden Fall überflüssig. Warum? Weil B -> C schon aus F folgt (und zwar direkt aus 2) 70

Cognitive Interaction Technology Center of Excellence

Überflüssige Attribute

• Frage: Wann ist ein Attribut auf der linken Seite einer funktionalen Abhängigkeit überflüssig? • Gegeben eine funkt. Abhängigkeit . • A in ist überflüssig gdw. . wobei . Das ist genau dann der Fall wenn . • Wir müssen also zur Überprüfung, ob A überflüssig ist, berechnen und überprüfen, ob .

71

Cognitive Interaction Technology Center of Excellence

Überflüssige Attribute

• Frage: Wann ist ein Attribut auf der rechten Seite einer FA überflüssig? • Gegeben eine funkt. Abhängigkeit . • Betrachten wir nun

72

• A ist in überflüssig gdw. . • Das ist der Fall gdw. . • Wir müssen also zur Überprüfung, ob A überflüssig ist, in Bezug auf F´+ berechnen und überprüfen, ob

.

Cognitive Interaction Technology Center of Excellence

Kanonische Abdeckung

• Die kanonische Abdeckung Fc von F hat die Eigenschaft, dass • Außerdem soll gelten: • Es gibt keine überflüssigen Attribute in Fc. • Die linken Seiten von einer funkt. Abhängigkeit sind eindeutig, d.h.

73

Cognitive Interaction Technology Center of Excellence

Berechnung der kanonischen Abdeckung

Ein Algorithmus zur Berechnung der kanonischen Abdeckung von F sieht nun wie folgt aus: Fc=F; repeat wende die Vereinigungsregel an um Regeln der Form zusammenzuführen: Für jede Abhängigkeit eliminiere die überflüssigen Attribute auf der linken und rechten Seite. until Fc ändert sich nicht 74

Cognitive Interaction Technology Center of Excellence

Beispiel kanonische Abdeckung

Gegeben sei folgende Menge F von funktionalen Abhängigkeiten: 1) A -> BC 2) B -> C 3) A -> B 4) AB -> C

1.  Durchlauf des Algorithmus: Wir fassen 1) A -> BC und 3) A->B zusammen zu A -> BC:

75

1´) A -> BC 2´) B -> C 3´) AB -> C

Cognitive Interaction Technology Center of Excellence

Beispiel kanonische Abdeckung

1´) A -> BC 2´) B -> C 3´) AB -> C Gibt es überflüssige Attribute auf der linken Seite? A kann aus 3) entfernt werden, da . Gibt es überflüssige Attribute auf der rechten Seite? C kann aus 1) entfernt werden, da

76

Cognitive Interaction Technology Center of Excellence

Beispiel kanonische Abdeckung

F besteht nun also aus folgenden funktionalen Abhängigkeiten 1)  A -> B 2)  B -> C

77

Cognitive Interaction Technology Center of Excellence

Nicht-Eindeutigkeit der kanonischen Abdeckung

• Die kanonische Abdeckung muss nicht eindeutig sein: Gegeben: A -> BC B -> AC C -> AB Hier gibt es vier kanonische Abdeckungen (Übung!)

78

Cognitive Interaction Technology Center of Excellence

Verlustfreie Dekomposition (spezieller Fall)

• Definition (Verlustfreie Dekomposition): Gegeben sei eine Relation r mit Schema R. Eine Dekomposition von r in Relationen R1,...,Rn ist verlustfrei gdw.

79

Cognitive Interaction Technology Center of Excellence

Verlustfreie Dekomposition (spezieller Fall)

• Definition (Verlustfreie Dekomposition in zwei Relationen): Gegeben sei eine Relation r mit Schema R, sowie eine Menge funktionaler Abhängigkeiten F. Eine Dekomposition von r in zwei Relationen r1 und r2 ist verlustfrei gdw.

80

Cognitive Interaction Technology Center of Excellence

Verlustfreie Dekomposition und funktionale Abhängigkeiten (binärer Fall)

• Wir können funktionale Abhängigkeiten verwenden, um zu charakterisieren wann eine Dekomposition verlustfrei ist. • Eine Dekomposition ist verlustfrei gdw. eine der folgenden funktionalen Abhängigkeiten in F+ ist:

81

Cognitive Interaction Technology Center of Excellence

Beispiel verlustfreie Dekomposition

• Bsp: borrower_loan = (customer_id,loan_number,amount) • Vorgeschlagene Dekomposition: borrower=(customer_id,loan_number) loan=(loan_number,amount) Hier gilt: Also ist die Dekomposition tatsächlich verlustfrei. 82

Cognitive Interaction Technology Center of Excellence

Eigenschaften einer Dekomposition

• Wir wünschen uns zwei Eigenschaften von einer Dekomposition: 1) dass sie verlustfrei ist 2) dass sie die Abhängigkeiten (lokal) erhält

83

Cognitive Interaction Technology Center of Excellence

Abhängigkeitserhaltende Dekomposition

• Definition (Restriktion): Gegeben sei eine Dekomposition von R in Relationen R1,...,Rn. Gegeben sei auch eine Menge funktionaler Abhängigkeiten F. Die Restriktion von F auf Ri – Res(F,Ri) - ist die Menge aller funktionalen Abhängigkeiten in F+, die nur Attribute aus Ri beinhaltet.

84

Cognitive Interaction Technology Center of Excellence

Beispiel Restriktion funktionaler Abhängigkeiten

Gegeben sei eine Relation mit Schema R=(A,B,C) sowie eine Dekomposition in R1=(A,B) und R2=(A,C). Gegeben seien folgende funktionale Abhängigkeiten: F={A -> B, B->C} Zwischenfrage: ist die Dekomposition verlustfrei? Die Restriktion von F auf R1 ist: {A->B, A->A, B->B, AB->B, AB->A} Die Restriktion von F auf R2 ist: {A->C, A->A, C->C, AC->A, AC->C} 85

Cognitive Interaction Technology Center of Excellence

Abhängigkeitserhaltende Dekomposition

• Definition (Abhängigkeitserhaltende Dekomposition) Gegeben sei eine Dekomposition von R in Relationen R1,...,Rn. Gegeben sei auch eine Menge funktionaler Abhängigkeiten F. Gegeben seien die Restriktionen Fi von F auf Ri. Die Dekomposition von R in R1,...,Rn ist verlustfrei gdw.

86

Cognitive Interaction Technology Center of Excellence

Bedeutung der abhängigkeitserhaltenden Dekomposition

• Wenn eine Dekomposition abhängigkeitserhaltend ist, dann bedeutet das effektiv, dass alle funktionalen Abhängigkeiten in F+ „lokal“ geprüft werden können. • Das ist eine sehr wichtige Eigenschaft, da in solchen Relationen die Überprüfung, ob alle Abhängigkeiten erfüllt sind, effizient erfolgen kann.

87

Cognitive Interaction Technology Center of Excellence

Beispiel

88

Gegeben sei unsere Relation R=(A,B,C) sowie eine Dekomposition in R1=(A,B) und R2=(A,C). Gegeben seien folgende funktionale Abhängigkeiten: F={A -> B, B->C}, F+={A->B, B-> C, A->A, AB->A, AC->C, B> B, AB->C, C->C,...} (siehe Folien 43-46) Die Restriktion von F auf R1 ist: {A->B, A->A, B->B, AB->B, AB->A} Die Restriktion von F auf R2 ist: {A->C, A->A, C->C, AC->A, AC->C} Die folgenden zwei Abhängigkeiten können nicht lokal geprüft werden: B->C, AB->C

Cognitive Interaction Technology Center of Excellence

Trivialer Test zur Überprüfung auf abhängigkeiteserhaltende Dekomposition Gegeben sei eine Dekomposition von R in Relationen R1,...,Rn. Gegeben sei auch eine Menge funktionaler Abhängigkeiten F. Gegeben seien die Restriktionen Res (F,Ri) von F auf Ri. Der folgende Algorithmus liefert uns einen hinreichenden Test. for each f in F do { local = false; for each Ri { if (f in Res(F,Ri)) {local = true} } */ end for */ if (local = false) return false; } */ end for */ return true; 89

Cognitive Interaction Technology Center of Excellence

Hinreichender Test

Der triviale Test liefert uns eine hinreichende Bedingung, um auf abhängigkeitserhaltende Dekomposition zu testen. Er liefert uns aber keine notwendige Bedingung. Der folgende Test liefert uns eine sowohl hinreichende als auch notwendige Bedingung.

90

Cognitive Interaction Technology Center of Excellence

Algorithmus 1 zur Überprüfung auf abhängigkeitserhaltende Dekomposition

91

berechne F+; F´={}; for each Ri in D { Fi:= Res(F,Ri); F´=F´ Fi } berechne F´+; if (F+ = F´+) return true; else return false; Dieser Algorithmus ist exponentiell in der Anzahl der Attribute.

Cognitive Interaction Technology Center of Excellence

Optimierungen

• Es gilt natürlich:

92

• Damit reicht es zu zeigen, dass • Das ist der Fall gdw. Beweis: „=>“ Wenn , dann auch da ja abgeschlossen ist und alles was aus F folgt auch in enthalten ist. „ amount (daher ist borrower_loan nicht in BCNF) Die funktionale Abhängigkeit verletzt die BCNF Bedingung, da loan_number kein Superschlüssel ist. Folglich wird borrower_loan in folgende Relationen aufgeteilt: R1={customer_id,loan_number} R2={loan_number,amount} 99

Cognitive Interaction Technology Center of Excellence

Dekomposition in 3NF

• Es gibt einen Algorithmus zur Dekomposition eines Schemas in 3NF der folgende Eigenschaften hat: • der Algorithmus geht „bottom-up“ vor und erzeugt eine Relation für jede funktionale Abhängigkeit. • der Algorithmus liefert eine verlustfreie Dekomposition • der Algorithmus liefert ein abhängigkeitserhaltende Dekomposition • der Algorithmus arbeitet mit der kanonischen Überdeckung Fc statt mit F selbst.

• Das ist der sogenannte 3NF Synthese Algorithmus. 100

Cognitive Interaction Technology Center of Excellence

3NF Synthese Algorithmus

Gegeben sei die kanonische Überdeckung Fc von F i:=0; for each { if kein Schema aus Rj mit j Date of Birth 102

Cognitive Interaction Technology Center of Excellence

Beispiel für 3NF Synthesis

Es werden laut dem Algorithmus folgende Tabellen erzeugt: R1=(Winner, Date of Birth) R2=(Tournament,Year, Winner) Da R2 bereits einen Schlüssel beinhaltet werden keine weiteren Tabellen erzeugt!

103

Cognitive Interaction Technology Center of Excellence

Eigenschaften des 3NF Synthese Algorithmus

• Die Dekomposition ist verlustfrei, da es mindestens eine Relation gibt, die einen Schlüssel enthält. • Die Dekomposition ist abhängigkeitserhaltend, da für jede funktionale Abhängigkeit ein eigenes Schemas erstellt wird. Jede funktionale Abhängigkeit kann also „lokal“ geprüft werden. • Jede der erzeugten Relationen Ri ist in 3NF.

104

Cognitive Interaction Technology Center of Excellence

Beweis, dass jedes Ri in 3NF ist

Gegeben ein Ri welches vom Synthese-Algorithmus generiert wurde. Dann muss es eine funktionale Abhängigkeit in Fc geben, die für die Generierung der Tabelle verantwortlich ist, also: Ri ist nicht in 3NF wenn es eine funktionale Abhängigkeit gibt: mit so dass B Nicht-Primär-Attribut und kein Superschlüssel ist. Kann das sein? Nein! 105

Cognitive Interaction Technology Center of Excellence

Beweis, dass jedes Ri in 3NF ist Nehmen wir an, es gäbe so eine funktionale Abhängigkeit so dass B Nicht-Primär-Attribut und kein Schlüssel ist. B muss aber in enthalten sein. 1)  Sei (Widerspruch, B wäre überflüssig in und damit ) 2) Sei , dann ist B ein Schlüssel-Attribut (Widerspruch!) 3) Sei ; dann gilt, dass folgt aus und da (Annahme der Nichttrivialität). Damit ist B überflüssig in und damit 106