3. Normalform

Hä? Dritte was?

3. Normalform! Komm, ich erklär's dir!

Die 3. Normalform

Mehrmals das Gleiche. Also: redundant.

Unser Entwurf für die Datenbank sieht bisher so aus:

Hier müsste uns auffallen, dass wir überflüssige Informationen speichern! Wir speichern nämlich bei jedem Schüler einer Klasse das Klassenzimmer ab. Eigentlich müsste es doch reichen, für eine Klasse das Klassenzimmer ein einziges Mal zu speichern!

Eine Information, die wir mehrfach abspeichern, nennt man eine Redundanz. Redundanzen sollte man in Datenbanken vor allem deshalb vermeiden, weil sie die Datenbank anfällig für Fehler machen. Wenn du Zeit hast, google mal nach den Datenbank-Anomalien: Einfüge-Anomalie, Änderungs-Anomalie und Lösch-Anomalie.

Redundanzen beseitigt man so:

Wir teilen in mehrere Tabellen auf!

Schau dir mal die Klasse 12-1 an! Bei der speichern wir jedes Klassenzimmer jetzt nur ein einziges Mal. Also genau so, wie wir das haben wollen. Damit haben wir die Redundanzen beseitigt, denn es gibt keine doppelten Informationen mehr in der Datenbank.

Und wie hängen die Tabellen jetzt zusammen?

Möglicherweise ist dir aufgefallen, dass es eine gute und eine schlechte Nachricht gibt.

Die gute Nachricht: Wir haben keine Redundanzen mehr!

Die schlechte Nachricht: Man weiß jetzt gar nicht mehr, welcher Schüler in welcher Klasse ist, seit wir in zwei Tabellen aufgeteilt haben. Aber du weißt bestimmt, wie wir das lösen:

Fremdschlüssel: Wir merken uns was!

Das Problem lösen wir so: Wir merken uns beim Schüler, in welcher Klasse er ist. Logisch, nicht wahr?

Die klassenNr ist in der linken Tabelle ein Fremdschlüssel. Hier noch mal als Erinnerung, was ein Fremschlüssel war:

Fremdschlüssel: Definition

Ein Fremdschlüssel ist ein Attribut, das auf einen Primärschlüssel in einer anderen Tabelle verweist.

3. Normalform - Definition

Es genügt, wenn du dir Folgendes merkst:

Eine Datenbank, in der man nach jeder Information sortieren kann und die keine Redundanzen enthält, befindet sich in der sogenannten 3. Normalform!

Wenn du eine Datenbank baust, sollte die immer in der 3. Normalform sein. Dann ist alles super!

Nochmal im Video erklären, bitte

Na, das war doch ganz einfach! Jetzt schludere ich das kurz für die Rousseau hin und …

Denkst du wohl. Wenn du das für sie so ausdruckst, kriegt sie einen Schreikrampf. 😤

Wieso das denn? Ist doch perfekt!

Glaubst du, sie freut sich, wenn du wegen zwei Tabellen 500 Meter Papier ausspuckst, 🧻 auf dem tausend Namen stehen? Sie will doch nur das Modell, also die Struktur der Datenbank. Es reicht ihr, wenn sie weiß, welche Tabellen und welche Attribute und welche Primärschlüssel, capisce?

Aber du hast es doch eben auch so …

Die Tabellen mit den darin enthaltenen Daten habe ich nur hingemalt, damit sich ein Erbsenhirn 🧠 wie deines es ist sich das Ganze besser vorstellen kann. Aber es ist zu aufwändig, immer alle Daten hinzuschreiben.

(kleinlaut) Ja … Aber wie kann man es sonst machen?

Du machst einfach ein erweitertes Entity-Relationship-Modell (eERM).