DBMS - Datenbank Normalisierung

Hallo, angehende Datenbankenthusiasten! Heute machen wir uns auf eine aufregende Reise durch die Welt der Datenbanknormalisierung. Als dein freundlicher Nachbarschaftsinformatiklehrer freue ich mich darauf, dich durch dieses wichtige Konzept im Datenbankdesign zu führen. Keine Sorge, wenn du neu im Programmieren bist – wir beginnen mit den Grundlagen und arbeiten uns hoch!

DBMS - Database Normalization

Einführung in die Datenbanknormalisierung

Stell dir vor, du organisierst deinen Schrank. Du würdest nicht einfach alle deine Kleidung in einen großen Haufen werfen, oder? Natürlich nicht! Du würdest sie nach Typ, Farbe oder Saison ordnen. Die Datenbanknormalisierung ist ziemlich ähnlich – es geht darum, Daten effizient zu organisieren und Redundanz zu reduzieren.

Funktionalität

Lassen Sie mit einem grundlegenden Konzept beginnen: Funktionalität.

Was ist Funktionalität?

Funktionalität (FD) ist eine Beziehung zwischen zwei Attributen in einer Beziehung, wobei ein Attribut das andere bestimmt.

Stellen wir uns eine Schülerdatenbank vor:

Student_ID Name Alter Kurs
101 Alice 20 Mathematik
102 Bob 21 Physik
103 Charlie 19 Chemie

Hier bestimmt die Student_ID funktional Name, Alter und Kurs. Wir schreiben das wie folgt:

Student_ID → Name, Alter, Kurs

Das bedeutet, wenn wir die Student_ID kennen, können wir den Namen, das Alter und den Kurs des Schülers bestimmen.

Armstrong-Axiome

Nun sprechen wir über Armstrong-Axiome. Diese sind die grundlegenden Regeln für funkttionale Abhängigkeiten. Denke daran als die "Physikgesetze" für Datenbankbeziehungen!

  1. Reflektivität: Wenn Y eine Teilmenge von X ist, dann X → Y
  2. Erweiterung: Wenn X → Y, dann XZ → YZ
  3. Transitiivität: Wenn X → Y und Y → Z, dann X → Z

Diese mögen kompliziert klingen, aber sie sind nur formale Wege, um logische Beziehungen zu beschreiben. Wir werden sehen, wie sie angewendet werden, wenn wir weitermachen!

Triviale Funktionalität

Eine triviale funktionale Abhängigkeit ist, wenn ein Attribut auf der rechten Seite eine Teilmenge der linken Seite ist. Zum Beispiel:

Student_ID, Name → Student_ID

Dies ist trivial, weil die Kenntnis von Student_ID und Name uns immer Student_ID sagen wird (es ist bereits dort!).

Normalisierung

Nun tauchen wir in das Herz unseres Unterrichts ein: Normalisierung. Normalisierung ist der Prozess der Organisation von Daten, um Redundanz und Abhängigkeit zu minimieren. Es ist wie das Aufräumen deiner Datenbank!

Erste Normalform (1NF)

Die erste Normalform ist die grundlegendste Stufe der Normalisierung. Um 1NF zu erreichen:

  1. Beseitige wiederholende Gruppen
  2. Erstelle eine separate Tabelle für jede Gruppe verwandter Daten
  3. Identifiziere jede Gruppe verwandter Daten mit einem Primärschlüssel

Schauen wir uns ein Beispiel an:

Vor 1NF:

Bestell_ID Produkt Menge
1 Apfel, Banane 2, 3
2 Orange, Traube 1, 4

Nach 1NF:

Bestell_ID Produkt Menge
1 Apfel 2
1 Banane 3
2 Orange 1
2 Traube 4

Siehst du, wie wir die wiederholenden Gruppen beseitigt haben? Viel sauberer!

Zweite Normalform (2NF)

Um 2NF zu erreichen, müssen wir:

  1. In 1NF sein
  2. Teilabhängigkeiten entfernen

Schauen wir uns ein Beispiel an:

Student_ID Kurs_ID Kurs_Name Dozent
101 C1 Mathematik Prof. Smith
102 C2 Physik Prof. Johnson

Hier hängt Kurs_Name und Dozent von Kurs_ID ab, nicht von Student_ID. Wir sollten dies in zwei Tabellen aufteilen:

Tabelle 1: Student_Kurs

Student_ID Kurs_ID
101 C1
102 C2

Tabelle 2: Kurs

Kurs_ID Kurs_Name Dozent
C1 Mathematik Prof. Smith
C2 Physik Prof. Johnson

Dritte Normalform (3NF)

Um 3NF zu erreichen, müssen wir:

  1. In 2NF sein
  2. Transitive Abhängigkeiten entfernen

Schauen wir uns ein Beispiel an:

Mitarbeiter_ID Abteilung Abteilungsleiter
101 Vertrieb John
102 Marketing Sarah

Hier hängt Abteilungsleiter von Abteilung ab, die wiederum von Mitarbeiter_ID abhängt. Wir sollten dies aufteilen:

Tabelle 1: Mitarbeiter

Mitarbeiter_ID Abteilung
101 Vertrieb
102 Marketing

Tabelle 2: Abteilung

Abteilung Abteilungsleiter
Vertrieb John
Marketing Sarah

Boyce-Codd-Normalform (BCNF)

BCNF ist eine etwas stärkere Version der 3NF. Um BCNF zu erreichen:

  1. In 3NF sein
  2. Für jede Abhängigkeit X → Y, sollte X ein Superkey sein

Hier ist ein Beispiel:

Student Fach Dozent
Alice Mathematik Prof. Smith
Bob Physik Prof. Johnson

In diesem Fall gibt es sowohl (Student, Fach) → Dozent als auch Dozent → Fach. Um BCNF zu erreichen, teilen wir es:

Tabelle 1: Student_Dozent

Student Dozent
Alice Prof. Smith
Bob Prof. Johnson

Tabelle 2: Dozent_Fach

Dozent Fach
Prof. Smith Mathematik
Prof. Johnson Physik

Und das war's! Wir haben die Grundlagen der Datenbanknormalisierung abgedeckt. Denke daran, dass although Normalisierung wichtig ist, kann es manchmal aus Leistungsgründen nützlich sein, zu denormalisieren. Es geht darum, die richtige Balance für deine spezifischen Bedürfnisse zu finden.

Ich hoffe, dieser Leitfaden hat dir geholfen. Erinnere dich daran, Übung macht den Meister! Versuche, einige Beispiel-Datenbanken selbst zu normalisieren. Wenn du Fragen hast, zögere nicht, sie zu stellen. Frohes Normalisieren!

Credits: Image by storyset