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
ausweisean. - Füge drei Produkte hinzu.
- Verknüpfe mindestens zwei Produkte mit einem Kunden über
kunden_produkte. - Führe ein
JOINaus, 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
