So funktioniert die Normalisierung einer Datenbank
- Datenbank-Normalisierung kurz erklärt
- Vorteile der Normalisierung einer Datenbank
- Tipps für Überführung in Normalformen 1NF, 2NF und 3NF
Wozu dient die Normalisierung einer Datenbank?
Relationale Datenbanken bestehen aus Tabellen, die miteinander verbunden sind, um Informationen zu organisieren und abzurufen.
Für Ordnung und Effizienz sorgt hier eine entscheidende Technik im Datenbankdesign: die Normalisierung von Datenbanken. Sie erfolgt in mehreren Stufen, den sogenannten Normalformen. Zu den wichtigsten dieser Schritte zählen die erste Normalform (1NF), die zweite Normalform (2NF) und die dritte Normalform (3NF). Diese Schritte helfen, Daten gut zu strukturieren und zu organisieren. So lassen sich Redundanzen, also doppelte Daten, vermeiden, die Daten bleiben korrekt (keine Anomalien) und die Datenbank lässt sich leichter pflegen.
Die Normalisierung einer Datenbank gemäß den Normalformen 1NF, 2NF und 3NF sei im Folgenden anhand einer Online-Buchhändlerin erklärt. Achtung: Jede der Normalformen baut auf der vorherigen auf. 2NF lässt sich also nur erreichen, wenn 1NF erfüllt ist. 3NF setzt die Erfüllung von 2NF voraus.
Ein Beispiel: Die Online-Buchhändlerin nutzt in ihrer Datenbank mehrere Tabellen für das Management von Kundschaft, Artikeln und Bestellungen. Eine Tabelle für die Verwaltung von Bestellungen sieht vor der Datenbank-Normalisierung wie folgt aus:
Bestellnummer | Produkt | Preis | Name | Adresse | Rechnungsbetrag |
---|---|---|---|---|---|
11223 | Buch 1 | 110 Euro | Peter Müller | Müllerweg 10, 10117 Berlin | 110 Euro |
11224 | Buch 2 | 90 Cent | Inga Petersen | Petersenweg 6, 10315 Berlin | 90 Cent |
Die erste Normalform (1NF): Atomarisierung der Datensätze
In dieser oben zu sehenden Form entspricht die Tabelle nicht den Richtlinien der ersten Normalform (1NF). Zwei Dinge muss die Datenbank-Normalisierung ändern:
- Alle Datensätze müssen atomar werden. Jede Information muss in einem separaten Datenfeld stehen
- Alle Tabellenspalten müssen gleichartige Werte enthalten
Die Datenbank-Normalisierung sorgt deshalb dafür, dass Vor- und Nachname der Kundin oder des Kunden sowie Straßenname, Hausnummer, Postleitzahl und Stadt eine eigene Spalte bekommen. Außerdem vereinheitlicht die Normalisierung die Währung in den Spalten, Preis und Rechnungsbetrag.
Diese Aufgliederung verbessert die Suchmöglichkeiten. So kann die Buchhändlerin beispielsweise über ein Suchfeld zukünftig automatisch alle Personen mit derselben Postleitzahl ausfindig machen.
Nach der Normalisierung der Datenbank sieht die Tabelle dann wie folgt aus:
Bestellnummer | Produkt | Preis | Vorname | Nachname | Straße | Hausnummer | Postleitzahl | Stadt | Rechnungsbetrag |
---|---|---|---|---|---|---|---|---|---|
11223 | Buch 1 | 110 Euro | Peter | Müller | Müllerweg | 10 | 10117 | Berlin | 110 Euro |
11224 | Buch 2 | 0,90 Euro | Inga | Petersen | Petersenweg | 6 | 10315 | Berlin | 0,90 Euro |
Die zweite Normalform (2NF): Redundante Daten vermeiden
Hauptziel der zweiten Normalform bei der Normalisierung von Datenbanken ist es, Redundanzen zu vermeiden und Abhängigkeiten zwischen Attributen klarer zu definieren. 2NF ist dann erfüllt, wenn in einer Tabelle alle Nichtschlüsselattribute (etwa „Rechnungsbetrag“) vom sogenannten Primärschlüssel funktional abhängig sind. Der Primärschlüssel steht in der Regel in der ersten Spalte einer Tabelle und identifiziert den Datensatz. Er ist wie eine Art Ausweisnummer, die sicherstellt, dass jeder Datensatz einzigartig ist.
Ein Beispiel: In einer Tabelle mit Kundeninformationen ist die Kunden-ID in der ersten Spalte der Primärschlüssel, der jede Kundin und jeden Kunden eindeutig identifiziert. Andere Nichtschlüsselattribute in der Tabelle, wie Vorname, Nachname und Anschrift, können eindeutig durch den Primärschlüssel bestimmt werden. Kennt man den Primärschlüssel, kennt man alle Informationen des Datensatzes.
Betrachten wir nun unsere Tabelle, die bereits den 1NF-Richtlinien entspricht. Verstehen wir die Bestellnummer als Primärschlüssel, fällt auf, dass Attribute wie „Vorname“ und „Postleitzahl“ sich auf die Kundin oder den Kunden und nicht auf die Rechnung beziehen. Daher werden bei der Normalisierung der Datenbank diese Attribute in eine separate Tabelle mit dem Primärschlüssel Kunden-ID ausgelagert.
Die Kunden-ID kann nun als Fremdschlüssel in der Bestellungen-Tabelle fungieren, um als eine Art Schnittstelle eine Verbindung zwischen den Tabellen herzustellen. Ändert die Online-Buchhändlerin Kundeninformationen, etwa die Anschrift, gelangen diese über den Fremdschlüssel automatisch in die andere Tabelle – Änderungen sind dort nicht mehr notwendig. Somit besteht auch keine Gefahr von Redundanzen, inkonsistenten Datensätzen und Anomalien. Unsere ursprüngliche Rechnungen-Tabelle sieht dann wie folgt aus:
Bestellnummer | Produkt | Preis | Kunden-ID | Rechnungsbetrag |
---|---|---|---|---|
11223 | Buch 1 | 110 Euro | 1 | 110 Euro |
11224 | Buch 2 | 0,90 Euro | 2 | 0,90 Euro |
3NF: Transitive Abhängigkeiten beseitigen
Um die dritte Normalform zu erreichen, dürfen in der Datenbank keine sogenannten transitiven Abhängigkeiten mehr auftreten. Eine solche Abhängigkeit liegt vor, wenn ein Nichtschlüsselattribut sowohl vom Primärschlüssel abhängt, als auch von einem anderen Attribut, das nicht der Primärschlüssel ist.
In unserem Beispiel der Bestellungen-Tabelle sehen wir, dass die Attribute “Produkt” und “Preis” sowohl von der Bestellnummer (dem Primärschlüssel) abhängen als auch voneinander. Um die 3NF zu erreichen, werden in der Normalisierung der Datenbank diese Attribute in eine separate Tabelle ausgelagert.
Die Produkt-ID wird dann in der Bestellungen-Tabelle als Fremdschlüssel verwendet. Das stellt sicher, dass keine transitive Abhängigkeit mehr besteht und die Datenbank in einer optimierten Struktur vorliegt.
Bestellnummer | Produkt-ID | Kunden-ID | Rechnungsbetrag |
---|---|---|---|
11223 | Buch 1 | 1 | 110 Euro |
11224 | Buch 2 | 2 | 0,90 Euro |
Fazit
Wenn Sie eine relationale Datenbank wie MySQL bei STRATO nutzen, lohnt sich eine Normalisierung aus mehreren Gründen. Sie vermeiden Datenredundanzen, die Speicherplatz kosten. Außerdem verbessern Sie die Suchmöglichkeiten erheblich: Sie können beispielsweise über die Kunden-ID schnell alle Bestellungen eines bestimmten Kunden finden, ohne alle Bestellungen durchsuchen zu müssen. Zusätzlich ermöglicht die Normalisierung schnellere Datenbank-Aktualisierungen, da Änderungen nur an einer Stelle vorgenommen werden müssen und über Fremdschlüssel in verbundene Tabellen gelangen. Die Normalisierung trägt somit zu einer robusteren, effizienteren und leichter zu aktualisierenden Datenbank bei.
MySQL-Datenbank in Ihrem Hosting-Paket von STRATO inklusive!
Sie wollen eine relationale Datenbank nutzen und nach den Normalformen konzipieren? Die MySQL-Datenbank ist mit mehr als 50 Millionen Installationen weltweit das beliebteste Open Source Managementsystem für relationale Datenbanken.
MySQL ist in Ihrem Hosting-Paket als Anwendung inklusive. STRATO bietet dabei mit seinen zertifizierten Rechenzentren und einer klimafreundlichen Infrastruktur ein sicheres und nachhaltiges Umfeld für Ihre Daten.