Bisher haben wir mit den Tabellen kunden und bestellungen schon eine 1:n-Beziehung angelegt: Ein Kunde kann viele Bestellungen haben.
Jetzt gehen wir einen Schritt weiter und betrachten systematisch die wichtigsten Schlüssel und Beziehungen.

🔹 Primärschlüssel (PRIMARY KEY)

Ein Primärschlüssel ist eine eindeutige Kennung pro Zeile.

Beispiel:

id INT AUTO_INCREMENT PRIMARY KEY

Eigenschaften:

  • Eindeutig
  • Nicht NULL
  • Meist ein fortlaufender Zähler

👉 Hinweis: In allen Tabellen, die wir bisher angelegt haben, ist id der Primärschlüssel.

🔹 Fremdschlüssel (FOREIGN KEY)

Ein Fremdschlüssel verweist auf den Primärschlüssel einer anderen Tabelle.
Beispiel aus bestellungen:

kunde_id INT,
FOREIGN KEY (kunde_id) REFERENCES kunden(id)

Damit wird jede Bestellung einem Kunden zugeordnet.

🔹 Beziehungstypen

1:1-Beziehung
Ein Kunde hat genau einen Ausweis.
👉 Hinweis: Neue Tabelle ausweise:

CREATE TABLE ausweise (
    id INT AUTO_INCREMENT PRIMARY KEY,
    kunde_id INT UNIQUE,
    nummer VARCHAR(50) NOT NULL,
    gueltig_bis DATE NOT NULL,
    FOREIGN KEY (kunde_id) REFERENCES kunden(id)
        ON DELETE CASCADE
);
  • kunde_id UNIQUE → stellt sicher, dass pro Kunde nur ein Ausweis existiert.
  • ON DELETE CASCADE → wird ein Kunde gelöscht, verschwindet automatisch auch sein Ausweis.

1:n-Beziehung

Ein Kunde hat viele Bestellungen – das kennst du schon (kundenbestellungen).

n:m-Beziehung

Ein Kunde kann viele Produkte bestellen, und ein Produkt kann von vielen Kunden bestellt werden.
👉 Hinweis: Dafür braucht man eine Zwischentabelle.

Neue Tabelle produkte:

CREATE TABLE produkte (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    preis DECIMAL(10,2) NOT NULL
);

Zwischentabelle kunden_produkte:

CREATE TABLE kunden_produkte (
    kunde_id INT NOT NULL,
    produkt_id INT NOT NULL,
    PRIMARY KEY (kunde_id, produkt_id),
    FOREIGN KEY (kunde_id) REFERENCES kunden(id)
        ON DELETE CASCADE,
    FOREIGN KEY (produkt_id) REFERENCES produkte(id)
        ON DELETE CASCADE
);

👉 Hinweis: So kannst du modellieren: „Kunde X hat Produkt Y bestellt“.

🔹 Beispiele für Daten

Einfügen von Produkten:

INSERT INTO produkte (name, preis) VALUES
('USB-C Kabel', 9.99),
('Laptop Rucksack', 79.90),
('Maus', 25.50);

Zuordnung:

INSERT INTO kunden_produkte (kunde_id, produkt_id) VALUES
(1, 2),
(1, 3),
(2, 1);

🔹 Prüfen mit JOIN

Bestellungen mit Kundendaten:

SELECT k.vorname, k.nachname, b.produkt, b.preis
FROM kunden k
JOIN bestellungen b ON k.id = b.kunde_id;

Produkte eines Kunden (über n:m-Beziehung):

SELECT k.vorname, k.nachname, p.name, p.preis
FROM kunden k
JOIN kunden_produkte kp ON k.id = kp.kunde_id
JOIN produkte p ON kp.produkt_id = p.id;

🔹 Übung

  1. Lege für einen Kunden einen Ausweis in der Tabelle ausweise an.
  2. Füge drei Produkte hinzu.
  3. Verknüpfe mindestens zwei Produkte mit einem Kunden über kunden_produkte.
  4. Führe ein JOIN aus, um zu sehen, welche Produkte der Kunde hat.

✅ Zusammenfassung

  • Primärschlüssel: eindeutige ID pro Zeile.
  • Fremdschlüssel: Verweis auf eine andere Tabelle.
  • 1:1: Kunde ↔ Ausweis.
  • 1:n: Kunde ↔ Bestellungen.
  • n:m: Kunden ↔ Produkte (über Zwischentabelle).
  • Mit JOIN kannst du verbundene Daten aus mehreren Tabellen zusammen anzeigen.

📚 Inhaltsverzeichnis

👉 MariaDB Kapitel 1: Einführung & Installation im Terminal
👉 MariaDB Kapitel 2: Benutzer & Rechteverwaltung
👉 MariaDB Kapitel 3: Tabellen sauber anlegen (Primär- & Fremdschlüssel)
👉 MariaDB Kapitel 4: Grundbefehle & Kurzschreibweisen in der MariaDB-Konsole
👉 MariaDB Kapitel 5: CRUD-Befehle  – Daten einfügen, lesen, ändern und löschen
👉 MariaDB Kapitel 6: Primär- und Fremdschlüssel – Tabellen verknüpfen
👉 MariaDB Kapitel 7: Profi-Abfragen mit JOIN, GROUP BY & Aggregatfunktionen
👉 MariaDB Kapitel 8: Indexe, Views & Transaktionen
👉 MariaDB Kapitel 9: Produktivbetrieb – Sicherheit, Backups & Verwaltung
👉 MariaDB Kapitel 10: Abschlussprojekt – Ein Mini-Shop

⭐ Bonus-Kapitel Ideen

👉 MariaDB Kapitel 11: Stored Procedures – Automatisierte Abläufe
👉 MariaDB Kapitel 12: Trigger – Aktionen bei Änderungen
👉 MariaDB Kapitel 13: Events – Zeitgesteuerte Aufgaben
👉 MariaDB Kapitel 14: Sicherheit & Best Practices
👉 MariaDB Kapitel 15: Performance-Tuning & Optimierung