Die Normalisierung bezeichnet ein Konzept aus dem Datenbankdesign mit dem Ziel, die Redundanzen, also die Dopplungen in der Datenbank, zu eliminieren. Dadurch lässt sich Speicherplatz sparen und außerdem kommt es nicht mehr zu Anomalien.
Was versteht man unter einer relationalen Datenbank?
In einer Datenbank werden große Datenmengen, meist strukturiert, abgespeichert und zur Abfrage verfügbar gemacht. Es ist dabei nahezu immer um ein elektronisches System. Theoretisch handelt es sich jedoch auch bei analogen Informationssammlungen, wie beispielsweise bei einer Bibliothek, um eine Datenbank. Bereits in den 1960er Jahren entstand die Notwendigkeit für zentrale Datenspeicher, da Dinge, wie die Zugriffsberechtigung auf Daten oder die Datenprüfung, nicht innerhalb einer Anwendungen, sondern gesondert davon erfolgen sollten.
Die intuitivste Art und Weise diese Informationen abzuspeichern ist in tabellarischer Form, also mit Zeilen und Spalten. Für viele Daten, wie beispielsweise im Rechnungswesen, bietet sich diese Darstellung auch an, da die Daten immer eine feste Form aufweisen. Solche Datenbanken in tabellarischer Form bezeichnet man als relationale Datenbanken, abgeleitet von dem mathematischen Konzept der Relationen.
Welche Ziele hat die Normalisierung der Datenbank?
Mit der Normalisierung einer Datenbank sollen die folgenden Ziele erreicht werden:
- Beseitigung von Redundanzen: Durch die Normalisierung können doppelte Daten gelöscht werden ohne, dass die Datenbank selbst an Informationsgehalt verliert. Das spart Speicherressourcen und führt dadurch auch zu schnelleren Abfragen. Außerdem verringert es das Potenzial von Fehlern, da bei einer Änderung immer alle redundanten Datensätze geändert werden müssten.
- Datenmodell: Durch die Normalisierung ergibt sich oft auch automatisch ein übersichtliches und einheitliches Datenmodell. Eine große Tabelle wird nämlich oft in mehrere, überschaubare Tabellen aufgeteilt und es ergeben sich die bekannten Schemata, wie das Sternschema oder Schneeflockenschema.

Welche Normalformen gibt es?
In der Praxis sind vor allem drei Normalformen von Bedeutung. Denn oft, wenn diese erfüllt sind, ist die Datenbank performant und es musste nur verhältnismäßig wenig Arbeit investiert werden. Somit ist das Kosten-Nutzen-Verhältnis bis zur dritten Normalform vergleichsweise hoch. In der Theorie gibt es jedoch bis zu fünf Normalformen, jedoch beschränken wir uns in diesem Beitrag nur auf die ersten drei.
Hierbei ist auch wichtig, dass die Normalformen aufeinander aufbauen. Das bedeutet, dass eine hohe Normalform nur dann erfüllt ist, wenn auch alle (!) vorhergegangenen Normalformen erfüllt sind.
1. Normalform (1NF)
Die 1. Normalform ist erreicht, wenn alle Datensätze atomar sind. Das bedeutet, dass jedes Datenfeld lediglich einen Wert enthalten darf. Außerdem sollte sichergestellt sein, dass jede Spalte nur Werte desselben Datentyps (Numerisch, Text, etc.) enthält. Folgende Beispiele müssten entsprechend verändert werden, damit eine Datenbank in der 1. Normalform vorhanden ist:
- Adresse: „Hauptstraße 1, 12345 Berlin“ –> Straße: „Hauptstraße“, Hausnummer: „1“, PLZ: „12345“, Ort: „Berlin“
- Rechnungsbetrag: „128,45 €“ –> Betrag: „128,45“, Währung: „€“
2. Normalform (2NF)
Die 2. Normalform ist erfüllt, wenn die erste Normalform erfüllt ist, und außerdem jede Spalte in einer Zeile voll funktional abhängig ist vom Primärschlüssel. Der Primärschlüssel bezeichnet ein Attribut, das zur eindeutigen Identifikation einer Datenbankzeile verwendet werden kann. Dazu zählen beispielsweise die Rechnungsnummer zur Identifikation einer Rechnung oder die Ausweisnummer zur Identifikation einer Person.
Konkret bedeutet dies in der Anwendung, dass alle Merkmale ausgelagert werden müssen, die nicht ausschließlich vom Primärschlüssel abhängig sind. In der Praxis führt dies dann oft zu einem sogenannten Sternschema.

