Fremdschlüssel (Foreign Key)

Alltags-Analogie

Ein Fremdschlüssel ist wie eine Referenznummer auf einem Formular, die auf eine andere Akte verweist – statt alle Informationen über den Kunden noch einmal komplett in der Bestellung zu wiederholen...

Was steckt dahinter?

Ein Fremdschlüssel ist wie eine Referenznummer auf einem Formular, die auf eine andere Akte verweist – statt alle Informationen über den Kunden noch einmal komplett in der Bestellung zu wiederholen, trägt man einfach dessen Kundennummer ein und weiß damit genau, welcher Kunde gemeint ist. Technisch gesprochen ist ein Fremdschlüssel eine Spalte in einer Tabelle, die auf den Primärschlüssel eines Datensatzes in einer anderen (oder manchmal derselben) Tabelle zeigt. Fremdschlüssel sind das technische Werkzeug, mit dem die im ER-Modell geplanten Beziehungen tatsächlich in der Datenbank umgesetzt werden. Eine Tabelle “Bestellungen” enthält dann typischerweise eine Spalte “kunde_id”, die auf die entsprechende Zeile in der Tabelle “Kunden” verweist. Datenbanksysteme können solche Beziehungen zusätzlich technisch erzwingen (“referenzielle Integrität”): Eine Bestellung kann dann z.B. nicht angelegt werden, wenn der referenzierte Kunde gar nicht existiert, und je nach Konfiguration verhindert die Datenbank auch das Löschen eines Kunden, solange noch Bestellungen auf ihn verweisen. In Frameworks wie Laravel lassen sich solche Beziehungen über Eloquent ORM sehr komfortabel definieren, ohne das zugrunde liegende SQL händisch schreiben zu müssen – Entwickler legen die Beziehung einmal in den Models fest und können danach z.B. ganz einfach “alle Bestellungen eines Kunden” abrufen.