Datenbanken 6: Normalisierung

Werbung
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
Normalisierung
Datenbanken 6: Normalisierung
Ronald Ortner
27. III. 2017
Ronald Ortner
SQL
Überblick Datenbankdesign
Anomalien
Outline
1
SQL
2
Überblick Datenbankdesign
3
Anomalien
4
Datenbank Normalisierung
Zerlegung von Relationen
5
Normalisierung
Erste Normalform
Zweite Normalform
Dritte Normalform
Boyce-Codd Normal Form
Ronald Ortner
Datenbank Normalisierung
Normalisierung
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
SQL
Nachbesprechung Zwischentest
korrelierte Subqueries
Ronald Ortner
Normalisierung
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
Nachbesprechung Zwischentest
unvollständiges GROUP BY
Subquery statt WHERE
Bedingungen in Subquery
Ronald Ortner
Normalisierung
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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 β.
Idee:
Legt man einen Wert für α fest, so ist auch der Wert für β festgelegt.
α → β bedeutet, dass β durch α eindeutig bestimmt wird.
Ronald Ortner
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Zerlegung von Relationen
Outline
1
SQL
2
Überblick Datenbankdesign
3
Anomalien
4
Datenbank Normalisierung
Zerlegung von Relationen
5
Normalisierung
Erste Normalform
Zweite Normalform
Dritte Normalform
Boyce-Codd Normal Form
Ronald Ortner
Datenbank Normalisierung
Normalisierung
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
Normalisierung
Zerlegung von Relationen
Zerlegung von Relationen
Anomalien treten auf, wenn Informationen, die nicht
“zusammenpassen”, in dieselbe Tabelle/Relation gesteckt werden.
Idee der Normalisierung:
Zerlege Relation R in kleinere Relationen R1 , . . . Rn .
Ronald Ortner
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
Normalisierung
Zerlegung von Relationen
Zerlegung von Relationen
Anomalien treten auf, wenn Informationen, die nicht
“zusammenpassen”, in dieselbe 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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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]}
Straßen: {[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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
Zerlegung von Relationen
Normalisierung: Ausblick
Wir kennen inzwischen:
funktionale Abhängigkeiten (FDs)
Eigenschaften guter Zerlegungen
(Verlustlosigkeit, Abhängigkeitserhaltung)
Ronald Ortner
Normalisierung
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
Normalisierung
Zerlegung von Relationen
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
Normalisierung
Zerlegung von Relationen
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
Normalisierung
Zerlegung von Relationen
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
Normalisierung
Zerlegung von Relationen
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
SQL
Überblick Datenbankdesign
Anomalien
Erste Normalform
Outline
1
SQL
2
Überblick Datenbankdesign
3
Anomalien
4
Datenbank Normalisierung
Zerlegung von Relationen
5
Normalisierung
Erste Normalform
Zweite Normalform
Dritte Normalform
Boyce-Codd Normal Form
Ronald Ortner
Datenbank Normalisierung
Normalisierung
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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}
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Zweite Normalform
Outline
1
SQL
2
Überblick Datenbankdesign
3
Anomalien
4
Datenbank Normalisierung
Zerlegung von Relationen
5
Normalisierung
Erste Normalform
Zweite Normalform
Dritte Normalform
Boyce-Codd Normal Form
Ronald Ortner
Datenbank Normalisierung
Normalisierung
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Dritte Normalform
Outline
1
SQL
2
Überblick Datenbankdesign
3
Anomalien
4
Datenbank Normalisierung
Zerlegung von Relationen
5
Normalisierung
Erste Normalform
Zweite Normalform
Dritte Normalform
Boyce-Codd Normal Form
Ronald Ortner
Datenbank Normalisierung
Normalisierung
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
Normalisierung
Dritte Normalform
Dritte Normalform – Beispiel
Beispiel.
MNr
LvaNr
Ronald Ortner
Lva
Vname
Nname
MNr
Stkz
Studium
LvaNr
Datum
Note
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Boyce-Codd Normal Form
Outline
1
SQL
2
Überblick Datenbankdesign
3
Anomalien
4
Datenbank Normalisierung
Zerlegung von Relationen
5
Normalisierung
Erste Normalform
Zweite Normalform
Dritte Normalform
Boyce-Codd Normal Form
Ronald Ortner
Datenbank Normalisierung
Normalisierung
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
SQL
Überblick Datenbankdesign
Anomalien
Datenbank Normalisierung
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
Herunterladen