Zum Inhalt

Normalisierung

Das sind die wichtigsten Begriffe des Normalisierungsprozess.

1. Normalisierung

Normalisierung ist ein Prozess in der Datenbanktheorie, der darauf abzielt, Daten strukturiert und effizient zu organisieren, um Redundanzen (Mehrfachspeicherungen derselben Daten) und Anomalien (Inkonsistenzen) zu minimieren. Durch die Normalisierung wird eine Datenbank in sogenannte Normalformen überführt, die klare Regeln für die Struktur der Daten festlegen.

2. Normalformen

Normalformen sind Stufen der Normalisierung. Sie definieren die Anforderungen, die eine Datenbanktabelle erfüllen muss, um Redundanz und Inkonsistenz zu vermeiden. Die ersten drei Normalformen sind am wichtigsten:

  • 0. Normalform (0NF): Die Tabelle hat keine formalen Einschränkungen. Es kann mehrfach gespeicherte oder nicht atomare (nicht weiter aufteilbare) Werte geben.
  • 1. Normalform (1NF): Jede Zelle der Tabelle enthält genau einen Wert (atomare Werte), keine Mehrfachwerte in einer Zelle.
  • 2. Normalform (2NF): Die Tabelle ist in 1NF und enthält keine partiellen Abhängigkeiten – das bedeutet, dass alle Attribute vollständig vom gesamten Primärschlüssel abhängen und nicht nur von einem Teil davon.
  • 3. Normalform (3NF): Die Tabelle ist in 2NF und enthält keine transitiven Abhängigkeiten, d.h., kein Nicht-Schlüsselattribut hängt von einem anderen Nicht-Schlüsselattribut ab.

Jede Normalform baut auf der vorherigen auf und beseitigt weitere Redundanzen und Abhängigkeiten.

3. Atomare Werte

Ein Wert ist atomar, wenn er sich nicht weiter aufteilen lässt. In der 1. Normalform ist es erforderlich, dass jede Zelle nur einen einzelnen Wert enthält. Beispielsweise ist "Fußball, Schach" nicht atomar, da es sich um zwei Werte in einer Zelle handelt. Nach der 1NF wird dieser Eintrag in zwei separate Zeilen aufgeteilt.

4. Abhängigkeiten

Abhängigkeiten beschreiben, wie Daten innerhalb einer Tabelle zusammenhängen und voneinander abhängen. Es gibt zwei wichtige Typen von Abhängigkeiten, die in der Normalisierung beseitigt werden:

  • Partielle Abhängigkeit: Ein Attribut hängt nur von einem Teil des zusammengesetzten Primärschlüssels ab (relevant in der 2NF).
  • Transitive Abhängigkeit: Ein Nicht-Schlüsselattribut hängt von einem anderen Nicht-Schlüsselattribut ab (relevant in der 3NF).

5. Primärschlüssel

Ein Primärschlüssel ist ein Attribut oder eine Kombination von Attributen, das jeden Datensatz in einer Tabelle eindeutig identifiziert. In einer Tabelle darf der Primärschlüssel keine Nullwerte enthalten, und es darf keine zwei Datensätze mit demselben Primärschlüsselwert geben.

6. Nicht-Schlüsselattribut

Ein Nicht-Schlüsselattribut ist ein Attribut in einer Tabelle, das nicht Teil des Primärschlüssels ist. Es wird in der Normalisierung geprüft, ob diese Attribute in Abhängigkeiten stehen, die Redundanzen verursachen könnten.

7. Redundanz

Redundanz bedeutet, dass dieselben Daten mehrfach gespeichert sind. Dies führt zu einer Verschwendung von Speicherplatz und kann zu Anomalien führen. Durch den Normalisierungsprozess wird Redundanz so weit wie möglich reduziert.

8. Anomalien