In unserem Beispiel ist der Kundenname nicht vom Primärschlüssel „order_id“ der ursprünglichen Tabelle abhängig. Deswegen muss der Kundenname in einer neuen Tabelle ausgelagert werden. Lediglich der Fremdschlüssel „customer_id“ referenziert dann auf die neue Tabelle, sodass keine Information verloren geht.
3. Normalform (3NF)
Die dritte Normalform liegt vor, wenn die beiden vorhergehenden Normalformen erfüllt sind, und es zusätzlich keine sogenannten transitiven Abhängigkeiten gibt. Eine transitive Abhängigkeit liegt vor, wenn ein Attribut, welches kein Primärschlüssel ist, nicht nur von diesem abhängt, sondern auch von anderen Attributen.
Wenn wir in unserem Beispiel eine Tabelle haben, in der die Rechnungsnummer, die Produktnummer und der Preis gegeben ist, haben wir höchstwahrscheinlich eine transitive Abhängigkeit. Der Preis des Produktes hängt nämlich nicht wirklich von der Rechnungsnummer ab, sondern vielmehr von der Produktnummer, da für jedes Produkt ein fester Preis definiert ist.
Diese Abhängigkeit kann man auflösen, indem man die Produkte in eine neue Tabelle auslagert und somit das Attribut Preis aus der ursprünglichen Tabelle rausfällt.
Was sind die Grenzen der Normalisierung?
Die Normalisierung spielt eine entscheidende Rolle bei der Strukturierung von Datenbanken, um die Datenintegrität und eine effiziente Speicherung zu gewährleisten. Es ist jedoch wichtig zu erkennen, dass die Normalisierung zwar erhebliche Vorteile bietet, aber auch gewisse Grenzen hat, die berücksichtigt werden müssen. In diesem Abschnitt werden die Grenzen der Datenbanknormalisierung erörtert und wichtige Überlegungen für eine effiziente Datenverwaltung hervorgehoben.
- Auswirkungen auf die Leistung: Eine Einschränkung stark normalisierter Datenbanken ist die mögliche Auswirkung auf die Abfrageleistung. Mit zunehmender Normalisierung können komplexe Joins und mehrere Tabellenabfragen zum Abrufen von Daten erforderlich sein, was die Ausführung von Abfragen verlangsamen kann. Außerdem kann eine höhere Anzahl von Tabellen, die aus der Normalisierung resultiert, zu zusätzlicher Komplexität führen und die Gesamtleistung beeinträchtigen.
- Datenredundanz: Die Normalisierung zielt darauf ab, Datenredundanz zu beseitigen, indem die Daten in separate Tabellen aufgeteilt werden. Dies kann jedoch dazu führen, dass zusätzliche Joins erforderlich sind, um verwandte Informationen abzurufen, was zu einer erhöhten Komplexität und potenziellen Leistungsproblemen führt. In einigen Fällen können Denormalisierungstechniken eingesetzt werden, um die Abfrageleistung auf Kosten einer gewissen Datenredundanz zu optimieren.
- Erhöhte Komplexität: Höhere Normalisierungsgrade können zu einer erhöhten Komplexität des Datenbankdesigns und der Abfragekonstruktion führen. Datenbankadministratoren und -entwickler müssen die Normalisierungsprinzipien genau kennen, um die komplizierten Beziehungen zwischen normalisierten Tabellen effektiv verwalten zu können.
- Herausforderungen bei der Wartung: Die Änderung der Struktur von hochgradig normalisierten Datenbanken kann komplex und zeitaufwändig sein. Aktualisierungen oder Löschungen können Änderungen in mehreren Tabellen erfordern, was das Risiko von Inkonsistenzen erhöht, wenn sie nicht sorgfältig verwaltet werden.
- Flexibilität und Anpassungsfähigkeit: Die Normalisierung kann eine Herausforderung darstellen, wenn es darum geht, Änderungen oder neue Anforderungen an die Datenbankstruktur zu berücksichtigen. Das Hinzufügen neuer Attribute oder Beziehungen kann Änderungen an bestehenden Tabellen erforderlich machen, die sich möglicherweise auf das gesamte Schema auswirken.
- Gleichgewicht zwischen Normalisierung und Leistung: Ein höheres Maß an Normalisierung ist nicht immer die optimale Wahl für alle Datenbanksysteme. Es ist wichtig, ein Gleichgewicht zwischen Normalisierung für Datenintegrität und Denormalisierung für Leistungsoptimierung zu finden. Eine sorgfältige Abwägung der spezifischen Anforderungen des Systems ist notwendig.
- Kompromisse bei der Berichterstellung und Analyse: Stark normalisierte Datenbanken können bei der Erstellung komplexer Berichte oder bei der Durchführung von Analyseaufgaben eine Herausforderung darstellen. Das Aggregieren von Daten aus mehreren Tabellen kann zusätzliche Verarbeitungsschritte erfordern, was die Effizienz von Berichts- und Analysevorgängen beeinträchtigt.
- Kontextspezifische Überlegungen: Die Angemessenheit der Normalisierung hängt von der Art der Daten und dem spezifischen Anwendungsfall ab. Bestimmte Datentypen, wie z. B. Protokolle oder Prüfprotokolle, profitieren aufgrund ihrer einzigartigen Eigenschaften möglicherweise nicht wesentlich von höheren Normalisierungsstufen.
Die Normalisierung ist zwar eine wichtige Technik zur Gewährleistung der Datenintegrität, aber es ist wichtig, ihre Grenzen zu kennen. Um ein effizientes Datenbanksystem zu entwerfen, ist eine sorgfältige Bewertung der Kompromisse zwischen Normalisierung und Leistung, Flexibilität, Wartung und Berichterstattung erforderlich. Das richtige Gleichgewicht zwischen Normalisierung und anderen Überlegungen ist der Schlüssel zu einer effektiven und rationellen Datenverwaltung.
Was ist das Konzept der Denormalisierung?
Denormalisierung ist eine Technik zur Datenbankoptimierung, bei der absichtlich Redundanz in ein normalisiertes Datenbankschema eingeführt wird. Während die Normalisierung darauf abzielt, Datenredundanz zu beseitigen und Datenintegrität zu gewährleisten, wird bei der Denormalisierung Redundanz strategisch wieder eingeführt, um die Abfrageleistung zu verbessern, den Datenabruf zu vereinfachen und die Effizienz des Systems insgesamt zu steigern.
In einem denormalisierten Schema werden Daten absichtlich dupliziert oder in weniger Tabellen zusammengefasst, wodurch der Bedarf an komplexen Joins verringert und ein schnellerer Datenabruf ermöglicht wird. Die Denormalisierung kann verschiedene Formen annehmen, darunter die folgenden:
- Abflachen von Tabellen: Dabei werden mehrere zusammenhängende Tabellen in einer einzigen Tabelle zusammengefasst, wodurch sich die Notwendigkeit von Verknüpfungsoperationen verringert. Dieser Ansatz vereinfacht Abfragen und kann die Leistung verbessern, insbesondere bei leseintensiven Arbeitslasten.
- Hinzufügen redundanter Daten: Dieser Ansatz umfasst die Duplizierung von Daten aus Bezugstabellen in eine Tabelle, wodurch die Notwendigkeit von Joins zum Abrufen von Bezugsinformationen verringert wird. Diese Redundanz verbessert die Abfrageleistung, insbesondere bei häufig abgerufenen Daten.
- Abgeleitete Spalten einführen: Bei der Denormalisierung werden abgeleitete oder berechnete Werte direkt in der denormalisierten Tabelle berechnet und gespeichert. Dadurch werden komplexe Berechnungen während der Abfrageausführung überflüssig, was die Leistung verbessert.
Die Denormalisierung wird häufig in Szenarien eingesetzt, in denen die Abfrageleistung von entscheidender Bedeutung ist, z. B. bei Data Warehousing-, Berichts- und Entscheidungsunterstützungssystemen. Es ist jedoch wichtig, die damit verbundenen Kompromisse zu berücksichtigen, wie z. B. den erhöhten Speicherbedarf, mögliche Dateninkonsistenzen und die zusätzliche Komplexität bei der Datenpflege und -aktualisierung.
Es ist wichtig zu beachten, dass die Denormalisierung mit Bedacht und auf der Grundlage einer sorgfältigen Analyse der spezifischen Anforderungen der Anwendung oder des Systems angewendet werden sollte. Sie ist keine Einheitslösung und sollte unter Berücksichtigung der Art der Daten, der Art der durchgeführten Abfragen und der Leistungsziele des Datenbanksystems implementiert werden.
Durch die selektive Denormalisierung einer Datenbank können die Entwickler ein Gleichgewicht zwischen den Vorteilen der Normalisierung und der Notwendigkeit einer verbesserten Abfrageleistung herstellen, was einen effizienten Datenabruf ermöglicht und die Gesamtleistung des Systems optimiert.
Das solltest Du mitnehmen
- Unter der Normalisierung einer Datenbank versteht man das systematische Eliminieren von Redundanzen.
- Dadurch lassen sich sowohl Speicherplatz sparen, als auch Abfragen performanter gestalten.
- In der Praxis werden häufig nur die ersten drei Normalformen umgesetzt, da bei diesen das Kosten-Nutzen-Verhältnis am höchsten ist.
Andere Beiträge zum Thema Normalisierung
Auf Wikipedia gibt es einen ausführlichen Artikel zur Normalisierung von Datenbanken.