Die Macht von Fremdschlüsseln in relationalen Datenbanken

Datenbankdesigner verwenden bei der Entwicklung häufig Schlüssel relationale Datenbanken. Zu den häufigsten dieser Schlüssel gehören Primärschlüssel und Fremdschlüssel. Ein Datenbankfremdschlüssel ist ein Feld in einer relationalen Tabelle, das mit der Primärschlüsselspalte einer anderen Tabelle übereinstimmt. Um zu verstehen, wie ein Fremdschlüssel funktioniert, werfen wir einen genaueren Blick auf die Idee einer relationalen Datenbank.

Einige Grundlagen relationaler Datenbanken

In einer relationalen Datenbank werden Daten in Tabellen mit Zeilen und Spalten gespeichert, sodass sie leicht durchsucht und bearbeitet werden können. Hinter dem Konzept einer relationalen Datenbank (relationale Algebra, 1970 von E.F. Codd bei IBM vorgeschlagen) steckt einiges an Mathematik, aber das ist nicht das Thema dieses Artikels.

Für praktische Zwecke (und Nicht-Mathematiker) speichert eine relationale Datenbank zusammenhängende Daten in Zeilen und Spalten. Außerdem – und hier wird es interessant – sind die meisten Datenbanken so konzipiert, dass die Daten in einer Tabelle auf die Daten in einer anderen Tabelle zugreifen können. Diese Fähigkeit, Beziehungen zwischen Tabellen zu erstellen, ist die wahre Stärke einer relationalen Datenbank.

Verwenden von Fremdschlüsseln

Die meisten Tabellen, insbesondere die in großen, komplexen Datenbanken, haben Primärschlüssel. Tabellen, die auf andere Tabellen zugreifen sollen, müssen ebenfalls über einen Fremdschlüssel verfügen.

Um die häufig zitierte Northwinds-Datenbank zu verwenden, hier ein Auszug aus einer Produkttabelle:

Produkt ID Produktname Kategorie ID MengePerU Stückpreis
1 Chai 1 10 Kartons x 20 Beutel 18.00
2 Ändern 1 24 - 12 oz Flaschen 19.00
3 Anissirup 2 12 - 550 ml Flaschen 10.00
4 Cajun-Gewürz von Chefkoch Anton 2 48 - 6-Unzen-Gläser 22.00
5 Gumbo-Mix von Chefkoch Anton 2 36 Kisten 21.35
6 Omas Boysenberry Aufstrich 2 12 - 8-Unzen-Gläser 25.00
7 Onkel Bobs getrocknete Bio-Birnen 7 12 - 1 Pfund Packungen. 30.00
Auszug aus der Produkttabelle der Northwind-Datenbank

Die Produkt ID Spalte ist der Primärschlüssel dieser Tabelle. Es weist jedem Produkt eine eindeutige ID zu.

Diese Tabelle enthält auch eine Fremdschlüsselspalte, Kategorie ID. Jedes Produkt in der Produkttabelle ist mit einem Eintrag in der Kategorientabelle verknüpft, der die Kategorie dieses Produkts definiert.

Beachten Sie diesen Auszug aus der Tabelle Kategorien der Datenbank:

Kategorie ID Kategoriename Beschreibung
1 Getränke Erfrischungsgetränke, Kaffee, Tee, Bier und Ales
2 Gewürze Süße und herzhafte Saucen, Relishs, Aufstriche und Gewürze
3 Süßwaren Desserts, Süßigkeiten und Kalbsbries
5 Milchprodukte Käse
Auszug aus der Tabelle der Kategorien der Northwind-Datenbank

Die Kolumne Kategorie ID ist der Primärschlüssel dieser Spalte. (Sie hat keinen Fremdschlüssel, da sie nicht auf eine andere Tabelle zugreifen muss.) Jeder Fremdschlüssel in der Product-Tabelle ist mit einem Primärschlüssel in der Categories-Tabelle verknüpft. So wird beispielsweise dem Produkt Chai eine Kategorie "Getränke" zugeordnet, während Anissirup in die Kategorie Gewürze fällt.

Diese Art der Verknüpfung schafft unzählige Möglichkeiten, Daten in einer relationalen Datenbank zu verwenden und wiederzuverwenden.