Benutzer-Werkzeuge

Webseiten-Werkzeuge


sql:normalisierung_von_datenbanken

Normalisierung von Datenbanken

1. Normalform

Beispiel:

Nr.AlbumTitelJahr
1Volume 1Intro, Mitte 1, Mitte 2, Outro1999
2Volume 2Erster, Zweiter, Dritter2001

In diesem Beispiel enthält die Spalte Titel eine Aufzählung

→ Die einzelnen Titel können nur über Umwege separiert werden

Lösung: Für jeden Titel wird ein eigener Datensatz erzeugt und somit die Aufzählung (Wiederholgruppe) aufgelöst.

→ aufgelöste Wiederholgruppe

Nr.AlbumTitelJahr
1Volume 1Intro1999
1Volume 1Mitte 11999
1Volume 1mitte 21999
1Volume 1Outro1999
2Volume 2Erster2001
2Volume 2Zweiter2001
2Volume 2Dritter2001

Problem: Pro Satz gibt es keinen eindeutigen Schlüssel mehr.

Lösung: Einführung eines eindeutigen Schlüssels (Primärschlüssel).

SatzNr.AlbumTitelJahr
11Volume 1Intro1999
21Volume 1Mitte 11999
31Volume 1mitte 21999
41Volume 1Outro1999
52Volume 2Erster2001
62Volume 2Zweiter2001
72Volume 2Dritter2001

Die 1. Normalform liegt vor, wenn keine Wiederholgruppen enthalten sind, alle Schlüsselattribute vorhanden sind und alle Nichtschlüsselattribute vom Primärschlüssel bzw. Teilen davon abhängen.

2. Normalform

z.B.: In der oben genannten Tabelle sind Eigenschaften mit gleichem Wert mehrfach vorhanden (z.B.: Name des Albums)

Würde die Eigenschaft nur in einem Datensatz geändert, bleibt sie in den übrigen Sätzen mit den ursprünglichen Werten erhalten. (Insert- und Delete-Anomalie)

Lösung ist die 2. Normalform! Die 2. Normalform liegt vor, wenn sich die Datenbank in der 1. Normalform befindet und es keine Abhängigkeiten nur von Teilen des zusammengesetzten Primärschlüssels gibt. Das heißt, jede Spalte (Eigenschaft) hängt vom gesamten Primärschlüssel ab oder ist selbst Primärschlüssel.

Im Beispiel: Primärschlüssel Satz und Nr.

  • Album und Jahr hängen nur von Nr. ab.
  • Auslagerung in eigene Tabelle

3. Normalform

Spalten, deren Inhalt sich zum Beispiel aus Berechnungen anderer Spalten ergeben, müssen bei Änderungen aktualisiert werden.

Problem: Aktualisierung muss automatisch erfolgen.

Lösung: Spalten, die funktional von anderen Spalten abhängig sind, müssen generell beseitigt werden.

Beispiel:

Nr.Stundenlohn (€)Arbeitszeit (h)Gesamt
130,554,5= 30,55 * 4,5

Spalte „Gesamt“ ist funktional von Stundenlohn und Arbeitszeit abhängig und muss entfernt werden.

Die 3. Normalform liegt vor, wenn sich die Tabelle in der 2. Normalform befindet und keine funktionalen Abhängigkeiten bestehen.

sql/normalisierung_von_datenbanken.txt · Zuletzt geändert: 2019/09/26 14:48 von 127.0.0.1