# Normalformen



## corona (6. Dezember 2005)

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   Oder kennt jemand eine gute Seite, wo das einfach erklärt ist?

Vielen Dank,
Corona


----------



## BSA (6. Dezember 2005)

Ich glaube das bei Wikipedia ist sehr verständlich, oder?

http://de.wikipedia.org/wiki/Normalisierung_(Datenbank)


----------



## Julian Maicher (6. Dezember 2005)

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


----------



## corona (6. Dezember 2005)

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


----------



## Nico Graichen (6. Dezember 2005)

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


----------



## Julian Maicher (7. Dezember 2005)

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.


----------

