next up previous index
Weiter: 4 Boyce-Codd Normalform (BCNF) Hoch: 4 Normalisierung des Datenbankentwurfs Zurück: 2 Zweite Normalform

3 Dritte Normalform

Tabellen, die in der zweiten Normalform vorliegen, lassen sich mit folgender Regel in die dritte Normalform überführen: Es sind alle Felder zu entfernen, die von anderen Feldern abhängen, die nicht zum Primärschlüssel gehören. Auch dieser Schritt lässt sich am einfachsten an einem Beispiel demonstrieren.

\begin{figure}\htmlimage
\spfigl{0.84}{Bld19_49.eps}{Struktur der Ausgangstabel...
...xtit{ Auftrag} und \textit{ Kunde}}{_Ref63072143c}
{\vspace{-11pt}}
\end{figure}

Die linke Tabelle aus Abb. 2.6 zeigt die Struktur eines Tabellenausschnitts zur Speicherung eines Auftrags (die restlichen Felder werden für dieses Beispiel unterschlagen). Die Auftragsnummer ist das primäre Schlüsselfeld, nach dem die Daten der Tabelle sortiert werden. Jedem Auftrag ist eine Kundennummer zugeordnet. Weiterhin wird noch die Adresse des Kunden mit Postleitzahl, Ort und Straße gespeichert, um Lieferungen an mehrere Firmenstandorte des Kunden zu unterstützen. Die Felder sind gemäß Tabelle alle vom Primärschlüssel Auftrags-Nr. abhängig. Schauen Sie sich aber einmal das Feld Ort an. Wird dieser Wert geändert, weist dies nicht nur auf eine andere Auftragsnummer, sondern meist auch auf einen anderen Kunden hin. Das Feld Ort ist also abhängig von dem Nicht-Schlüsselfeld Kunden Nr. Das Gleiche gilt übrigens für die Felder Straße und Plz. Zur Überführung der Tabelle in die dritte Normalform sind diese Felder in eine zweite Tabelle auszulagern (Abb. 2.6, rechts).

Hinweis: Bei der Tabelle Kunden gibt es noch eine weitere Anomalie im Feld Plz. Der Ort und die Straße ergeben zusammen eine eindeutige fünfstellige Postleitzahl. Aus einer Postleitzahl lässt sich zwar noch auf den Ort, nicht aber auf eine Straße schließen. Sie müssen daher immer den Ort und die Straße gemeinsam in einer Tabelle speichern. Eine Lösung wäre, das Feld Plz aus der Tabelle zu entfernen. Aus praktischen Gründen wird man aber die Postleitzahl in der Tabelle belassen, da die Werte für dieses Feld durch die Sachbearbeiter bei der Eingabe der Kundendaten eingetragen werden. Es käme niemand auf die Idee, die Plz über eine eigene Tabelle zu berechnen. Dies ist ein Beispiel, wo eine Abweichung von der Theorie angebracht ist.


next up previous index
Next: 4 Boyce-Codd Normalform (BCNF) Up: 4 Normalisierung des Datenbankentwurfs Previous: 2 Zweite Normalform
Nicolaus Millin
2007-08-11