Fremdschlüssel

Definition - Was bedeutet Fremdschlüssel?

Ein Fremdschlüssel ist eine Spalte oder Gruppe von Spalten in einer relationalen Datenbanktabelle, die eine Verknüpfung zwischen Daten in zwei Tabellen bereitstellt. Es fungiert als Querverweis zwischen Tabellen, da es auf den Primärschlüssel einer anderen Tabelle verweist und dadurch eine Verbindung zwischen ihnen herstellt.

Die meisten Tabellen in einem relationalen Datenbanksystem entsprechen dem Fremdschlüsselkonzept. In komplexen Datenbanken und Data Warehouses müssen Daten in einer Domäne über mehrere Tabellen hinweg hinzugefügt werden, um eine Beziehung zwischen ihnen aufrechtzuerhalten. Das Konzept der referenziellen Integrität leitet sich aus der Fremdschlüsseltheorie ab.

Fremdschlüssel und ihre Implementierung sind komplexer als Primärschlüssel.

Technische.me erklärt Fremdschlüssel

Während ein Primärschlüssel für sich allein existieren kann, muss ein Fremdschlüssel immer irgendwo auf einen Primärschlüssel verweisen. Die ursprüngliche Tabelle mit dem Primärschlüssel ist die übergeordnete Tabelle (auch als referenzierte Tabelle bezeichnet). Auf diesen Schlüssel kann von mehreren Fremdschlüsseln aus anderen Tabellen verwiesen werden, die als "untergeordnete" Tabellen bezeichnet werden.

Für jede Spalte, die als Fremdschlüssel fungiert, sollte in der verknüpften Tabelle ein entsprechender Wert vorhanden sein. Beim Einfügen von Daten und Entfernen von Daten aus der Fremdschlüsselspalte ist besondere Vorsicht geboten, da durch unachtsames Löschen oder Einfügen die Beziehung zwischen den beiden Tabellen zerstört werden kann.

Wenn die Integrität zwischen den beiden Datenbanken beeinträchtigt wird, können Fehler auftreten.

Wenn beispielsweise zwei Tabellen vorhanden sind, Kunde und Bestellung, kann eine Beziehung zwischen ihnen erstellt werden, indem ein Fremdschlüssel in die Auftragstabelle eingefügt wird, der auf die CUSTOMER_ID in der Kundentabelle verweist. Die Spalte CUSTOMER_ID ist sowohl in Kunden- als auch in Auftragstabellen vorhanden.

Die CUSTOMER_ID in der Auftragstabelle wird zum Fremdschlüssel und bezieht sich auf den Primärschlüssel in der Kundentabelle. Um einen Eintrag in die Auftragstabelle einzufügen, muss die Fremdschlüsseleinschränkung erfüllt sein.

Der Versuch, eine CUSTOMER_ID einzugeben, die nicht in der Kundentabelle vorhanden ist, schlägt fehl und behält somit die referenzielle Integrität der Tabelle bei.

In realen Datenbanken kann die Integrität zwischen Fremdschlüssel- und Primärschlüsseltabellen sichergestellt werden, indem referenzielle Einschränkungen erzwungen werden, wenn Zeilen in einer referenzierten Tabelle aktualisiert oder gelöscht werden.

Einige referenzielle Aktionen, die einer Fremdschlüsselaktion zugeordnet sind, umfassen Folgendes:

Kaskade

Wenn Zeilen in der übergeordneten Tabelle gelöscht werden, werden auch die übereinstimmenden Fremdschlüsselspalten in der untergeordneten Tabelle gelöscht, wodurch ein kaskadierendes Löschen erstellt wird.

Setzen Sie Null

Wenn eine referenzierte Zeile in der übergeordneten Tabelle gelöscht oder aktualisiert wird, werden die Fremdschlüsselwerte in der referenzierenden Zeile auf null gesetzt, um die referenzielle Integrität aufrechtzuerhalten.

Auslöser

Referenzaktionen werden normalerweise als Trigger implementiert. In vielerlei Hinsicht ähneln Fremdschlüsselaktionen benutzerdefinierten Triggern. Um eine ordnungsgemäße Ausführung sicherzustellen, werden geordnete referenzielle Aktionen manchmal durch ihre entsprechenden benutzerdefinierten Trigger ersetzt.

Setze Standard

Diese referenzielle Aktion ähnelt "set null". Die Fremdschlüsselwerte in der untergeordneten Tabelle werden auf den Standardspaltenwert gesetzt, wenn die referenzierte Zeile in der übergeordneten Tabelle gelöscht oder aktualisiert wird.

einschränken

Dies ist die normale referenzielle Aktion, die einem Fremdschlüssel zugeordnet ist. Ein Wert in der übergeordneten Tabelle kann nicht gelöscht oder aktualisiert werden, solange er von einem Fremdschlüssel in einer anderen Tabelle referenziert wird.

Keine Aktion

Diese referenzielle Aktion ähnelt in ihrer Funktion der Aktion "Einschränken", außer dass eine Überprüfung ohne Aktion erst durchgeführt wird, nachdem versucht wurde, die Tabelle zu ändern.