Dein Lehrer erzählt dir etwas über Normalisierung und die 3 Normalformen? Aber was soll das genau sein?
Die Normalisierung einer Datenbank ist die strukturierte Aufteilung der Attribute in mehrere Tabellen.
Und wie das ganze funktioniert und du die Normalformen anwendest, das zeigen wir dir jetzt.
Normalisierung von Datenbanken
Die Normalisierung von relationalen Datenbanken ist ein Vorgehen, bei dem die Ausgangstabelle in mehrere kleine Tabellen zerlegt wird. Dann werden sie über Fremdschlüssel in Beziehung gesetzt.
Ziel einer solchen Normalisierung ist das Erschaffen einer redundanzfreien Datenspeicherung, die Vermeidung von Anomalien, sowie die Erstellung eines klar strukturierten Datenbankmodells.
Um die Normalisierung passend zu verstehen, klären wir erst einmal die Grundbegriffe.
Was sind Primär und Fremdschlüssel?
Primärschlüssel sind in der Haupt-Tabelle eindeutig zuordnungsbare Datensätze, wie zum Beispiel eine ID. Mit diesem Datensatz können dann verschiedene Tabellen verknüpft werden.
Andersherum ist in der verknüpften Tabelle die Referenz zum Primärschlüssel, dann der Fremdschlüssel.
Zeigen wir das Ganze an einem Beispiel:
Hier ist die Personal-Nummer der Primärschlüssel. Die zweite Tabelle wird durch diesen in relation gesetzt, wodurch die Personal-Nummer in der 2. Tabelle der Fremdschlüssel wird.
Was bedeutet Redundanzfrei?
Redundanzfreiheit bedeutet, dass sämtliche Daten nur einmal erfasst werden. Sprich man muss bei einer Änderung die Daten auch nur einmal ändern.
Sollten redundante Informationen in einer Tabelle vorhanden sein, kann es zu Anomalien kommen. Was das bedeutet, zeigen wir dir jetzt.
Was sind Anomalien in einer Datenbank?
Grundsätzlich werden Anomalien in 3 verschiedene Arten unterschieden.
Gehen wir dafür von einem Beispiel aus, bei dem wir alle 3 vorfinden:
Einfüge-Anomalie: Bei dieser Form handelt es sich darum, dass ein Datensatz nur eingefügt werden kann, wenn ein anderer Datensatz auch hinzugefügt wird.
In dieser Tabelle kann zum Beispiel eine Abteilung nur hinzugefügt werden, wenn auch ein jeweiliger Mitarbeiter hinzugefügt wird.
Lösch-Anomalie: Bei einer Lösch-Anomalie handelt es sich um Datensätze, die aus Versehen mitgelöscht werden.
So würden, wenn man den Mitarbeiter “Karl Larsson” löschen würde, alle Informationen über die Abteilung “Sport” ebenfalls verloren gehen.
Änderungs-Anomalie: Hier müssen bei einer Änderung immer mehrere Datensätze geändert werden. Das kann zu schnelleren Tippfehlern oder übersehen von Datensätzen führen.
Wenn zum Beispiel die Abteilung “Bettwäsche” ihren Namen ändern würde, müsste dies in mehreren Spalten geändert werden.
Die 3 Normalformen einer Datenbank
Um eine Datenbank nun redundanzfrei und ohne Anomalien zu gestalten, werden die 3 Normalformen angewandt. Was diese sind und wann eine Datenbank Normalisierung fertig ist, zeigen wir dir jetzt.
1. Normalform
Atomar bedeutet, dass sich jedes einzelne Attribut nicht in weitere Attribute aufteilen lässt. Dadurch kann eine Anwendung jedes Attribut einzeln behandeln.
Im obigen Datenbank Beispiel ist die 1. Normalform mehrfach verletzt. Man kann die unterschiedlichen Attribute weiter aufteilen.
So kann man zum Beispiel den Namen weiter in Vor und Nachnamen trennen.
Nach Anwendung der 1. Normalform sieht die Tabelle dann wie folgt aus:
Die 1. Normalform einer Datenbank ist ebenfalls verletzt, wenn es Wiederholungsgruppen gibt. Bedeutet, wenn Beispielsweise ein Angestellter in mehreren Abteilungen arbeitet, muss dies in mehreren Zeilen aufgefasst werden.
2. Normalform
Funktionale Abhängigkeit bedeutet, dass zu einem bestimmten Wert eines Attributs, lediglich ein Wert möglich ist.
In dem obigen Beispiel sind die Attribute Vorname, Nachname, Straße, Hausnummer, Postleitzahl und Ort vom Attribut Personalnummer abhängig.
Das bedeutet, dass man nur die Personalnummer benötigt, um zum Beispiel den Nachnamen herauszufinden.
Da jedoch eine funktionale Abhängigkeit vom gesamten Primärschlüssel gefordert ist, ist die 2. Normalform verletzt.
Bei der Anwendung der 2. Normalform wird die Ausgangs-Tabelle also in mehrere Tabellen verlagert.
In dem Beispiel bedeutet das, dass in der Primärtabelle nur noch die Attribute Personalnummer und Abteilungsnummer vorhanden sind.
Alle weiteren Informationen findet man dann in anderen Tabellen, die durch die Primär- und Fremdschlüssel verbunden sind.
Das Beispiel sähe dann wie folgt aus:
3. Normalform
Ein Schlüsselattribut ist Teil des Primärschlüssels. Ein Nicht-Schlüsselattribut ist somit ein in anderen Tabellen vorhandenes Attribut.
Von diesem darf in einer Tabelle kein weiteres Attribut abhängig sein.
In unserem Beispiel ist allerdings das Attribut “Ort” von der jeweiligen Postleitzahl abhängig.
Deshalb müssen diese erneut in eine weitere Tabelle verschoben werden und dann mit Primär- und Fremdschlüssel in Verbindung gesetzt werden.
Nach der Anwendung von allen 3 Normalformen sieht unsere Beispieltabelle durch die Normalisierung dann wie folgt aus:
Das waren also die 3 Normalformen zur Normalisierung einer Datenbank. Wir hoffen, dir konnte der Beitrag weiterhelfen. Schau dir doch gerne noch unsere Seite zu SQL an.
Was passiert wenn die Postleitzahl mehrere Orte umfasst?
Hey,
da hast du einen sehr guten Punkt! In dem Fall würde man beides dann entweder in der Mitarbeiter Tabelle stehen lassen, weil Ort und PLZ nicht eindeutig zuzuordnen sind. Oder man ersetzt stattdessen die PLZ mit dem “amtlichen Gemeindeschlüssel”. Der ist im Vergleich nämlich eindeutig zuzuordnen und dann kann man in der Tabelle Ort den Gemeindeschlüssel als Fremdschlüssel benutzen und dort dann die PLZ und den Ort eintragen.
Ich hoffe ich konnte dir damit weiterhelfen! 🙂
Danke für deine Anregung!