Normalformen

corona

Erfahrenes Mitglied
Hallo,
wer kann mir in Alltagssprache erklären, was die 1, 2 und 3.Normalformen sind und was die machen? Am besten an Hand eines Beispieles.

Im Netz habe ich schon viele Infos gefunden, doch verstehen tue ich es immer noch nicht :confused: Oder kennt jemand eine gute Seite, wo das einfach erklärt ist?

Vielen Dank,
Corona
 
1. Normalform
Eine Tabelle befindet sich in der ersten Normalform, wenn alle Attribute (Felder) nur einmal in der Tabelle vorkommen und diese Felder nur Einzelwerte beinhalten.

2. Normalform
Eine Tabelle ist in der 2. Normalform, wenn sie der 1. Normalform entspricht und die Nicht-Schlüsselfelder voll vom Gesamtschlüssel abhängen. D.h. besteht der Schlüssel aus mehreren Teilschlüsseln, so sind die diejenigen Elemente aus dem Datensatz herauszunehmen, die nur von einem Teilschlüssel abhängen.
Die 2. Normalform kann somit nur verletzt werden, wenn sich der Schlüssel aus mehr als einem Attribut (Feld) zusammensetzt (=zusammengesetzter Primärschlüssel).

3. Normalform
Eine Tabelle ist in der 3. Normalform, wenn sie der 2. Normalform entspricht und wenn Nicht-Schlüsselfelder voreinander unabhängig sind (keine transitiven Abhängigkeiten).
 
Hallo und Danke für die Antworten.

Ich habe alles bis auf die 2.Normalform verstanden. Kann mir jemand ein Alltagsbeispiel machen?

Was bedeutet "kein zusammengestzter Primärschlüssel"? Bei meinen Tabellen ist jeweils nur ein Primärschlüssel und das ist eine ID (auto_increment). Der ist doch nicht zusammen gesetzt, oder?

Danke noch mal,
gleich haben wirs ;)
 
was ein zusammengesetzer Schlüssel ist, steht doch in der Erklärung (und sagt eigentlich auch der Name). "Kein zusammengesetzter Schlüssel" ist demnach das Gegenteil, also ein Schlüssel, der nur aus einem Attribut besteht (wie bei dir).
Sei vorsichtig bei der verwendung künstlicher Schlüssel (ID). In vielen Fällen ist es möglich, dass ein Attribut der Entiät auch als Schlüssel fungieren kann (Bsp. Personalnummer, Telefonnummer,...).

Ein Beispiel ist hier zu finden oder auch hier
 
Kurzes Bsp. zur 2. Normalform:

Fett = Primärschlüssel

Tabelle:
PID PLZ VORNAME NACHNAME WOHNORT

Laut Normalform:
...und die Nicht-Schlüsselfelder voll vom Gesamtschlüssel abhängen
In diesem Fall liegt ein Verstoß gegen die 2. Normalform vor, da:
- Vorname und Nachname nicht von der PLZ (Teil des Gesamtschlüssels) abhängen, sondern nur von der PID
- der Wohnort nur von der PLZ abhängt, nicht aber von der PID

Zur Normalisierung müsste man nun den Wohnort komplett aus der Tabelle entfernen und in eine andere Tabelle auslagern:
PLZ Wohnort

Dann ergibt es überhaupt keinen Sinn, die PLZ als Primärschlüssel einzusetzen, also:
PID VORNAME NACHNAME PLZ

Den Wohnort bekommt man jetzt ganz einfach unter zu Hilfe name von der anderen Tabelle und Joins herraus.
 
Zurück