Datenbanken 6: Normalisierung

Werbung
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Datenbanken 6: Normalisierung
Ronald Ortner
26. IV. 2016
Ronald Ortner
Organisatorisches
SQL
Überblick Datenbankdesign
Outline
1
Organisatorisches
2
SQL
3
Überblick Datenbankdesign
4
Normalisierung
Erste Normalform
Zweite Normalform
Dritte Normalform
Boyce-Codd Normal Form
Vierte Normalform
Ronald Ortner
Normalisierung
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Organisatorisches
In zwei Wochen, am 10. Mai findet der zweite Zwischentest statt.
Aufsicht übernimmt Martin Antenreiter.
VO entfällt an diesem Tag.
Fragestunde bereits nächste Woche
Ronald Ortner
Organisatorisches
SQL
Überblick Datenbankdesign
SQL
Nachbesprechung Zwischentest
korrelierte Subqueries
Ronald Ortner
Normalisierung
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Nachbesprechung Zwischentest
LIKE vs. =
COUNT vs. SUM
Subquery statt WHERE
HAVING statt WHERE
DISTINCT für Abgabesystem
Ronald Ortner
Organisatorisches
SQL
Überblick Datenbankdesign
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
Überblick Datenbankdesign
Normalisierung
Funktionale Abhängigkeit
Zur Erinnerung:
Definition (funktionale Abhängigkeit)
Gegeben sei ein abstraktes relationales Datenbankschema R
sowie (Mengen von) Attribute(n) α, β in R.
Wir sagen, dass β funktional abhängig 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 β.
Achtung:
Für unsere Belange ist nur diese Art von Abhängigkeit relevant.
Andere Formen von Abhängigkeit (z.B. Korrelation) spielen keine Rolle
und dürfen nicht mit funktionaler Abhängigkeit verwechselt werden!
Ronald Ortner
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Normalisierung: Ausblick
Wir kennen inzwischen:
funktionale Abhängigkeiten (FDs)
Eigenschaften guter Zerlegungen
(Verlustlosigkeit, Abhängigkeitserhaltung)
Ronald Ortner
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Normalisierung: Ausblick
Wir kennen inzwischen:
funktionale Abhängigkeiten (FDs)
Eigenschaften guter Zerlegungen
(Verlustlosigkeit, Abhängigkeitserhaltung)
Wir hätten gerne:
guten Weg, um eine gegebene Relation R in kleinere Relationen
zu zerlegen
Ronald Ortner
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Normalisierung: Ausblick
Wir kennen inzwischen:
funktionale Abhängigkeiten (FDs)
Eigenschaften guter Zerlegungen
(Verlustlosigkeit, Abhängigkeitserhaltung)
Wir hätten gerne:
guten Weg, um eine gegebene Relation R in kleinere Relationen
zu zerlegen
Wir machen dies über:
Schritt-für-Schritt Normalisierung
Mit jedem Schritt erreichen wir eine höhere Normalisierungsstufe
(1 bis 4).
Ronald Ortner
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Normalisierung: Ausblick
Wir hätten gerne:
guten Weg, um eine gegebene Relation R in kleinere Relationen
zu zerlegen
Wir machen dies über:
Schritt-für-Schritt Normalisierung
Mit jedem Schritt erreichen wir eine höhere Normalisierungsstufe
(1 bis 4).
Normalisierung erreicht:
verlustlose Zerlegung
manchmal auch abhängigkeitserhaltende Zerlegung
In den entstehenden Relationen gibt es nur mehr interessante
FDs zwischen Schlüssel- und Nichtschlüsselattributen.
Ronald Ortner
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Normalisierung
Alternatives Material zu Normalisierung:
Kapitel 2 von
Andreas Meier: “Relationale und postrelationale Datenbanken”,
Springer (innerhalb der MUL frei als pdf zum Download)
Ronald Ortner
Organisatorisches
SQL
Überblick Datenbankdesign
Erste Normalform
Outline
1
Organisatorisches
2
SQL
3
Überblick Datenbankdesign
4
Normalisierung
Erste Normalform
Zweite Normalform
Dritte Normalform
Boyce-Codd Normal Form
Vierte Normalform
Ronald Ortner
Normalisierung
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Erste Normalform
Erste Normalform
Definition (1NF)
Eine Relation ist in 1NF, wenn alle Attribute atomar sind.
Diese Voraussetzung haben wir bereits gemacht.
Beispiel einer Tabelle/Relation, die nicht in 1NF:
Ronald Ortner
Vater
Mutter
Kinder
Karl
Ronald
Andreas
Maria
Elisabeth
Marianne
{Fritz, Franziska}
{Hannes, Kathrin}
{Sophia}
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Erste Normalform
Erste Normalform – Beispiel
Beispiel einer Tabelle/Relation, die nicht in 1NF:
Vater
Mutter
Kinder
Karl
Ronald
Andreas
Maria
Elisabeth
Marianne
{Fritz, Franziska}
{Hannes, Kathrin}
{Sophia}
→ kann leicht in 1NF konvertiert werden:
Ronald Ortner
Vater
Mutter
Kind
Karl
Karl
Ronald
Ronald
Andreas
Maria
Maria
Elisabeth
Elisabeth
Marianne
Fritz
Franziska
Hannes
Kathrin
Sophia
Organisatorisches
SQL
Überblick Datenbankdesign
Zweite Normalform
Outline
1
Organisatorisches
2
SQL
3
Überblick Datenbankdesign
4
Normalisierung
Erste Normalform
Zweite Normalform
Dritte Normalform
Boyce-Codd Normal Form
Vierte Normalform
Ronald Ortner
Normalisierung
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Zweite Normalform
Zweite Normalform
Definition (2NF)
Eine Relation ist in 2NF, wenn sie in 1NF ist und jedes
Nichtschlüsselattribut voll funktional abhängig von jedem
Kandidatenschlüssel ist.
(Zur Erinnerung: β ist voll funktional abhängig von α, wenn α → β mit
α minimal.)
Intuition: Jedes Attribut im Schlüssel ist wichtig.
Ronald Ortner
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Zweite Normalform
Zweite Normalform – Beispiel
Betrachten folgende Tabelle mit Studenteninformationen:
(Annahme: nur ein Studium pro Student)
Vname
Nname
MNr
Stkz
Studium
LvaNr
Lva
Datum
Note
Wie sieht Schlüssel in dieser Tabelle aus?
D.h. welche Werte müssen festgelegt werden, um eine Zeile eindeutig
zu identifizieren?
Ronald Ortner
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Zweite Normalform
Zweite Normalform – Beispiel
Betrachten folgende Tabelle mit Studenteninformationen:
(Annahme: nur ein Studium pro Student)
Vname
Nname
MNr
Stkz
Studium
LvaNr
Lva
Datum
Note
Wie sieht Schlüssel in dieser Tabelle aus?
D.h. welche Werte müssen festgelegt werden, um eine Zeile eindeutig
zu identifizieren?
Legt man Matrikelnummer, Lehrveranstaltungsnummer sowie Datum
fest, kann es zu den gegebenen Werten nur eine Zeile in der Tabelle
geben.
{MNr,LvaNr,Datum} bildet (Super-)Schlüssel der Tabelle.
Ronald Ortner
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Zweite Normalform
Zweite Normalform – Beispiel
Vname
Nname
MNr
Stkz
Studium
LvaNr
Lva
Datum
Note
Listen für jedes Nichtschlüsselattribut jene Schlüsselattribute auf, von
denen es voll funktional abhängt:
Vname:
Nname:
Stkz:
Studium:
Lva:
Note:
Ronald Ortner
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Zweite Normalform
Zweite Normalform – Beispiel
Vname
Nname
MNr
Stkz
Studium
LvaNr
Lva
Datum
Note
Listen für jedes Nichtschlüsselattribut jene Schlüsselattribute auf, von
denen es voll funktional abhängt:
Vname: MNr
Nname:
Stkz:
Studium:
Lva:
Note:
Ronald Ortner
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Zweite Normalform
Zweite Normalform – Beispiel
Vname
Nname
MNr
Stkz
Studium
LvaNr
Lva
Datum
Note
Listen für jedes Nichtschlüsselattribut jene Schlüsselattribute auf, von
denen es voll funktional abhängt:
Vname: MNr
Nname: MNr
Stkz:
Studium:
Lva:
Note:
Ronald Ortner
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Zweite Normalform
Zweite Normalform – Beispiel
Vname
Nname
MNr
Stkz
Studium
LvaNr
Lva
Datum
Note
Listen für jedes Nichtschlüsselattribut jene Schlüsselattribute auf, von
denen es voll funktional abhängt:
Vname: MNr
Nname: MNr
Stkz: MNr
Studium:
Lva:
Note:
Ronald Ortner
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Zweite Normalform
Zweite Normalform – Beispiel
Vname
Nname
MNr
Stkz
Studium
LvaNr
Lva
Datum
Note
Listen für jedes Nichtschlüsselattribut jene Schlüsselattribute auf, von
denen es voll funktional abhängt:
Vname: MNr
Nname: MNr
Stkz: MNr
Studium: MNr
Lva:
Note:
Ronald Ortner
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Zweite Normalform
Zweite Normalform – Beispiel
Vname
Nname
MNr
Stkz
Studium
LvaNr
Lva
Datum
Note
Listen für jedes Nichtschlüsselattribut jene Schlüsselattribute auf, von
denen es voll funktional abhängt:
Vname: MNr
Nname: MNr
Stkz: MNr
Studium: MNr
Lva: LvaNr
Note:
Ronald Ortner
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Zweite Normalform
Zweite Normalform – Beispiel
Vname
Nname
MNr
Stkz
Studium
LvaNr
Lva
Datum
Note
Listen für jedes Nichtschlüsselattribut jene Schlüsselattribute auf, von
denen es voll funktional abhängt:
Vname: MNr
Nname: MNr
Stkz: MNr
Studium: MNr
Lva: LvaNr
Note: MNr, LvaNr, Datum
Ronald Ortner
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Zweite Normalform
Zweite Normalform – Beispiel
Vname
Nname
MNr
Stkz
Studium
LvaNr
Lva
Datum
Note
Listen für jedes Nichtschlüsselattribut jene Schlüsselattribute auf, von
denen es voll funktional abhängt:
Vname: MNr
Nname: MNr
Stkz: MNr
Studium: MNr
Lva: LvaNr
Note: MNr, LvaNr, Datum
Diese Tabelle ist nicht in 2NF!
Ronald Ortner
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Zweite Normalform
Zweite Normalform – Beispiel
bekommen 2NF, indem Attribute, die von derselben Menge von
Schlüsselattributen abhängen, in einer Tabelle zusammengefasst
werden:
MNr
LvaNr
Lva
Vname
Nname
MNr
Stkz
Studium
LvaNr
Datum
Note
Falls es kein Nichtschlüsselattribut gibt, das vom gesamten Schlüssel
abhängt, gibt es eine zusätzliche Tabelle, die nur die Schlüsselwerte
enthält!
Ronald Ortner
Organisatorisches
SQL
Überblick Datenbankdesign
Dritte Normalform
Outline
1
Organisatorisches
2
SQL
3
Überblick Datenbankdesign
4
Normalisierung
Erste Normalform
Zweite Normalform
Dritte Normalform
Boyce-Codd Normal Form
Vierte Normalform
Ronald Ortner
Normalisierung
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Dritte Normalform
Dritte Normalform
Definition (3NF)
Eine Relation ist in 3NF, wenn sie in 1NF ist und für jede FD α → β
mindestens eine der folgenden Bedingungen gilt:
1
β ⊆ α, d.h. die FD α → β ist trivial,
2
β ist in einem Kandidatenschlüssel enthalten,
3
α ist ein Superschlüssel.
Insbesondere ist eine Relation nicht in 3NF, wenn es FDs zwischen
Attributen gibt, die nicht Teil eines (Kandidaten-/Super-)Schlüssels
sind.
Intuition: wollen keine FDs zwischen Nichtschlüsselattributen
Ronald Ortner
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Dritte Normalform
Dritte Normalform – Beispiel
Beispiel.
MNr
LvaNr
Ronald Ortner
Lva
Vname
Nname
MNr
Stkz
Studium
LvaNr
Datum
Note
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Dritte Normalform
Dritte Normalform – Beispiel
Beispiel.
MNr
LvaNr
Lva
Vname
Nname
MNr
Stkz
Studium
LvaNr
Datum
Note
Die FD Stkz → Studium erfüllt keine der Bedingungen zur 3NF..
Ronald Ortner
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Dritte Normalform
Dritte Normalform – Beispiel
Beispiel.
Zerlegung, die 3NF erfüllt:
MNr
Vname
LvaNr
Ronald Ortner
Lva
Nname
Stkz
MNr
Stkz
LvaNr
Datum
Studium
Note
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Dritte Normalform
Synthesealgorithmus für 3NF
Gegeben: Relation R, Menge F von FDs
Wir wollen: verlustlose und abhängigkeitserhaltende Zerlegung
R1 , . . . , Rn , sodass jedes Ri in 3NF ist
Algorithmus:
1
Bestimme kanonische Überdeckung Fc von F (siehe Unit 5).
2
Lege für jede FD α → β in Fc eine Relation Rα := α ∪ β an
(und bestimme entsprechende Menge von FDs Fα ).
3
Wenn eine der Relationen Rα einen Kandidatenschlüssel von R
enthält, sind wir fertig.
Ansonsten lege weitere Relation Rκ für einen
Kandidatenschlüssel κ von R an (mit Fκ = ∅).
4
Lösche Relationen Rα0 , die in anderen Relationen Rα enthalten
sind, d.h. Rα0 ⊆ Rα .
Ronald Ortner
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Dritte Normalform
Synthesealgorithmus – Beispiel
Betrachten folgende Tabelle mit Studenteninformationen:
(Annahme: nur ein Studium pro Student)
Vname
Nname
MNr
Stkz
Studium
Funktionale Abhängigkeiten:
MNr → Vname, Nname, Stkz, Studium
Stkz → Studium
LvaNr → Lva
MNr, LvaNr, Datum → Note
Ronald Ortner
LvaNr
Lva
Datum
Note
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Dritte Normalform
Synthesealgorithmus – Beispiel
Betrachten folgende Tabelle mit Studenteninformationen:
(Annahme: nur ein Studium pro Student)
Vname
Nname
MNr
Stkz
Studium
Kanonische funktionale Abhängigkeiten:
MNr → Vname, Nname, Stkz
Stkz → Studium
LvaNr → Lva
MNr, LvaNr, Datum → Note
Ronald Ortner
LvaNr
Lva
Datum
Note
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Dritte Normalform
Synthesealgorithmus – Beispiel
Betrachten folgende Tabelle mit Studenteninformationen:
(Annahme: nur ein Studium pro Student)
Vname
Nname
MNr
Stkz
Tabellen:
MNr, Vname, Nname, Stkz
Stkz, Studium
LvaNr, Lva
MNr, LvaNr, Datum, Note
Ronald Ortner
Studium
LvaNr
Lva
Datum
Note
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Dritte Normalform
Synthesealgorithmus – Beispiel
Betrachten folgende Tabelle mit Studenteninformationen:
(Annahme: nur ein Studium pro Student)
Vname
Nname
MNr
Stkz
Studium
LvaNr
Lva
Datum
Tabellen:
MNr, Vname, Nname, Stkz
Stkz, Studium
LvaNr, Lva
MNr, LvaNr, Datum, Note
Die letzte Tabelle enthält Kandidatenschlüssel der ursprünglichen
Tabelle, also sind wir fertig.
Ronald Ortner
Note
Organisatorisches
SQL
Überblick Datenbankdesign
Boyce-Codd Normal Form
Outline
1
Organisatorisches
2
SQL
3
Überblick Datenbankdesign
4
Normalisierung
Erste Normalform
Zweite Normalform
Dritte Normalform
Boyce-Codd Normal Form
Vierte Normalform
Ronald Ortner
Normalisierung
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Boyce-Codd Normal Form
Boyce-Codd Normalform
Definition (BCNF)
Eine Relation ist in BCNF, wenn sie in 1NF ist und für jede FD α → β
mindestens eine der folgenden eine der folgenden Bedingungen gilt:
1
β ⊆ α, d.h. die FD α → β ist trivial,
2
α ist ein Superschlüssel.
Unterschied zu 3NF:
β darf nicht mehr Teil eines Kandidatenschlüssels sein.
Intuition: Wie für 3NF wollen wir für BCNF keine FDs zwischen
Nichtschlüsselattributen haben (inkl. Attribute, die Teil eines
Kandidatenschlüssels sind, aber nicht als Primärschlüssel verwendet
werden).
Ronald Ortner
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Boyce-Codd Normal Form
Boyce-Codd Normalform – Beispiel
Beispiel.
MNr
LvaNr
Semester
Semesterabk
WS 2015/16
W15
Datum
Note
Die Relation zwischen Semester und Semesterabk ist 1:1,
sodass { MNr, LvaNr, Semester, Datum } ein
Kandidatenschlüssel ist.
Wir haben FDs:
{Semester}→{Semesterabk} und
{Semesterabk}→{Semester}
Weder Semster noch Semesterabk ist Superschlüssel, noch
sind die FDs trivial.
Tabelle ist nicht in BCNF
Ronald Ortner
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Boyce-Codd Normal Form
Boyce-Codd Normalform – Beispiel
Lösung: neue Tabelle für Semester
MNr
LvaNr
Semesterabk
Semesterabk
Ronald Ortner
Datum
Semester
Note
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Boyce-Codd Normal Form
Dekompositionsalgorithmus für BCNF
Gegeben: Relation R, Menge F von FDs
Wir wollen: Zerlegung R1 , . . . , Rn in BCNF
Dekompositionsalgorithmus:
Initialisiere Z := {R};
while (es gibt Ri in Z , das nicht in BCNF) do
1
Finde FD α → β in Ri mit α ∩ β = ∅ und α 6→ Ri .
2
Zerlege Ri in Ri1 := α ∪ β und Ri2 := Ri − β.
3
Ersetze Ri in Z durch Ri1 und Ri2 , d.h.
Z := (Z − {Ri }) ∪ {Ri1 , Ri2 }.
Ronald Ortner
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Boyce-Codd Normal Form
3NF vs. BCNF
Der Synthesealgorithmus garantiert Zerlegung, die
verlustlos,
abhängigkeitserhaltend und
in 3NF ist.
Der Dekompositionsalgorithmus garantiert Zerlegung, die
verlustlos und
in BCNF ist.
Ronald Ortner
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Boyce-Codd Normal Form
3NF vs. BCNF
Der Synthesealgorithmus garantiert Zerlegung, die
verlustlos,
abhängigkeitserhaltend und
in 3NF ist.
Der Dekompositionsalgorithmus garantiert Zerlegung, die
verlustlos und
in BCNF ist.
Unglücklicherweise gilt:
In einigen Fällen ist eine BCNF Zerlegung nicht
abhängigkeitserhaltend.
In diesen Fällen gibt man sich mit 3NF zufrieden.
Ronald Ortner
Organisatorisches
SQL
Überblick Datenbankdesign
Vierte Normalform
Outline
1
Organisatorisches
2
SQL
3
Überblick Datenbankdesign
4
Normalisierung
Erste Normalform
Zweite Normalform
Dritte Normalform
Boyce-Codd Normal Form
Vierte Normalform
Ronald Ortner
Normalisierung
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Vierte Normalform
Vierte Normalform und mehrwertige Abhängigkeiten
Beispiel:
möchten gerne Sprach- und Sportkurse für Studierende in Tabelle
speichern:
MNr
Sprachkurs
Sportkurs
1335335
1335335
1335335
1335335
1335335
1335335
Italienisch
Italienisch
Italienisch
Spanisch
Spanisch
Spanisch
Schifahren
Fechten
Fußball
Schifahren
Fechten
Fußball
Es ist offensichtlich keine gute Idee, zwei (oder mehr) N : M
Relationen in einer Tabelle zu speichern.
Ronald Ortner
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Vierte Normalform
Mehrwertige Abhängigkeiten
Die Abhängigkeiten
{MNr} →→ {Sprachkurs} und
{MNr} →→ {Sportkurs}
sind sogenannte mehrwertige Abhängigkeiten (MVDs).
Idee: Bei FD α → β bestimmt gegebener Wert für α eindeutig einen
Wert für β. Bei MVD α →→ β bestimmt gegebener Wert für α eindeutig
eine Menge von Werten für β.
Definition (MVD)
β ist mehrwertig abhängig von α (Notation: α →→ β), wenn es für alle
Tupel mit identischen α-Werten mehrere Tupel mit vertauschten
β-Werten gibt.
(MVDs sind eine Verallgemeinerung von FDs.)
Ronald Ortner
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Vierte Normalform
Mehrwertige Abhängigkeiten
Definition (MVD)
β ist mehrwertig abhängig von α (Notation: α →→ β), wenn es für alle
Tupel mit identischen α-Werten mehrere Tupel mit vertauschten
β-Werten gibt.
Im Beispiel:
Wenn es Zeilen
1335335, Italienisch, Fechten und
1335335, Spanisch, Fußball
gibt, dann auch Zeilen
1335335, Spanisch, Fechten und
1335335, Italienisch, Fußball.
Ronald Ortner
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Vierte Normalform
Vierte Normalform
Idee: Keine Tabelle enthält mehr als eine mehrwertige Relation.
Definition (4NF)
Eine Relation R ist in 4NF, wenn sie in 1NF ist und für jede MVD
α →→ β mindestens eine der folgenden Bedingungen gilt:
1
die MVD α →→ β ist trivial, d.h. entweder β ⊆ α oder β = R − α,
2
α ist ein Superschlüssel von R.
Anmerkung: Jede Relation in 4NF ist auch in BCNF.
Ronald Ortner
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Vierte Normalform
Vierte Normalform – Beispiel
MVDs:
MNr
Sprachkurs
Sportkurs
1335335
1335335
1335335
1335335
1335335
1335335
Italienisch
Italienisch
Italienisch
Spanisch
Spanisch
Spanisch
Schifahren
Fechten
Fußball
Schifahren
Fechten
Fußball
{MNr} →→ {Sprachkurs} und
{MNr} →→ {Sportkurs}
Tabelle nicht in 4NF
Ronald Ortner
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Vierte Normalform
Vierte Normalform – Beispiel
Beispiel.
MNr
Sprachkurs
1335335
1335335
Italienisch
Spanisch
Ronald Ortner
MNr
Sportkurs
1335335
1335335
1335335
Schifahren
Fechten
Fußball
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Vierte Normalform
Verallgemeinerter Dekompositionsalgorithmus für 4NF
Gegeben: Relation R, Menge F von MVDs
Wir wollen: Zerlegung R1 , . . . , Rn in 4NF
Verallgemeinerter Dekompositionsalgorithmus:
Initialisiere Z := {R};
while (es gibt Ri in Z , das nicht in 4NF) do
1
Finde MVD α →→ β in Ri mit α ∩ β = ∅ und α 6→ Ri .
2
Zerlege Ri in Ri1 := α ∪ β und Ri2 := Ri − β.
3
Ersetze Ri in Z durch Ri1 und Ri2 , d.h.
Z := (Z − {Ri }) ∪ {Ri1 , Ri2 }.
(Nachdem jede Relation in 4NF auch in BCNF ist, gibt es Fälle, wo
eine 4NF Zerlegung nicht abhängigkeitserhaltend ist.)
Ronald Ortner
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Vierte Normalform
Weiteres Beispiel
Datenbank Personalabteilung:
pers_no
name
lohn
abt
chef
projekt
FDs:
{pers_no} → {name, lohn, abt, chef}
{abt} → {chef}
{chef} → {abt}
MVDs:
{pers_no} →→ {projekt}
{pers_no} →→ {kurs}
Ronald Ortner
kurs
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Vierte Normalform
Weiteres Beispiel
Wenden Dekompositionsalgorithmus an:
FD {pers_no} → {name, lohn, abt, chef} gibt Zerlegung
pers_no
name
pers_no
Ronald Ortner
lohn
projekt
abt
kurs
chef
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Vierte Normalform
Weiteres Beispiel
Wenden Dekompositionsalgorithmus an:
FD {abt} → {chef} gibt Zerlegung
pers_no
name
lohn
pers_no
Ronald Ortner
abt
projekt
abt
kurs
chef
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Vierte Normalform
Weiteres Beispiel
Wenden Dekompositionsalgorithmus an:
MVDs {pers_no} →→ {projekt} und {pers_no} →→ {kurs}
geben Zerlegung
pers_no
pers_no
Ronald Ortner
name
lohn
projekt
abt
abt
pers_no
chef
kurs
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Vierte Normalform
Weiteres Beispiel
Wenden Dekompositionsalgorithmus an:
MVDs {pers_no} →→ {projekt} und {pers_no} →→ {kurs}
geben Zerlegung
pers_no
pers_no
ist in 4NF
Ronald Ortner
name
lohn
projekt
abt
abt
pers_no
chef
kurs
Organisatorisches
SQL
Überblick Datenbankdesign
Normalisierung
Vierte Normalform
Weiteres Beispiel
Wenn mehr Informationen zu Projekten und Kursen gespeichert
werden sollen:
pers_no
pers_no
projekt_nr
Ronald Ortner
name
lohn
projekt_nr
name
...
abt
abt
chef
pers_no
kurs_nr
kurs_nr
name
...
Herunterladen