Fremdschlüssel SQL: Wer ein SQL-Datenbankverwaltungssystem entwirft, tut gut daran, das Fremdschlüsselsystem zu kennen und zu implementieren. Langfristig wird er davon profitieren.
Ein Fremdschlüssel SQL ist eine Spalte (oder mehrere Spalten) in einer Datenbank, die mit der Spalte Primärschlüssel in einer anderen Tabelle verknüpft ist. Der Primärschlüssel ist eine einfache Kennung. Die nützlichen – und veränderbaren – Informationen sind in der Fremdtabelle enthalten.
💡Auch interessant:
SQL Count Tutorial |
SQL Datei öffnen |
SQL vs. NOSQL |
noSQL nicht relationale Datenbanken |
Alles über SQL |
Insert INTO SQL |
Welchen Nutzen hat ein Fremdschlüssel SQL?
Welchen Zweck hat ein Fremdschlüssel SQL? Für jeden Artikel muss diese Kategorie einzeln ausgefüllt werden.
Als Beispiel könnten wir die Kategorie „Metallprodukt“ haben. Über Nacht ändert sich die Gesetzgebung und die Kategorie wird zu „Metallprodukt“.
Was ist zu tun? Muss ich jetzt alle Zeilen ändern, in denen die Kategorie „Metallprodukt“ vorkommt? Leider ja. Wenn die Artikeltabelle Zehntausende von Einträgen umfasst, ist das ein sehr langwieriger Prozess.
Um solche Situationen zu vermeiden, wurde der Begriff des SQL Fremdschlüssels definiert. In dem oben beschriebenen Fall besteht die Idee darin, eine separate Tabelle mit dem Namen Kategorie zu erstellen, in der wir als Primärschlüssel eine Kennung (eine Nummer für jede Kategorie) haben, die mit der entsprechenden Beschreibung verknüpft ist.
In der Tabelle Artikel kann dann für jedes Produkt, das im Katalog angeboten wird, die entsprechende ID aus der Tabelle Kategorien angegeben werden. Es ist dann möglich, die Liste jedes Artikels auszudrucken und gleichzeitig (durch einen Join) die entsprechende Kategorie anzuzeigen.
Wie wir sehen können, ist die Situation der Kategorie, die ihren Namen ändert, hier gelöst.
Eltern- und Tochtertabelle
Eine Tabelle, die von einer anderen Tabelle referenziert wird, wird als „übergeordnete Tabelle“ bezeichnet. Dies wäre in diesem Fall die Tabelle Kategorien.
Und eine „Tochtertabelle“ ist eine Tabelle, die auf eine externe Tabelle verweist – hier wäre das die Tabelle Artikel.
Ein praktisches Beispiel
Hier ist ein weiteres Beispiel für die Verwendung eines Fremdschlüssels in einem expliziteren Fall.
KUNDEN Tabelle
Id_Client | Nom |
Prénom |
Âge |
---|---|---|---|
1 | Martin |
Germaine |
32 |
2 |
Culprit |
Thomas |
22 |
3 |
Albanez |
Francis |
40 |
4 |
De Jonquière |
Martine |
33 |
KUNDEN ist hier die Tabelle „Verwandte“. Wenn die Kundin Nr. 4, Martine de Jonquière, sich scheiden lassen würde und morgen wieder ihren Mädchennamen (Heras) annehmen würde, würde es genügen, diese Information in der Tabelle „Verwandte“ zu ändern.
BESTELL Tabelle
Id_Commande |
Date_Commande |
Id_Client |
---|---|---|
1 |
11/04/2023 |
4 |
2 |
10/05/2023 |
3 |
3 |
12/05/2023 |
4 |
4 |
26/05/2023 |
4 |
5 |
16/06/2023 |
1 |
In diesem Beispiel finden wir die Spalte „Kunden_Id“ in der Tabelle BESTELLUNGEN (die die „Tochter“-Tabelle ist). Sie zeigt auf die Spalte „Kunden_Id“ in der Tabelle KUNDEN. So könnten wir hier durch einen Join herausfinden, dass Martine de Jonquières dreimal bestellt hat: einmal im April und zweimal im Juni.
In der Tabelle KUNDEN ist die Spalte KUNDEN_ID der Primärschlüssel.
In der Tabelle BESTELLUNGEN ist die Spalte KUNDEN_ID der Fremdschlüssel.
Vorteile von Fremdschlüsseln
Referentielle Integrität
Der Hauptvorteil, der mit der Verwendung von SQL Fremdschlüsseln verbunden ist, ist die referentielle Integrität: Keine Zeile in der Tochtertabelle ist vollständig und gültig, solange es keinen entsprechenden Datensatz in der Elterntabelle gibt.
Kohärenz der Informationen
Alle Tabellen, die auf den Fremdschlüssel verweisen, stellen sicher, dass sie konsistente und aktuelle Daten ausgeben können. Zur Erinnerung: Wenn Martine de Jonquières ihren Namen ändert, wird diese Änderung von allen Tabellen aus sichtbar, die auf ihren Identifikator verweisen.
Nachteile von Fremdschlüsseln
Verringerte Verarbeitungsgeschwindigkeit
Es ist offensichtlich, dass der Fremdschlüssel eine längere Computerverarbeitungszeit erfordert. Jedes Mal, wenn du eine neue Zeile in eine Tabelle wie BESTELLUNGEN einfügst, musst du überprüfen, ob die entsprechende Kunden-ID in der Tabelle KUNDEN vorhanden ist.
Komplexität
Der Verweis auf die Kunden-ID Nr. 4 kann komplexer sein, als einfach nur den Namen Martine de Jonquières anzugeben. Daher ist das Lesen einer Datenbank wie die der BESTELLUNGEN auf den ersten Blick nicht ganz einfach.
Eine empfohlene Nutzung
Trotz der Nachteile, die ihre Verwendung mit sich bringt, ist die Verwendung von Fremdschlüsseln für diejenigen, die mit der Entwicklung von SQL-Datenbanksystemen betraut sind, sehr zu empfehlen. Auf lange Sicht wird er davon profitieren.
Einfach ausgedrückt könnte man sagen, dass es wichtig ist, Fremdschlüssel immer dann zu verwenden, wenn man es mit einem Datentyp zu tun hat, der sich im Laufe der Zeit verändern kann. Die hier behandelten Beispiele zeigen deutlich, was man damit erreichen kann. Daher ist es von entscheidender Bedeutung, Fremdschlüssel bereits beim Entwurf einer SQL-Datenbank zu definieren.