![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Bei der Normalisierung eines Datenbankentwurfs versucht man, sogenannte Lösch-, Einfüge- und Update-Anomalien zu verhindern.
Beispiel Lösch-Anomalie: Ein Kunde wird aus der
Kundentabelle gelöscht, wird dann aber noch in der Adressentabelle mitgeführt.
Die Idee bei der Normalisierung besteht in der Einführung neuer Tabellen, damit
die Datenbank dann die Normalform-Kriterien erfüllt. Hier werden nur die erste bis dritte Normalform (kurz: 1. NF - 3. NF) behandelt, aber es gibt da noch mehr . . .
ist unsere Projektwochen-Datenbank mit der Tabelle sar_projekte
prowonr | Thema | Stufe | Anzahl | Raumbedarf | SCHULGERAETE =============================================================================== 1 | So ein Theater | 8, 9, 10 | 20 | Info-Zentrum | k. A. 2 | HTML für Einsteiger | 7, 8 | 20 | Computerraum | Computer 3 | Easy-Webdesign | 7, 8 | 20 | Computerraum | Computer<<<
In der 1. Normalform (1. NF) bestehen Zellen nur aus atomaren Werten, es darf keine Wiederholgruppen geben. In der Tabelle sar_projekte gibt es aber in der Spalte stufe
Wiederholgruppen: z. B. in der ersten Zeile 8, 9, 10
. Wir überführen die Tabelle in die 1. NF, indem wir zusätzliche Zeilen einführen, so dass die Werte in der Spalte stufe
atomar sind.
Ergebnis: neue Tabelle sar_projekte
(in 1. NF)
prowonr | Thema | Stufe | Anzahl | Raumbedarf | SCHULGERAETE ================================================================================ 1 | So ein Theater | 8 | 20 | Info-Zentrum | k. A. 1 | So ein Theater | 9 | 20 | Info-Zentrum | k. A. 1 | So ein Theater | 10 | 20 | Info-Zentrum | k. A. 2 | HTML für Einsteiger | 7 | 20 | Computerraum | Computer 2 | HTML für Einsteiger | 8 | 20 | Computerraum | Computer 3 | Easy-Webdesign | 7 | 20 | Computerraum | Computer 3 | Easy-Webdesign | 8 | 20 | Computerraum | Computer
Problem: Der Schlüssel prowonr
ist nicht mehr eindeutig, wir benötigen jetzt zusätzlich die stufe
. Die Lösung besteht in der Einführung zusätzlicher Tabellen, und das führt uns zur . . .
Für die Attribute Thema und Anzahl brauchen
wir gar nicht den kombinierten Primärschlüssel, hier reicht
auch der Schlüssel prowonr
. Die Attribute Thema und Anzahl sind
also "voll funktional abhängig" vom Schlüssel
prowonr
, während die Attribute Raumbedarf und Schulgeraete
vermutlich auch nicht atomar sind.
Ergebnis: statt 1 Tabelle haben wir jetzt 4 Tabellen!
Neue Tabelle prowonr_Stufe
prowonr | Stufe =================== 1 | 8 1 | 9 1 | 10 2 | 7 2 | 8 3 | 7 3 | 8
mit dem kombinierten Schlüssel prowonr-Stufe
.
Analog für Attribute Raumbedarf und Schulgeraete.
Neue Tabelle prowonr_Raumbedarf
prowonr | Raumbedarf ======================= 1 | Info-Zentrum 2 | Computerraum 3 | Computerraum
mit dem kombinierten Schlüssel prowonr-Raumbedarf
.
Neue Tabelle prowonr_SCHULGERAETE
prowonr | SCHULGERAETE ========================= 1 | k. A. 2 | Computer 3 | Computer
mit dem kombinierten Schlüssel prowonr-SCHULGERAETE
.
Und natürlich unsere neue Tabelle sar_projekte
(in 2. NF)
prowonr | Thema | Anzahl ======================================= 1 | So ein Theater | 20 2 | HTML für Einsteiger | 20 3 | Easy-Webdesign | 20<<<
Bei der 3. Normalform (3. NF) schauen wir uns die Nichtschlüssel-Attribute an und fragen, ob diese Attribute nicht nur vom Primärschlüssel abhängig sind, sondern von einem weiteren Nichtschlüssel-Attribut. Als Beispiel nehmen wir eine Kundentabelle (in 2. NF):
Kunde(Kundennr,Name,PLZ,Ort)
Der Primärschlüssel ist die Kundennr, der Nichtschlüssel Ort hängt aber auch eindeutig von der PLZ (Postleitzahl) ab, man nennt diese Art der Abhängigkeit transitiv und fordert:
Eine Tabelle in 3. Normalform hat keine transitiven Abhängigkeiten mehr zwischen Nichtschlüssel-Attributen, ein Nichtschlüssel-Attribut hängt also ausschließlich vom Primärschlüssel ab. |
Die Kundentabelle (in 3. NF):
Kunde(Kundennr,Name,PLZ)
sowie die neue Tabelle Stadt
Stadt(PLZ,Ort)
Unsere Tabelle sar_projekte
prowonr | Thema | Anzahl ======================================= 1 | So ein Theater | 20 2 | HTML für Einsteiger | 20 3 | Easy-Webdesign | 20
ist aber schon in der 3. NF, da die Nichtschlüssel-Attribute Thema und Anzahl funktional abhängig sind vom Primärschlüssel und keine transitiven Abhängigkeiten existieren.
Fazit: Normalisierung besteht in der Einführung neuer Tabellen, damit die Datenbank dann die Normalform-Kriterien 1., 2. und 3. erfüllt.
<<<Siehe im Datenbanken-Reader S. 111-115 (Abschnitt 3.5). Zusätzlich findet sich im Datenbanken-Reader auf S. 116 ein Struktogramm, welches den Prozeß der Normalisierung zusammenfasst.
Und noch ein Tipp: Auf S. 117 gibt es im Datenbanken-Reader eine Reflexion zum Datenbankdesign, hilfreich fürs Projekt!
<<<