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 |
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 |
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.