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 (kunden
↔ bestellungen
).
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
- Lege für einen Kunden einen Ausweis in der Tabelle
ausweise
an. - Füge drei Produkte hinzu.
- Verknüpfe mindestens zwei Produkte mit einem Kunden über
kunden_produkt
e. - 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