Datenbankentwickler verwenden Schlüssel beim Entwickeln relationaler Datenbanken weitgehend. Zu den häufigsten dieser Schlüssel gehören Primärschlüssel und Fremdschlüssel. Ein Datenbank-Fremdschlü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 Blick auf die Idee einer relationalen Datenbank.
Einige Grundlagen relationaler Datenbanken
In einer relationalen Datenbank werden Daten in Tabellen gespeichert, die Zeilen und Spalten enthalten, wodurch das Suchen und Bearbeiten vereinfacht wird. Hinter dem Konzept einer relationalen Datenbank (relationale Algebra, von E.F.
Codd bei IBM 1970), aber das ist nicht das Thema dieses Artikels.
Für praktische Zwecke (und für Nicht-Mathematiker) speichert eine relationale Datenbank verwandte Daten in Zeilen und Spalten. Außerdem - und hier wird es interessant - die meisten Datenbanken sind 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.
Fremdschlüssel verwenden
Die meisten Tabellen, insbesondere die in großen, komplexen Datenbanken, haben Primärschlüssel. Tabellen, die für den Zugriff auf andere Tabellen vorgesehen sind, müssen auch einen Fremdschlüssel haben.
Um die häufig zitierte Northwinds-Datenbank zu verwenden, finden Sie hier einen Auszug aus einer Product-Tabelle:
Produkt ID | Produktname | Kategorie ID | QuantityPerU | Stückpreis |
---|---|---|---|---|
1 | Chai | 1 | 10 Boxen x 20 Beutel | 18.00 |
2 | Chang | 1 | 24 - 12 oz Flaschen | 19.00 |
3 | Anissirup | 2 | 12 - 550 ml Flaschen | 10.00 |
4 | Cajun-Gewürz von Chef Anton | 2 | 48 - 6 oz-Gläser | 22.00 |
5 | Chef Gumbo Mix von Chef Anton | 2 | 36 Boxen | 21.35 |
6 | Omas Boysenberry Spread | 2 | 12 - 8 oz Gläser | 25.00 |
7 | Onkel Bobs getrocknete Birnen | 7 | 12 - 1 lb pkgs. | 30.00 |
Das 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 Product-Tabelle ist mit einem Eintrag in der Categories-Tabelle verknüpft, in dem die Produktkategorie definiert wird.
Beachten Sie diesen Auszug aus der Categories-Tabelle der Datenbank:
Kategorie ID | Kategoriename | Beschreibung |
---|---|---|
1 | Getränke | Erfrischungsgetränke, Kaffee, Tee, Bier und Ales |
2 | Gewürze | Süße und pikante Saucen, Relishes, Aufstriche und Gewürze |
3 | Konfektionsartikel | Desserts, Bonbons und Bries |
5 | Milchprodukte | Käse |
Die Kolumne Kategorie ID ist der Primärschlüssel dieser Spalte. (Es hat keinen Fremdschlüssel, da auf keine andere Tabelle zugegriffen werden muss.) Jeder Fremdschlüssel in der Product-Tabelle ist mit einem Primärschlüssel in der Categories-Tabelle verknüpft. Beispielsweise wird dem Produkt Chai die Kategorie "Getränke" zugewiesen, während Anissirup in der Kategorie Gewürze liegt.
Diese Art der Verknüpfung schafft eine Vielzahl von Möglichkeiten, Daten in einer relationalen Datenbank zu verwenden und wiederzuverwenden.