In diesem Kapitel lernst du, wie du eine gut strukturierte und effiziente Datenbank entwirfst. Wir werden uns mit Primärschlüsseln, Fremdschlüsseln, Normalisierung und Datenbankbeziehungen beschäftigen.
7.1 Primärschlüssel
Ein Primärschlüssel ist eine Spalte (oder eine Kombination von Spalten), die jeden Datensatz in einer Tabelle eindeutig identifiziert. Ein Primärschlüssel darf keine doppelten Werte enthalten und darf nicht NULL
sein.
Beispiel:
In einer Tabelle benutzer
könnte die Spalte id
der Primärschlüssel sein:
CREATE TABLE benutzer ( id INT PRIMARY KEY, name VARCHAR(50), alter INT );
7.2 Fremdschlüssel
Ein Fremdschlüssel ist eine Spalte, die auf den Primärschlüssel einer anderen Tabelle verweist. Er wird verwendet, um Beziehungen zwischen Tabellen herzustellen.
Beispiel:
In einer Tabelle bestellungen
könnte die Spalte benutzer_id
ein Fremdschlüssel sein, der auf die id
-Spalte in der Tabelle benutzer
verweist:
CREATE TABLE bestellungen ( id INT PRIMARY KEY, benutzer_id INT, betrag DECIMAL(10, 2), FOREIGN KEY (benutzer_id) REFERENCES benutzer(id) );
7.3 Normalisierung
Die Normalisierung ist ein Prozess, bei dem eine Datenbank so strukturiert wird, dass Redundanzen (doppelte Daten) vermieden und die Datenintegrität gewährleistet wird. Es gibt mehrere Normalisierungsformen, aber die wichtigsten sind:
1. Normalform (1NF)
Jede Tabelle hat einen Primärschlüssel.
Jede Spalte enthält atomare Werte (keine Listen oder Wiederholungen).
2. Normalform (2NF)
Die Tabelle muss in der 1NF sein.
Alle Nicht-Schlüsselspalten hängen vollständig vom Primärschlüssel ab.
3. Normalform (3NF)
Die Tabelle muss in der 2NF sein.
Es gibt keine transitiven Abhängigkeiten (keine Spalte hängt von einer anderen Nicht-Schlüsselspalte ab).
Beispiel:
Statt alle Daten in einer Tabelle zu speichern, teilst du sie in mehrere Tabellen auf, um Redundanzen zu vermeiden. Zum Beispiel:
benutzer
: Speichert Benutzerdaten.bestellungen
: Speichert Bestellungen mit einem Fremdschlüssel aufbenutzer
.
7.4 Datenbankbeziehungen
Datenbankbeziehungen definieren, wie Tabellen miteinander verbunden sind. Die wichtigsten Beziehungstypen sind:
1:1 (Eins-zu-Eins)
Jeder Datensatz in Tabelle A ist mit genau einem Datensatz in Tabelle B verknüpft und umgekehrt.
Beispiel: Ein Benutzer hat genau ein Profilbild.
1:n (Eins-zu-Viele)
Ein Datensatz in Tabelle A kann mit mehreren Datensätzen in Tabelle B verknüpft sein.
Beispiel: Ein Benutzer kann mehrere Bestellungen haben.
n:m (Viele-zu-Viele)
Mehrere Datensätze in Tabelle A können mit mehreren Datensätzen in Tabelle B verknüpft sein.
Beispiel: Ein Benutzer kann mehrere Kurse belegen, und ein Kurs kann von mehreren Benutzern belegt werden. Dies wird oft über eine Verbindungstabelle realisiert.
7.5 Zusammenfassung
In diesem Kapitel hast du gelernt:
Was Primärschlüssel und Fremdschlüssel sind und wie sie verwendet werden.
Wie du eine Datenbank durch Normalisierung effizient und redundanzfrei gestaltest.
Die verschiedenen Arten von Datenbankbeziehungen (1:1, 1:n , n:m ).
Im nächsten Kapitel werden wir uns mit fortgeschrittenen Themen wie Views, Stored Procedures, Trigger und Transaktionen beschäftigen.
Quiz zu Datenbankdesign
Teste dein Wissen mit diesen Fragen:
Was ist ein Primärschlüssel?
a) Eine Spalte, die auf eine andere Tabelle verweist.
b) Eine Spalte, die jeden Datensatz eindeutig identifiziert.
c) Eine Spalte, die doppelte Werte enthalten darf.
Welche Normalform erfordert, dass es keine transitiven Abhängigkeiten gibt?
a) 1NF
b) 2NF
c) 3NF
Welche Beziehung besteht, wenn ein Benutzer mehrere Bestellungen haben kann?
a) 1:1
b) 1:n
c) n:m
Antworten:
1. b) Eine Spalte, die jeden Datensatz eindeutig identifiziert.
2. c) 3NF
3. b) 1:n