[DB] Normalisierung

Modder

Stammgast
Guten Abend zusammen:D

Wie ihr sicher wisst gibt es beim Datenbankmanagement so etwas wie Normalformen. Was unterscheidet nun die 1. 2. und 3. grundsätzlich voneinander??

Was ist eigentlich der Unterschied zwischen funktionaler, teilweiser, vollständiger und transitiver Abhängigkeit???

Gruss
 

pagefault

Inaktiv
Was unterscheidet nun die 1. 2. und 3. grundsätzlich voneinander??
Hallo Hobby-DBA ;)

Der Grad der Normalisierung beschreibt, wie wieviel redundante Informationen im Datenmodell noch vorhanden sind. Je höher die Normalform, desto mehr (redundante) Attribute sind in durch Fremdschlüssel verbundene Tabellen ausgelagert.

Am Beispiel einer ganz einfachen Adress-"DB":

1. Normalform

1 Max Müller, Dorfstrasse 15, 9999 Irgendwo
2 Rösli Müller, Dorfstrasse 15, 9999 Irgendwo

Dies lässt sich prima weiter auflösen, in dem du z.B. einen Postleitzahlenstamm einbindest, wo die Kombination PLZ und Ort eindeutig hinterlegt sind:

2. Normalform

Adressen
1 Max Müller, Dorfstrasse 15, plz_13
2 Rösli Müller, Dorfstrasse 15, plz_13

PLZ
11 1111 Nirgendwo
12 2222 Elsewhere
13 9999 Irgendwo

Du kannst das jetzt selber weiterspielen und auch noch die Adressen auslagern.

In der Praxis wird jedoch oft aus Performance-Gründen nicht bis in alle Feinheit normalisiert, was bei unachtsamem Umgang im Betrieb zu Dateninkonsistenzen führen kann.

Die ganzen Zusammenhänge sind recht anschaulich in diesem Wikipedia Artikel dargestellt:
http://de.wikipedia.org/wiki/Normalisierung_(Datenbank)
 
Oben