Datenbanken Unit 5: Funktionale Abhängigkeit

Werbung
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Datenbanken
Unit 5: Funktionale Abhängigkeit
Ronald Ortner
19. IV. 2016
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Outline
1
Organisatorisches
2
SQL
3
Funktionale Abhängigkeit
4
Anomalien
5
Datenbank Normalisierung
Zerlegung von Relationen
Ronald Ortner
Anomalien
Datenbank Normalisierung
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Organisatorisches
Heute Zwischentest in den UE.
Wissensüberprüfung zu JOINs nächste Woche.
Ronald Ortner
Datenbank Normalisierung
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
SQL – Häufige Fehler
Verwenden Sie NIE ein GROUP BY ohne entsprechende
Aggregatfunktion!
Für weitere häufige Fehler siehe Handout.
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Datenbankdesign bisher:
zeichne Entitäten, Relationen, und Attribute in ein ER-Diagramm
leite aus dem ER-Diagramm ein Datenbankschema ab
Nun beschäftigen wir uns mit einem verfeinerten Zugang
(’Normalisierung’).
Die Grundlage dafür ist der Begriff der funktionalen Abhängigkeit.
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Abstrakte Schemata und ihre Realisierung
Bisher waren wir ein wenig schlampig.
Im folgenden unterscheiden wir oft genauer zwischen
abstrakten relationalen Datenbankschemata
(' Tabellenstruktur ohne Daten)
Notation: R
Realisierungen R solcher Schemata
(' die Daten in den Tabellen)
Notation: R
Ronald Ortner
Datenbank Normalisierung
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Funktionale Abhängigkeit
Definition (funktionale Abhängigkeit)
Gegeben sei ein abstraktes relationales Datenbankschema R,
sowie (Mengen von) Attribute(n) α, β in R.
Wir sagen, dass β funktional abhängig (FD) von α ist, wenn für alle
Realisierungen R of R:
Immer wenn zwei Tupel (Zeilen) dieselben Werte für α haben, so
haben sie auch gleiche Werte für β.
Notation: α → β
Beispiele:
{ name} → { region, area, population, gdp} in cia
{ jahr, monat} → { tmin, tmax, gmin, sun, rain} in sowe
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Funktionale Abhängigkeit: Ein Beispiel
A
a4
a1
a1
a2
a3
Es gelten:
{A} → {B}
{A} → {C}
{C,D} → {B}
{B} 6→ {C}
Ronald Ortner
B
b2
b1
b1
b2
b2
C
c4
c1
c1
c3
c4
D
d3
d1
d2
d2
d3
Datenbank Normalisierung
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Überprüfen funktionaler Abhängigkeit
Das Überprüfen, ob eine FD α → β für eine Realisierung R gilt, ist
einfach:
Sortiere R nach α.
Überprüfe ob Tupel mit gleichen α-Werten auch gleiche β-Werte
haben.
[→ Aufwand fürs Sortieren: O(n log n) für n Zeilen]
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Triviale funktionale Abhängigkeiten
Eine FD heißt trivial, wenn sie in allen möglichen Realisierungen gilt.
Charakterisierung trivialer FDs
Jede triviale FD ist von der Form α → β mit β ⊆ α.
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Schlüssel und funktionale Abhängigkeiten
FDs sind eine Verallgemeinerung des Schlüssel-Konzepts.
→ Schlüssel lassen sich über FDs definieren:
Definition (Superschlüssel)
Für ein abstraktes relationales Datenbankschema R ist α ⊆ R ein
Superschlüssel, wenn
α → R.
Trivialerweise bildent die Menge aller Attribute in R einen
Superschlüssel für R (weil R → R).
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Volle funktionale Abhängigkeit
Um Schlüssel von Superschlüsseln unterscheiden zu können, führen
wir den Begriff der vollen funktionalen Abhängigkeit ein:
Definition (volle funktionalen Abhängigkeit)
β ist voll funktional abhängig von α, wenn
1
α → β, und
2
α ist minimal, d.h. entfernt man irgendein Attribut A aus α, so
bricht die FD zusammen, d.h. α − A 6→ β.
Notation:
Ronald Ortner
α→β
˙
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Schlüssel und funktionale Abhängigkeiten II
Definition (Kandidatenschlüssel)
Für ein abstraktes relationales Datenbankschema R ist α ⊆ R ein
Kandidatenschlüssel, wenn
α→R.
˙
Ein Primärschlüssel ist ein beliebig gewählter Kandidatenschlüssel.
Es ist unwichtig, welcher gewählt wird.
Es ist aber wichtig, dass der gewählte Schlüssel durchgehend
verwendet wird (etwa als Fremdschlüssel in anderen Tabellen).
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Eigenschaften von FDs
Beispiel: Studierendentelefonbuch:
{[matrnr, name, strasse, plz, stadt, vorwahl, telnr]}
FDs:
{matrnr} → {name, strasse, plz, stadt}
{plz} → {vorwahl}
{matrnr} → {vorwahl}
Anmerkung: Die dritte Relation scheint aus den anderen beiden zu
folgen...
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Eigenschaften von FDs: Armstrong Axiome
Armstrong Axiome:
Reflexivität:
Wenn β ⊆ α, dann α → β.
Insbesondere gilt α → α.
Ronald Ortner
Datenbank Normalisierung
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Eigenschaften von FDs: Armstrong Axiome
Armstrong Axiome:
Reflexivität:
Wenn β ⊆ α, dann α → β.
Insbesondere gilt α → α.
Verstärkung:
Wenn α → β, dann auch αγ → βγ.
(Notation: αγ steht für α ∪ γ.)
Ronald Ortner
Datenbank Normalisierung
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Eigenschaften von FDs: Armstrong Axiome
Armstrong Axiome:
Reflexivität:
Wenn β ⊆ α, dann α → β.
Insbesondere gilt α → α.
Verstärkung:
Wenn α → β, dann auch αγ → βγ.
(Notation: αγ steht für α ∪ γ.)
Transitivität:
Wenn α → β und β → γ, dann auch α → γ.
Ronald Ortner
Datenbank Normalisierung
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Eigenschaften von FDs: Der Abschluss
Definition (Abschluss)
Sei R eine Relation und F eine Menge von FDs in R. Der Abschluss
F + von F ist die Menge aller FDs, die logisch aus den FDs in F folgen.
Korrektheit und Vollständigkeit der Armstrong Axiome
Alles, was aus F mithilfe der Armstrong Axiome abgeleitet werden
kann, ist in F + (Korrektheit).
Alle FDs in F + können aus F mithilfe der Armstrong Axiome
abgeleitet werden (Vollständikgkeit).
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Noch mehr Eigenschaften von FDs
Mithilfe der Armstrong Axiome können weiters folgende Eigenschaften
abgeleitet werden:
Vereinigung:
Wenn α → β und α → γ, dann α → βγ.
Dekompositionsregel:
Wenn α → βγ, dann α → β und α → γ.
Pseudotransitivität:
Wenn α → β und βγ → δ, dann auch αγ → δ.
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Eigenschaften von FDs: Zurück zum Beispiel
Beispiel: Studierendentelefonbuch:
{[matrnr, name, strasse, plz, stadt, vorwahl, telnr]}
FDs:
{matrnr} → {name, strasse, plz, stadt}
{plz} → {vorwahl}
{matrnr} → {vorwahl}
Ableitung der dritten FD aus den anderen beiden:
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Eigenschaften von FDs: Zurück zum Beispiel
Beispiel: Studierendentelefonbuch:
{[matrnr, name, strasse, plz, stadt, vorwahl, telnr]}
FDs:
{matrnr} → {name, strasse, plz, stadt}
{plz} → {vorwahl}
{matrnr} → {vorwahl}
Ableitung der dritten FD aus den anderen beiden:
Durch (wiederholte) Zerlegung folgt aus (1):
{matrnr} → {plz}
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Eigenschaften von FDs: Zurück zum Beispiel
Beispiel: Studierendentelefonbuch:
{[matrnr, name, strasse, plz, stadt, vorwahl, telnr]}
FDs:
{matrnr} → {name, strasse, plz, stadt}
{plz} → {vorwahl}
{matrnr} → {vorwahl}
Ableitung der dritten FD aus den anderen beiden:
Durch (wiederholte) Zerlegung folgt aus (1):
{matrnr} → {plz}
Zusammen mit (2) folgt mit Transitivität (3).
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Bestimmung funktional abhängiger Attribute
Gegeben: Attribute α, Menge F von FDs
+
Wollen: alle Attribute αF
, die von α funktional abhängig sind
Algorithmus:
+
Initialisiere αF
:= {α}, change:=true;
while (change) do{
change=false;
for each FD β → γ in F do{
if (β ⊆ α+ ) then{
+
+
αF
:= αF
∪ γ;
change=true;
}}}
Dieser Algorithmus kann dazu verwendet werden, um Superschlüssel
κ zu finden: Wenn κ+ = R, dann ist κ ein Superschlüssel von R.
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Bestimmung funktional abhängiger Attribute
Beispiel:
Sei F = {C → DA, A → BC, E → ABC, F → BC, CD → BF }.
Berechne A+
F.
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Bestimmung funktional abhängiger Attribute
Beispiel:
Sei F = {C → DA, A → BC, E → ABC, F → BC, CD → BF }.
Berechne A+
F.
A+
F = {A, B, C, D, F }
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Äquivalenz und kanonische Überdeckung
Definition (Äquivalenz)
Zwei Mengen F, G von FDs heißen äquivalent (F ≡ G), wenn
F + = G +.
Intuitiv: F, G sind äquivalent, wenn dieselben FDs ableitbar sind.
Problem: F + ist im allgemeinen recht groß und unstrukturiert.
Lösung: Wähle für jedes F ein spezielles G mit F ≡ G.
(So ein G heißt kanonische Überdeckung.)
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Kanonische Überdeckung
Definition (kanonische Überdeckung)
Sei F eine Menge von FDs. Fc heißt kanonische Überdeckung von F,
wenn
1
Fc ≡ F (d.h., Fc+ = F + )
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Kanonische Überdeckung
Definition (kanonische Überdeckung)
Sei F eine Menge von FDs. Fc heißt kanonische Überdeckung von F,
wenn
1
2
Fc ≡ F (d.h., Fc+ = F + )
In allen FDs α → β aus Fc enthalten weder α noch β redundante
Attribute, d.h.:
1
2
Ronald Ortner
für alle A in α: (Fc − {α → β}) ∪ {(α − A) → β} ≡
6 Fc
für alle B in β: (Fc − {α → β}) ∪ {α → (β − B)} ≡
6 Fc
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Kanonische Überdeckung
Definition (kanonische Überdeckung)
Sei F eine Menge von FDs. Fc heißt kanonische Überdeckung von F,
wenn
1
2
Fc ≡ F (d.h., Fc+ = F + )
In allen FDs α → β aus Fc enthalten weder α noch β redundante
Attribute, d.h.:
1
2
3
für alle A in α: (Fc − {α → β}) ∪ {(α − A) → β} ≡
6 Fc
für alle B in β: (Fc − {α → β}) ∪ {α → (β − B)} ≡
6 Fc
Für jede FD α → β in Fc gibt es keine andere FD der Form α → γ
in Fc .
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Kanonische Überdeckung
Definition (kanonische Überdeckung)
Sei F eine Menge von FDs. Fc heißt kanonische Überdeckung von F,
wenn
1
2
Fc ≡ F (d.h., Fc+ = F + )
In allen FDs α → β aus Fc enthalten weder α noch β redundante
Attribute, d.h.:
1
2
3
für alle A in α: (Fc − {α → β}) ∪ {(α − A) → β} ≡
6 Fc
für alle B in β: (Fc − {α → β}) ∪ {α → (β − B)} ≡
6 Fc
Für jede FD α → β in Fc gibt es keine andere FD der Form α → γ
in Fc .
Anmerkung: Bedingung 3 kann durch wiederholte Zusammenfassung
von FDs α → β, α → γ to α → βγ erreicht werden.
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Berechnung der kanonischen Überdeckung
Gegeben: Menge F of FDs
Wollen: kanonische Überdeckung Fc
Algorithmus:
1
Führe für jede FD α → β in F Linksreduktion aus:
Überprüfe für alle A in α, ob A redundant, d.h., β ⊆ (α − A)+
F.
In diesem Fall ersetze α → β durch (α − A) → β.
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Berechnung der kanonischen Überdeckung
Gegeben: Menge F of FDs
Wollen: kanonische Überdeckung Fc
Algorithmus:
1
Führe für jede FD α → β in F Linksreduktion aus:
Überprüfe für alle A in α, ob A redundant, d.h., β ⊆ (α − A)+
F.
In diesem Fall ersetze α → β durch (α − A) → β.
2
Führe für jede FD α → β in F Rechtsreduktion aus:
Überprüfe für alle B in β, ob B redundant, d.h., B in
+
αF
−{α→β})∪{α→(β−B)} . In diesem Fall ersetze α → β durch
α → (β − B).
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Berechnung der kanonischen Überdeckung
Gegeben: Menge F of FDs
Wollen: kanonische Überdeckung Fc
Algorithmus:
1
Führe für jede FD α → β in F Linksreduktion aus:
Überprüfe für alle A in α, ob A redundant, d.h., β ⊆ (α − A)+
F.
In diesem Fall ersetze α → β durch (α − A) → β.
2
Führe für jede FD α → β in F Rechtsreduktion aus:
Überprüfe für alle B in β, ob B redundant, d.h., B in
+
αF
−{α→β})∪{α→(β−B)} . In diesem Fall ersetze α → β durch
α → (β − B).
3
Entferne FDs α → ∅ aus F. (Diese können in Schritt 2 entstehen.)
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Berechnung der kanonischen Überdeckung
Gegeben: Menge F of FDs
Wollen: kanonische Überdeckung Fc
Algorithmus:
1
Führe für jede FD α → β in F Linksreduktion aus:
Überprüfe für alle A in α, ob A redundant, d.h., β ⊆ (α − A)+
F.
In diesem Fall ersetze α → β durch (α − A) → β.
2
Führe für jede FD α → β in F Rechtsreduktion aus:
Überprüfe für alle B in β, ob B redundant, d.h., B in
+
αF
−{α→β})∪{α→(β−B)} . In diesem Fall ersetze α → β durch
α → (β − B).
3
Entferne FDs α → ∅ aus F. (Diese können in Schritt 2 entstehen.)
4
Fasse FDs α → β1 , α → β2 ,. . . , α → βk zusammen zu
α → β1 β2 . . . βk .
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Berechnung der kanonischen Überdeckung: Ein
Beispiel
Beispiel: F = {A → B, B → C, AB → C}
In Schritt 1 des Algorithmus ersetzen wir AB → C durch A → C,
da C in A+
F : C folgt aus A → B und B → C, wenn A gegeben.
Dann F = {A → B, B → C, A → C}.
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Berechnung der kanonischen Überdeckung: Ein
Beispiel
Beispiel: F = {A → B, B → C, AB → C}
In Schritt 1 des Algorithmus ersetzen wir AB → C durch A → C,
da C in A+
F : C folgt aus A → B und B → C, wenn A gegeben.
Dann F = {A → B, B → C, A → C}.
In Schritt 2 ersetzen wir A → C durch A → ∅, da C redundant:
C in A+
{A→B,B→C,A→∅} .
Dann F = {A → B, B → C, A → ∅}.
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Berechnung der kanonischen Überdeckung: Ein
Beispiel
Beispiel: F = {A → B, B → C, AB → C}
In Schritt 1 des Algorithmus ersetzen wir AB → C durch A → C,
da C in A+
F : C folgt aus A → B und B → C, wenn A gegeben.
Dann F = {A → B, B → C, A → C}.
In Schritt 2 ersetzen wir A → C durch A → ∅, da C redundant:
C in A+
{A→B,B→C,A→∅} .
Dann F = {A → B, B → C, A → ∅}.
In Schritt 3 entfernen wir A → ∅.
Dann F = {A → B, B → C}.
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Berechnung der kanonischen Überdeckung: Ein
Beispiel
Beispiel: F = {A → B, B → C, AB → C}
In Schritt 1 des Algorithmus ersetzen wir AB → C durch A → C,
da C in A+
F : C folgt aus A → B und B → C, wenn A gegeben.
Dann F = {A → B, B → C, A → C}.
In Schritt 2 ersetzen wir A → C durch A → ∅, da C redundant:
C in A+
{A→B,B→C,A→∅} .
Dann F = {A → B, B → C, A → ∅}.
In Schritt 3 entfernen wir A → ∅.
Dann F = {A → B, B → C}.
Schritt 4 lässt F unverändert, sodass die kanonische
Überdeckung Fc = {A → B, B → C}.
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Anomalien in schlecht designten Datenbankschemata
Betrachten das folgende Datenbankschema zum Speichern von
Studenteninformation:
M_Nr
Name
Lva_Nr
Lva
Note
1335123
1335123
.
.
.
Franz Huber
Franz Huber
.
.
.
150420
150111
.
.
.
Datenbanken
IT I
.
.
.
2
4
.
.
.
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Anomalien in schlecht designten Datenbankschemata
Betrachten das folgende Datenbankschema zum Speichern von
Studenteninformation:
M_Nr
Name
Lva_Nr
Lva
Note
1335123
1335123
.
.
.
Franz Huber
Franz Huber
.
.
.
150420
150111
.
.
.
Datenbanken
IT I
.
.
.
2
4
.
.
.
Das ist ein schlecht designtes Datenbankschema, weil ...
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Update-Anomalie
Das ist ein schlecht designtes Datenbankschema, weil ...
... wenn Studenteninformation aktualisiert wird, müssen mehrere
Zeilen geändert werden:
M_Nr
Name
Lva_Nr
Lva
Note
1335123
1335123
.
.
.
Franz Huber
Franz Huber
.
.
.
150420
150111
.
.
.
Datenbanken
IT I
.
.
.
2
4
.
.
.
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Update-Anomalie
Das ist ein schlecht designtes Datenbankschema, weil ...
... wenn Studenteninformation aktualisiert wird, müssen mehrere
Zeilen geändert werden:
M_Nr
Name
Lva_Nr
Lva
Note
1335123
1335123
.
.
.
Adolf Huber
Adolf Huber
.
.
.
150420
150111
.
.
.
Datenbanken
IT I
.
.
.
2
4
.
.
.
fehleranfällig
schlechtere Performance bei Aktualisierungen
speichert redundante Information
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Einfüge-Anomalie
Das ist ein schlecht designtes Datenbankschema, weil ...
... wenn neue Studenteninformation eingefügt wird, ist keine
entsprechende Lehrveranstaltungsinformation verfügbar:
M_Nr
Name
Lva_Nr
Lva
Note
1335123
1335123
1635001
.
.
.
Franz Huber
Franz Huber
Anna Schmied
.
.
.
150420
150111
NULL
.
.
.
Datenbanken
IT I
NULL
.
.
.
2
4
NULL
.
.
.
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Lösch-Anomalie
Das ist ein schlecht designtes Datenbankschema, weil ...
... wenn Informationen von Studenten gelöscht werden, gehen
Informationen über Lehrveranstaltungen verloren und umgekehrt:
M_Nr
Name
Lva_Nr
Lva
Note
1335123
1335123
.
.
.
Franz Huber
Franz Huber
.
.
.
150420
150111
.
.
.
Datenbanken
IT I
.
.
.
2
4
.
.
.
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Lösch-Anomalie
Das ist ein schlecht designtes Datenbankschema, weil ...
... wenn Informationen von Studenten gelöscht werden, gehen
Informationen über Lehrveranstaltungen verloren und umgekehrt:
M_Nr
.
.
.
Name
.
.
.
Lva_Nr
.
.
.
Lva
.
.
.
Note
.
.
.
Das passiert auch, wenn z.B. Informationen von “alten” Prüfungen
gelöscht werden.
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Zerlegung von Relationen
Outline
1
Organisatorisches
2
SQL
3
Funktionale Abhängigkeit
4
Anomalien
5
Datenbank Normalisierung
Zerlegung von Relationen
Ronald Ortner
Anomalien
Datenbank Normalisierung
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Zerlegung von Relationen
Zerlegung von Relationen
Anomalien treten auf, wenn Informationen, die nicht
“zusammenpassen”, in eine Tabelle/Relation gesteckt werden.
Idee der Normalisierung:
Zerlege Relation R in kleinere Relationen R1 , . . . Rn .
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Zerlegung von Relationen
Zerlegung von Relationen
Anomalien treten auf, wenn Informationen, die nicht
“zusammenpassen”, in eine Tabelle/Relation gesteckt werden.
Idee der Normalisierung:
Zerlege Relation R in kleinere Relationen R1 , . . . Rn .
Dabei soll die Zerlegung gewisse Eigenschaften erfüllen:
Verlustfreiheit:
R kann aus R1 , . . . Rn rekonstruiert werden.
Erhaltung von FDs:
Die funktionalen Abhängigkeiten von R bleiben in R1 , . . . Rn
erhalten.
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Zerlegung von Relationen
Verlustfreiheit
Betrachten Zerlegung von R in zwei Relationen R1 , R2 .
Um Verlustfreiheit zu haben, benötigen wir zumindest R = R1 ∪ R2 .
Darüber hinaus möchten wir:
Definition (Verlustfreiheit)
Die Zerlegung von R in R1 , R2 ist verlustfrei, wenn für Realisierungen
R von R (und für entsprechende Zerlegungen R1 , R2 ):
R ist der natürliche Join von R1 und R2 , d.h. R = R1 o
n R2 .
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Zerlegung von Relationen
Verlustfreiheit: Beispiel
Betrachten die folgende Relation/Tabelle:
Ronald Ortner
Gast
Gasthof
Bier
R.Ortner
F.Huber
R.Ortner
Gösserbräu
Zur Post
Zur Post
Gösser
Gösser
Murauer
Datenbank Normalisierung
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Zerlegung von Relationen
Verlustfreiheit: Beispiel
Betrachten die folgende Relation/Tabelle:
Gast
Gasthof
Bier
R.Ortner
F.Huber
R.Ortner
Gösserbräu
Zur Post
Zur Post
Gösser
Gösser
Murauer
Betrachten folgende Zerlegung:
Besucher: {[Gast, Gasthof]}
Getränke: {[Gast, Bier]}
Ronald Ortner
Datenbank Normalisierung
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Zerlegung von Relationen
Verlustfreiheit: Beispiel
Betrachten die folgende Relation/Tabelle:
Gast
Gasthof
Bier
R.Ortner
F.Huber
R.Ortner
Gösserbräu
Zur Post
Zur Post
Gösser
Gösser
Murauer
Besucher:
Ronald Ortner
Gast
Gasthof
R.Ortner
F.Huber
R.Ortner
Gösserbräu
Zur Post
Zur Post
Datenbank Normalisierung
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Zerlegung von Relationen
Verlustfreiheit: Beispiel
Betrachten die folgende Relation/Tabelle:
Gast
Gasthof
Bier
R.Ortner
F.Huber
R.Ortner
Gösserbräu
Zur Post
Zur Post
Gösser
Gösser
Murauer
Getränke:
Ronald Ortner
Gast
Bier
R.Ortner
F.Huber
R.Ortner
Gösser
Gösser
Murauer
Datenbank Normalisierung
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Zerlegung von Relationen
Verlustfreiheit: Beispiel
Der Join der beiden Relationen Besucher und Getränke enthält zwei
zusätzliche (falsche) Einträge:
Ronald Ortner
Gast
Gasthof
Bier
R.Ortner
R.Ortner
F.Huber
R.Ortner
R.Ortner
Gösserbräu
Gösserbräu
Zur Post
Zur Post
Zur Post
Gösser
Murauer
Gösser
Murauer
Gösser
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Zerlegung von Relationen
Verlustfreiheit: Beispiel
Der Join der beiden Relationen Besucher und Getränke enthält zwei
zusätzliche (falsche) Einträge:
Gast
Gasthof
Bier
R.Ortner
R.Ortner
F.Huber
R.Ortner
R.Ortner
Gösserbräu
Gösserbräu
Zur Post
Zur Post
Zur Post
Gösser
Murauer
Gösser
Murauer
Gösser
Diese Zerlegung ist nicht verlustfrei.
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Zerlegung von Relationen
Ein Kriterium für Verlustfreiheit
Man kann ein Kriterium für Verlustfreiheit über funktionale
Abhängigkeiten(FDs) angeben:
Kriterium für Verlustfreiheit
Eine Zerlegung von R mit FDs F in R1 , R2 ist verlustlos, wenn
zumindest eine der beiden folgenden Bedingungen gilt:
(R1 ∩ R2 ) → R1 ist in F + ,
(R1 ∩ R2 ) → R2 ist in F + .
In unserem Beispiel gibt es nur die FD {Gast}→{Gasthof,Bier}, aber es
gelten weder {Gast}→{Gasthof} noch {Gast}→{Bier}.
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Zerlegung von Relationen
Verlustfreiheit: Weiteres Beispiel
Betrachten folgende Relation:
Vater
.
.
.
Mutter
.
.
.
Kind
.
.
.
Die Zerlegung in Relationen
Väter: {[Vater, Kind]}
Mütter: {[Mutter, Kind]}
ist verlustlos, da beide FDs {Kind}→{Vater} und {Kind}→{Mutter}
gelten.
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Zerlegung von Relationen
Erhaltung von Abhängigkeiten
Gegeben: Relation R mit FDs F und Zerlegung in R1 , . . . , Rn .
Im Prinzip können FDs auch dann überprüft werden, wenn diese durch
die Zerlegung ’auseinandergerissen’ werden:
Bilde Join der Realisierungen R1 , . . . Rn .
Überprüfe FDs.
Besser ist allerdings:
FDs können in den Relationen R1 , . . . , Rn überprüft werden.
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Zerlegung von Relationen
Abhängigkeitserhaltung
D.h., wir hätten gerne:
Definition (Abhängigkeitserhaltung)
Gegeben sei eine Relation R mit FDs F und eine Zerlegung von R in
R1 , . . . , Rn , wobei jedes Ri die FDs Fi hat. Diese Zerlegung ist
abhängigkeitserhaltend, wenn
F ≡ (F1 ∪ . . . ∪ Fn ).
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Zerlegung von Relationen
Abhängigkeitserhaltung: Beispiel
Stadt
Bundesland
Strasse
PLZ
Bruck
Leoben
Bruck
Stmk
Stmk
NÖ
Mittergasse
Franz Josef Straße
Hauptstraße
8600
8700
2460
Wir nehmen an:
Es gibt keine zwei Städte mit gleichem Namen im gleichen
Bundesland.
Die PLZ ändert sich nicht innerhalb derselben Straße.
Verschiedene Städte haben unterschiedliche PLZ.
Städte gehören eindeutig zu einem Bundesland.
Ronald Ortner
Organisatorisches
SQL
Funktionale Abhängigkeit
Anomalien
Datenbank Normalisierung
Zerlegung von Relationen
Abhängigkeitserhaltung: Beispiel
Stadt
Bundesland
Straße
PLZ
Bruck
Leoben
Bruck
Stmk
Stmk
NÖ
Mittergasse
Franz Josef Straße
Hauptstraße
8600
8700
2460
Betrachten folgende Zerlegung:
Städte: {[PLZ, Stadt, Bundesland]}
Streets: {[PLZ, Straße]}
Diese Zerlegung ist verlustlos, da FD {PLZ}→{Stadt, Bundesland} gilt.
Allerdings, kann die FD {Stadt,Bundesland,Straße}→{PLZ} keiner der
neuen Relationen zugeordnet werden.
Diese Zerlegung ist nicht abhängigkeitserhaltend.
Ronald Ortner
Herunterladen