Was ist ein Fremdschlüssel?
Datenbanken bestehen aus Tabellen, in denen Daten oder Informationen gespeichert sind. Ein Fremdschlüssel ist ein Mechanismus in einer relationalen Datenbank, der die Zuordnung dieser Tabellen oder eine Beziehung zwischen den Tabellen ermöglicht. Es gibt eindeutige Merkmale, die ein Fremdschlüssel aufweisen muss. Es muss sich um eine Spalte oder eine Gruppe von Spalten in einer Tabelle handeln, deren Werte eine Beziehung zu Werten in einer anderen Tabelle in derselben Datenbank herstellen.
Ein Fremdschlüssel garantiert, dass Zeilen in einer Tabelle Zeilen in einer anderen Tabelle entsprechen, wodurch datenbankweite Beziehungen oder Verweise hergestellt werden. Die Tabelle, die den Fremdschlüssel enthält, ist das "Kind" und die andere Tabelle ist das "Eltern". Es ist möglich, dass der Wert eines Fremdschlüssels null oder leer ist und sich tatsächlich auf den sogenannten Primärschlüssel der Tabelle bezieht, in der er gefunden wird. Dies wird als Selbstreferenzierung bezeichnet.
Man muss ein gutes Verständnis für einen Primärschlüssel haben, bevor man versucht, das Konzept hinter den Fremdschlüsseln vollständig zu verstehen. Wenn eine Datenbank beispielsweise zwei Tabellen enthält, in denen Informationen zu veröffentlichten Büchern für eine Website gespeichert sind, auf der Bücher verkauft werden, ist möglicherweise eine Tabelle die Herausgebertabelle und die andere die Buchtabelle. Die Publisher-Tabelle kann aus zwei Spalten bestehen, einem Primärschlüssel, der für jeden Datensatz immer eindeutig ist, und einer Publisher-Namensspalte. Mindestens drei Spalten bilden die Buchtabelle, die den Primärschlüssel oder die eindeutige Kennung für jedes Buch, die Buchtitel und eine Spalte enthält, über die eine Beziehung zur Herausgebertabelle hergestellt wird. Diese Spalte wäre der Fremdschlüssel.
Der Primärschlüssel für die Publisher-Tabelle könnte "pub_id" mit folgenden Werten sein: P01, P02, P03 usw. Eine Beziehung zur Books-Tabelle würde hergestellt, wenn sie eine pub_id-Spalte mit denselben Werten enthält. Dies wäre der Fremdschlüssel, der diese untergeordnete Tabelle wieder mit der übergeordneten Tabelle - der Publisher-Tabelle - verknüpft.
Ein Fremdschlüssel kann jedoch einen anderen Spaltennamen als der übergeordnete Schlüssel haben, auf den er verweist. Ein fundiertes Verständnis der Funktionsweise von Primär- und Fremdschlüsseln ist für die Aufrechterhaltung der referenziellen Integrität von wesentlicher Bedeutung. Sehr große Datenbanken, die aus vielen Tabellen bestehen oder eine Junction-Tabelle enthalten, weisen mehrere Beziehungstypen auf, was die Arbeit mit Fremdschlüsseln erschweren kann.