Anomalien sind Probleme, die beim Einfügen, Aktualisieren oder Löschen von Daten in einer nicht normalisierten Tabelle auftreten können:

  • Einfügeanomalie: Es kann schwierig sein, neue Daten einzufügen, ohne bereits existierende Daten zu duplizieren.
  • Löschanomalie: Durch das Löschen eines Datensatzes gehen möglicherweise andere wichtige Daten verloren.
  • Aktualisierungsanomalie: Wenn dieselben Daten mehrfach vorkommen, kann es zu Inkonsistenzen führen, wenn sie nicht überall gleichzeitig aktualisiert werden.

Durch Normalisierung werden diese Anomalien minimiert.

9. Relationale Datenbank

Eine relationale Datenbank organisiert Daten in Tabellen (Relationen), die in Beziehungen zueinander stehen. Normalisierung ist ein wesentlicher Aspekt des relationalen Datenbankdesigns, um eine effiziente und konsistente Datenorganisation zu erreichen.

Diese Begriffe bilden die Grundlage, um den Normalisierungsprozess und seine Bedeutung zu verstehen.

Normalisierungsprozess Tabelle eins:

Ausgangstabelle: 0. Normalform (0NF)

In der abgebildeten Tabelle habe ich folgende Spalten:

  • SchülerID: Eindeutige Identifikation der Schüler.
  • Name: Name des Schülers.
  • Klasse: Klasse, in der der Schüler ist.
  • Klassenlehrer: Lehrer der jeweiligen Klasse.
  • AGID: IDs der Arbeitsgemeinschaften, an denen der Schüler teilnimmt.
  • Beschreibung: Beschreibung der AGs (z. B. "Fußball" oder "Schach").
  • Nachweis: Status der Teilnahme (z. B. „Teilgenommen“).

Hier gibt es mehrere Verletzungen der 1. Normalform:

  1. AGID enthält mehrere Werte (z. B. "1, 2" oder "1, 3").
  2. Beschreibung und Nachweis sind ebenfalls nicht atomar, da sie für jede AG eines Schülers mehrere Werte enthalten.

Schritt 1: Überführung in die 1. Normalform (1NF)

In der 1NF muss ich sicherstellen, dass jede Zelle nur einen einzelnen Wert enthält. Ich teile daher Einträge mit mehreren AGs auf, sodass jede AG eine eigene Zeile erhält. Die Tabelle in der 1NF würde dann so aussehen:

SchülerID Name Klasse Klassenlehrer AGID Beschreibung Nachweis
1 Hans von Bergen 5a Müllermann 1 Fussball Teilgenommen
1 Hans Manser 5a Müllermann 2 Börse Teilgenommen
2 Max Nixxe 5a Müllermann 1 Fussball Teilgenommen
2 Maximilian Gross 5a Müllermann 3 Schach Teilgenommen
3 florian bösch 5b Wüst 1 Fussball Mit Erfolg teilgenommen

Jetzt ist jede Zelle atomar, und ich haben die 1NF erreicht.

Schritt 2: Überführung in die 2. Normalform (2NF)

Um die Tabelle in die 2NF zu bringen, muss ich sicherstellen, dass es keine partiellen Abhängigkeiten gibt. Da ich zusammengesetzte Schlüssel vermeiden will, teile ich die Tabelle in zwei Tabellen auf, um die Abhängigkeiten zu trennen.

Tabelle: Schüler (Primärschlüssel = SchülerID)

SchülerID Name Klasse Klassenlehrer
1 Hans Manser 5a Müllermann
2 Maximilian Gross 5a Müllermann
3 Florian Bösch 5b Wüst

Tabelle: AG_Teilnahme (Primärschlüssel = Kombination aus SchülerID und AGID)

SchülerID AGID Beschreibung Nachweis
1 1 Fussball Teilgenommen
1 2 Börse Teilgenommen
2 1 Fussball Teilgenommen
2 3 Schach Teilgenommen
3 1 Fussball Mit Erfolg teilgenommen

Durch die Aufteilung in die Tabellen Schüler und AG_Teilnahme haben ich nun die 2NF erreicht. Die Tabelle AG_Teilnahme enthält alle Informationen zur Teilnahme an AGs und ist nur durch den zusammengesetzten Schlüssel von SchülerID und AGID eindeutig identifizierbar.

