Normalisierung von Datenbanken - janehlenb/Projektarbeit-ChatGPT-Python GitHub Wiki

Selbstverständlich! Hier ist eine vertiefte Erklärung der Normalisierung von Datenbanken und weitere Normalformen, die über die erste Normalform (1NF) hinausgehen.

Theorie

Die Normalisierung ist ein Prozess zur Organisation von Daten in einer Datenbank, um Redundanz zu reduzieren, Abhängigkeiten zu vermeiden und die Integrität der Daten zu gewährleisten. Sie erfolgt in verschiedenen Stufen, die als Normalformen bezeichnet werden.

Erste Normalform (1NF)

Die erste Normalform (1NF) stellt sicher, dass alle Daten in einer Tabelle atomar sind, das heißt, sie sind nicht weiter unterteilbar. Jedes Feld einer Tabelle enthält nur einen einzigen Wert. Mehrwertige Attribute werden in separate Tabellen ausgelagert und mit Beziehungen verknüpft. Dadurch werden Redundanzen und Inkonsistenzen reduziert.

Ein allgemeines Beispiel einer Tabelle in der ersten Normalform:

KundenID Name E-Mail Telefon
1 John Doe [email protected] 123-456-7890
2 Jane Doe [email protected] 987-654-3210

Zweite Normalform (2NF)

Die zweite Normalform (2NF) baut auf der ersten Normalform auf und behandelt Abhängigkeiten zwischen Spalten. Um in die zweite Normalform zu gelangen, müssen alle Nicht-Schlüsselattribute funktional abhängig vom gesamten Schlüssel sein, nicht nur von einem Teil davon.

Ein allgemeines Beispiel einer Tabelle in der zweiten Normalform:

BestellungsID ProduktID Produktname Kategorie
1 1 T-Shirt Kleidung
1 2 Jeans Kleidung
2 1 T-Shirt Kleidung
2 3 Schuhe Schuhe

In diesem Beispiel ist "BestellungsID" der Primärschlüssel und "ProduktID" ist der Fremdschlüssel, der auf die Tabelle "Produkte" verweist. Die Spalten "Produktname" und "Kategorie" sind funktional abhängig vom Primärschlüssel und nicht voneinander abhängig.

Dritte Normalform (3NF)

Die dritte Normalform (3NF) baut auf der zweiten Normalform auf und behandelt Transitive Abhängigkeiten. Eine Transitive Abhängigkeit liegt vor, wenn eine Nicht-Schlüssel-Spalte von einer anderen Nicht-Schlüssel-Spalte abhängt, die selbst von einem Schlüssel abhängig ist.

Ein allgemeines Beispiel einer Tabelle in der dritten Normalform:

BestellungsID ProduktID Produktname Kategorie
1 1 T-Shirt Kleidung
2 1 T-Shirt Kleidung
2 3 Schuhe Schuhe
ProduktID Preis

|

1 | 10.00 | | 3 | 50.00 |

In diesem Beispiel wurden die Spalten "Produktname" und "Kategorie" in eine separate Tabelle "Produkte" ausgelagert. Die Tabelle "Produkte" enthält nur eindeutige Produktinformationen, während die Tabelle "Bestellungen" nur die Informationen enthält, die für Bestellungen relevant sind. Die Tabelle "Produkte" wird über den Primärschlüssel "ProduktID" mit der Tabelle "Bestellungen" verknüpft.

Weitere Normalformen wie die Boyce-Codd-Normalform (BCNF) und die Vierte Normalform (4NF) behandeln fortgeschrittenere Aspekte der Normalisierung und sind für den allgemeinen Gebrauch weniger relevant. Es ist jedoch wichtig, die Grundlagen der 1NF, 2NF und 3NF zu verstehen, um gut strukturierte Datenbanken zu entwerfen.

Praxis

Um das erlernte Wissen zur Normalisierung von Datenbanken in der Praxis anzuwenden, hier eine leichte Aufgabe:

Leichte Aufgabe: Gegeben ist die folgende Tabelle in der ersten Normalform:

PersonID Vorname Nachname Adresse
1 John Doe 123 Main St.
2 Jane Smith 456 Elm St.
3 Bob Johnson 789 Oak St.

Bringe die Tabelle in die zweite Normalform (2NF) und erstelle eine separate Tabelle für die Adressen.

Musterlösung:

PersonID Vorname Nachname
1 John Doe
2 Jane Smith
3 Bob Johnson
PersonID Adresse
1 123 Main St.
2 456 Elm St.
3 789 Oak St.

Für eine schwierigere Aufgabe könntest du eine Tabelle in der dritten Normalform (3NF) entwerfen und die Beziehungen zwischen den Tabellen festlegen.

Ich hoffe, diese zusätzlichen Informationen helfen dir weiter! Bei weiteren Fragen stehe ich gerne zur Verfügung. Happy Coding!