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