Zusammenfassung des Normalisierungsprozesses

  • 0NF: Nicht atomare Werte (mehrere AGIDs und Beschreibungen in einer Zelle).
  • 1NF: Aufteilung der AGs in separate Zeilen, um atomare Werte zu erreichen.
  • 2NF: Aufteilung in zwei Tabellen, um partielle Abhängigkeiten zu eliminieren.

Normalisierungsprozess für Fußball-Rangliste

Beispiel: Fußball-Rangliste in der 0. Normalform (0NF)

Angenommen, wir haben eine Tabelle, die Informationen über Fußballspieler und deren Ergebnisse in verschiedenen Spielen während eines Turniers enthält.

Ausgangstabelle: Tabelle in 0. Normalform (0NF)

SpielerID Name Land Spiel Tore Ergebnis
1 Felix Dribbelkünstler GER 1, 2 3, 1 Sieg, Unentschieden
2 Marco Schützenmeister SLO 1, 3 2, 2 Sieg, Sieg
3 Leo Stürmer CZE 1, 2, 3 1, 2, 4 Niederlage, Sieg, Unentschieden

In der 0. Normalform gibt es mehrere Werte in den Spalten Spiel, Versuche und Ergebnis, was gegen die Regeln der Normalisierung verstößt.

Schritt 1: Überführung in die 1. Normalform (1NF)

In der 1NF stelle ich sicher, dass jede Zelle nur einen einzelnen Wert enthält. Dazu splitte ich die Einträge für die verschiedenen Spiele in separate Zeilen.

Tabelle in 1. Normalform (1NF)

SpielerID Name Land Spiel Tore Ergebnis
1 Felix Dribbelkünstler GER 1 3 Sieg
1 Felix Dribbelkünstler GER 2 1 Unentschieden
2 Marco Schützenmeister SLO 1 2 Sieg
2 Marco Schützenmeister SLO 3 2 Sieg
3 Leo Stürmer CZE 1 1 Niederlage
3 Leo Stürmer CZE 2 2 Sieg
3 Leo Stürmer CZE 3 4 Unentschieden

Jetzt sind alle Werte atomar, und die Tabelle ist in der 1. Normalform.

Schritt 2: Überführung in die 2. Normalform (2NF)

Um die 2NF zu erreichen, entferne ich partielle Abhängigkeiten. Ich teile die Tabelle in zwei auf: eine Tabelle für die allgemeinen Informationen über die Spieler und eine zweite für die Spiel-Ergebnisse.

Tabelle: Spieler (Primärschlüssel = SpielerID)

SpielerID Name Land
1 Felix Dribbelkünstler GER
2 Marco Schützenmeister SLO
3 Leo Stürmer CZE

Tabelle: Spiel_Ergebnisse (Primärschlüssel = Kombination aus SpielerID und Spiel)

SpielerID Spiel Tore Ergebnis
1 1 3 Sieg
1 2 1 Unentschieden
2 1 2 Sieg
2 3 2 Sieg
3 1 1 Niederlage
3 2 2 Sieg
3 3 4 Unentschieden

In der Spiel_Ergebnisse-Tabelle ist jede Kombination aus SpielerID und Spiel eindeutig. Die Spieler-Tabelle enthält nur die allgemeinen Informationen über die Spieler.

Zusammenfassung des Normalisierungsprozesses

  • 0NF: Nicht atomare Werte in den Spalten Boulder, Versuche und Ergebnis.
  • 1NF: Aufteilung der Boulder-Ergebnisse in separate Zeilen für atomare Werte.
  • 2NF: Aufteilung in zwei Tabellen (Kletterer und Boulder_Ergebnisse), um partielle Abhängigkeiten zu entfernen.

Dieser Prozess stellt sicher, dass die Daten bis zur 2. Normalform normalisiert sind und mögliche Redundanzen reduziert werden.