Normalisierung - nur wie weit

exzel

SQL-Guru
Beiträge
170
Hallo zusammen,

wie weit muss man eigentlich eine Datenbank normalisieren können. In wie weit sind die Normalisierungsformen praxistauglich?

Gruß
 
Werbung:
Bis es dir zu blöd wird, Code für perfekt normalisierte Daten zu schreiben wenn es anders schneller geht :)

PS: Mit schneller meine ich sowohl schneller in der Handhabung als auch schneller was die Abfragen angeht. Die Datenbank größe spielt eigentlich eher selten eine wirkliche Rolle.
 
Hallo exzel,

ich fang mal ganz von vorne an.

Die 1.Normalform solltest Du auf jeden Fall immer anzuwenden. Hier werden nämlich Nicht-Atomare Werte aufgelöst(Listen von Werten) und verhindert dass Attribute verschiedene Arten von Werten Speichen können (z.B. BLZ und Bankname in einer Spalte).

Die 2.Normalform ist auch noch wichtig. Ist hauptsächlich für Schlüssel die aus mehreren Attributen bestehen. Wenn ein Attribut nämlich nur von einem Teil des Schlüssels abhängt könnte man Daten in die Tabelle eintragen die nicht vom gesamten Schlüssel abhängen und somit nicht mehr eindeutig über den Schlüssel zu identifizieren sind.

Die 3.Normalform zerlegt die die meisten Tabellen in schöne kleine Häppchen.
Ein gutes Beispiel bei dem man die 3.Normalform nicht immer anwenden sollte ist eine Tabelle die Adressdaten speichert (Wenn es nur eine gibt die so was speichert).

Die 3. Normalform schreibt nämlich vor:

Eine Tabelle befindet sich in der dritten Normalform, wenn sie die Bedingungen der zweiten Normalform erfüllt und keine funktionalen Abhängigkeiten zwischen Nicht-Schlüsselattributen bestehen.
Du brauchts also nicht nur den Schlüssel um den Ort genau bestimmen zu können sondern auch ein einzelnes anderes Attribut (PLZ).

Also währe es hier Sinnvoll Ort und die PLZ auszulagen. Wenn man Tabellen mit Kunden, Lieferanten, Vertretern, Mitarbeitern, etc. hat müsste man sonst die Daten für Ort und PLZ in all diesen Tabellen mitschleppen. Und wenn dann ein Vertreter auch noch Mitarbeiter ist hat er plötzlich einen Ort mit 2 PLZ weil die Finanzbuchaltung die PLZ geändert hat und die Personalverwaltung davon nichts mitbekommen hat.

Gruß Charly

PS: Hoffe alles richtig und verständlich erklärt zu haben.
smile.png
 
Hallo,

entschuldigt die späte Rückmeldung.

Charly, du hast in dem Beitrag Betreuer, Kunde, Verträge geschrieben, dass die 3te Normalform nicht immer praxistauglich ist. Sollte das der Fall sein, ist es dann so, dass bei der zweiten Normalform nicht mehr weiter normalisiert wird, die komplette Datenbank also in der zweiten bleibt?

Gruß
 
Hallo exzel,

es geht dabei nicht um die komplette Datenbank sondern nur um einzelne Tabellen oder Teile der DB.

Gruß Charly
 
Hey,

Bin neu hier und hätte direkt mal eine Frage: Ich habe eine Entity "Person"... Diese Entity hat verschiedene Eigenschaften, wie z.B. Gehalt, Name, Adresse etc.! Wenn ich nun die Adresse als Adresse im Relationenmodell lasse, sind dann alle 3 Normalformen erfüllt oder nicht ?

Danke!

Edit: Oder muss ich die Adresse in die Eigenschaften Straße, Hausnummer, PLZ, Ort aufdröseln ?
 
Straße und Hausnummer nein, PLZ und Ort jein, kann man machen. Wenn ein Ort mehrere PLZ haben kann, muss man um die 3te Normalform zu erfüllen.
 
Die Normalformen sind Definitionen, sie beschreiben eine Art Perfektion der Datenstruktur gegen Redundanzen. Benötigen tust du keine davon. Der SQL Datenbank ist das ziemlich egal...
 
Hallo excel,

Aber man müsste doch auch die PLZ und Ort aufteilen, wenn jeder Ort nur eine PLZ hat, oder?

Nein

Das Zerlegen in mehrere Tabellen für Ort und PLZ macht nur deshalb einen Sinn weil es mehrere Orte für eine PLZ und mehrere PLZ für einen Ort geben kann.
Wenn es für jeden Ort nur eine PLZ geben würde (und wenn sonst keine Adressfelder wie z.B. Straße in der Tabelle stehen) könnte man PLZ und Ort in eine Tabelle schreiben (jedenfalls nach der 3NF) .

Stell dir mal die Frage ob Du Orte und Postleitzahlen auch dann in die Tabelle schreiben oder danach suchen möchtest wenn es keine Person gibt die da wohnt.

Wenn JA brauchst Du eigene Tabellen weil du ohne eine Person die in einer Stadt lebt auch keine Stadt anlegen kannst.
Wenn NEIN überleg Dir ob du deine Adressdaten wirklich in der 3NF haben willst. Oder möchtset Du jedes mal wenn du eine Adresse brauchst einen JOIN aus was weis ich wie vielen Tabellen zusammenbauen?

Gruß Charly
 
Werbung:
Hallo excel,

der Link ist kein gutes Bespiel. Da kann man nur einen Ort pro PLZ anlegen und auch nicht mehrere PLZ pro Ort und die Personaltabelle ist nicht 3.NF.

Gruß Charly

PS: MS hat hier was gutes zur Normalisierung geschrieben.
 
Zurück
Oben