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.

Im nächsten Kapitel lernst du, wie man mit JOINs, GROUP BY und Aggregatfunktionen (z. B. SUM, AVG, COUNT) komplexere Abfragen baut.

📚 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