7. Datenbankdesign

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 auf benutzer.

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:

  1. 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.

  2. Welche Normalform erfordert, dass es keine transitiven Abhängigkeiten gibt?

    • a) 1NF

    • b) 2NF

    • c) 3NF

  3. Welche Beziehung besteht, wenn ein Benutzer mehrere Bestellungen haben kann?

    • a) 1:1

    • b) 1:n

    • c) n:m