Fremdschlüssel – Definition

No featured image available

Ein Fremdschlüssel bietet einen wichtigen strukturellen Rahmen, um die Datenintegrität und -konsistenz über verschiedene verknüpfte Tabellen hinweg zu gewährleisten. Das Verständnis der Rolle und Anwendung von Fremdschlüsseln ist für Datenbankdesigner, -entwickler und -administratoren von entscheidender Bedeutung.

Eines der Hauptmerkmale relationaler Datenbanken ist die Möglichkeit, in verschiedenen Tabellen gespeicherte Daten miteinander zu verknüpfen. Diese Verknüpfungen dienen im Wesentlichen dazu, Tabellen einander zuzuordnen. Diese Verknüpfungen werden mit Hilfe von Fremdschlüsseln hergestellt. Ein Attribut hat also die Funktion eines Fremdschlüssels, wenn es auf einen Datensatz in einer anderen Tabelle verweist.

Fremdschlüssel: Begriff und Zweck

Ein Fremdschlüssel (Foreign Key) ist eine Spalte oder eine Kombination von Spalten in einer Datenbanktabelle, die verwendet wird, um eine Verbindung zwischen Daten in zwei Tabellen herzustellen und zu erzwingen, um zu steuern, welche Daten in der Fremdschlüsseltabelle gespeichert werden können.

Nach IBM-Definition verweist ein Fremdschlüssel auf einen Primärschlüssel oder einen eindeutigen Schlüssel in derselben oder einer anderen Tabelle. Die Zuweisung eines Fremdschlüssels zeigt an, dass die referentielle Integrität gemäß den angegebenen Bedingungen für die referentielle Integrität aufrechterhalten werden muss.

Für die Definition von Fremdschlüsseln gelten folgende Regeln:

Eine Tabelle kann mehrere Fremdschlüssel haben.

Ein Fremdschlüssel ist nicht eingabebedürftig (d. h. er kann Nullwerte enthalten), wenn keiner seiner Bestandteile eingabebedürftig ist (Nullwerte sind zulässig).

Ein Fremdschlüsselwert ist ein Nullwert, wenn einer seiner Teile ein Nullwert ist.

Ein wesentlicher Unterschied zum Primärschlüssel besteht darin, dass der Fremdschlüssel innerhalb seiner Tabelle nicht eindeutig sein muss und Spalten durchaus mehrfach vorkommen können. Die Verwendung von Fremdschlüsseln in Datenbanksystemen ermöglicht eine sparsame und übersichtliche Nutzung von Informationen, indem große Tabellen in mehrere kleinere Tabellen aufgeteilt werden.

Die Verwendung von Fremdschlüsseln dient in einem relationalen Datenbanksystem mehreren wichtigen Zwecken:

  • Datenintegrität: Fremdschlüssel stellen eine Verbindung zwischen verwandten Daten über verschiedene Tabellen hinweg her. Dadurch wird sichergestellt, dass Änderungen in einem Teil der Datenbank in anderen Teilen korrekt widergespiegelt werden.
  • Referenzielle Integrität: Fremdschlüssel legen Regeln fest, welche Arten von Datenmanipulationen zulässig sind. Dadurch werden Inkonsistenzen und Anomalien vermieden.
  • Relationship Enabler: Ermöglicht, reale Beziehungen zwischen verschiedenen Entitäten innerhalb der Datenbank zu modellieren und bietet eine logische Darstellung, wie verschiedene Teile des Systems interagieren.

Für die Arbeit mit Fremdschlüsseln stehen folgende Möglichkeiten zur Verfügung: Anlegen einer Tabelle ohne oder mit beliebig vielen Fremdschlüsseln, Fremdschlüssel beim Anlegen oder Ändern einer Tabelle definieren, Fremdschlüssel beim Ändern einer Tabelle löschen.

Fremdschlüssel-Einschränkungen

Fremdschlüssel können Gegenstand verschiedener Einschränkungen sein, mit denen das Verhalten der Beziehungen zwischen Tabellen definiert wird. Beispiele sind

  • KASKADE: Beim Löschen oder Ändern eines Datensatzes in der übergeordneten Tabelle werden die entsprechenden Datensätze in der untergeordneten Tabelle automatisch gelöscht oder geändert.
  • SET NULL: Die Werte in den Fremdschlüsselspalten der untergeordneten Tabelle werden auf NULL gesetzt, wenn der entsprechende Datensatz in der übergeordneten Tabelle gelöscht oder aktualisiert wird.
  • KEINE AKTION: Dies verhindert, dass ein übergeordneter Datensatz gelöscht oder aktualisiert wird, wenn ein entsprechender untergeordneter Datensatz existiert.

Die Fremdschlüssel-Beschränkung hat den Vorteil, dass sie die Existenz der referenzierten Zeile in der Primärtabelle garantiert. Wenn die referenzierte Zeile nicht in der Primärtabelle existiert, kann sie auch nicht in der Fremdtabelle existieren. Sie stellt auch die Korrektheit der Referenz sicher, selbst wenn Werte in der Primärtabelle geändert oder gelöscht werden.