Übersicht

  => Normalisierung
  => Ausgangspunkt
  => 1. Normalform
  => 2. Normalform
  => 3. Normalform
  => Beispiel
  => Aufgaben
 


Normalisierung

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 . . .


<<<

Ausgangspunkt

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
<<<

1. Normalform

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 . . .

<<<

2. Normalform

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
<<<

3. Normalform

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.

<<<

Beispiel

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!

<<<

Aufgaben

  1. Bearbeite das Beispiel auf S. 111-115.
  2. Aufgabe 11 auf Seite 118 ist eine gute Übung!
<<<
    W. Spiegel, E-Mail: Kontaktformular