π‘ 1. Relationale Datenmodelle & KardinalitΓ€ten
FremdschlΓΌssel (Foreign Keys) verweisen auf den PrimΓ€rschlΓΌssel einer anderen Tabelle und stellen sicher, dass keine "Waisen"-Daten entstehen:
βββββββββββββββββββββββββββ 1:1 βββββββββββββββββββββββββββ
β kunden β ββββββββββββββββββββ β kunden_profile β
βββββββββββββββββββββββββββ€ βββββββββββββββββββββββββββ€
β PK id (INTEGER) β β PK id (INTEGER) β
β name (TEXT) β β FK kunde_id (UNIQUE) ββββ (Zeigt auf kunden.id)
β email (TEXT) β β lieferadresse (TEXT)β β
βββββββββββββββββββββββββββ βββββββββββββββββββββββββββ β
β 1 β
β β
β 1:n β
βΌ β
βββββββββββββββββββββββββββ β
β bestellungen β β
βββββββββββββββββββββββββββ€ β
β PK id (INTEGER) β β
β FK kunde_id (INTEGER) β βββββββββββββββββββββββββββββββββββββββββββββββββββ
β gesamtbetrag (REAL) β
β status (TEXT) β
βββββββββββββββββββββββββββ
β kunden β ββββββββββββββββββββ β kunden_profile β
βββββββββββββββββββββββββββ€ βββββββββββββββββββββββββββ€
β PK id (INTEGER) β β PK id (INTEGER) β
β name (TEXT) β β FK kunde_id (UNIQUE) ββββ (Zeigt auf kunden.id)
β email (TEXT) β β lieferadresse (TEXT)β β
βββββββββββββββββββββββββββ βββββββββββββββββββββββββββ β
β 1 β
β β
β 1:n β
βΌ β
βββββββββββββββββββββββββββ β
β bestellungen β β
βββββββββββββββββββββββββββ€ β
β PK id (INTEGER) β β
β FK kunde_id (INTEGER) β βββββββββββββββββββββββββββββββββββββββββββββββββββ
β gesamtbetrag (REAL) β
β status (TEXT) β
βββββββββββββββββββββββββββ
π 2. FremdschlΓΌssel-Syntax & ON DELETE CASCADE
In SQLite muss die FremdschlΓΌsselprΓΌfung explizit pro Verbindung eingeschaltet werden:
PRAGMA foreign_keys = ON;
CREATE TABLE bestellungen (
id INTEGER PRIMARY KEY AUTOINCREMENT,
kunde_id INTEGER NOT NULL,
gesamtbetrag REAL NOT NULL CHECK (gesamtbetrag >= 0.0),
status TEXT NOT NULL DEFAULT 'offen',
-- FremdschlΓΌssel-Definition mit Kaskadierung:
FOREIGN KEY (kunde_id) REFERENCES kunden(id) ON DELETE CASCADE
);
ποΈ Der Domino-Effekt von ON DELETE CASCADE
Wird ein Datensatz in der Elterntabelle gelΓΆscht (DELETE FROM kunden WHERE id = 1;), lΓΆscht das RDBMS wie bei einem Domino-Effekt automatisch alle zugehΓΆrigen Profil- und BestelldatensΓ€tze mit. Das verhindert verwaiste DatensΓ€tze in deiner Datenbank!
π 3. Cheat-Sheet: Beziehungsarten & Aktionen
| Beziehung | Realisierung in SQL | Bedeutung |
|---|---|---|
| 1:1 (Eins-zu-Eins) | kunde_id INTEGER UNIQUE REFERENCES ... |
Jeder Kunde hat hΓΆchstens ein Profil |
| 1:n (Eins-zu-Viele) | kunde_id INTEGER REFERENCES ... |
Ein Kunde kann beliebig viele Bestellungen besitzen |
ON DELETE CASCADE |
FOREIGN KEY (...) REFERENCES ... ON DELETE CASCADE |
Automatisches MitlΓΆschen abhΓ€ngiger Kind-Zeilen |
ON DELETE RESTRICT |
FOREIGN KEY (...) REFERENCES ... ON DELETE RESTRICT |
Verhindert das LΓΆschen des Eltern-Eintrags |