Primärschlüssel und Fremdschlüssel in SQL (MySQL)
Schlüssel
Eindeutigkeit
Jede Kombination von Spalten, deren Werte eine Zeile einer Tabelle immer eindeutig kennzeichnet, wird Schlüssel genannt.
Die Anforderung der Eindeutigkeit hat dabei die folgende Bedeutung:
Es darf nie zwei verschiedene Zeilen mit dem gleichen Schlüssel geben.
Es reicht nicht, daß ein Schlüssel in einer Tabelle momentan eindeutig ist, vielmehr muß es aufgrund der Herkunft und der Bedeutung der verschiedene Spalten vorhersehbar sein, daß der Schlüssel auch bei allen späteren Änderungen an den Inhalten der Tabelle eindeutig sein wird.
Zusammengesetzte Schlüssel
Ein Schlüssel muß nicht unbedingt eine bestimmte einzelne Spalte sein, es kann sich auch um ein Kombination mehrerer Spalten handeln; man spricht dann von einem zusammengesetzten Schlüssel.
Beispielsweise ist eine Rechnungsnummer möglicherweise erst zusammen mit einer Jahreszahl ein Schlüssel für eine Rechnung (falls die Rechnungsnummern am Anfang eines jeden Jahres immer wieder bei 0 beginnen.)
Primärschlüssel
Wenn es in einer Tabelle mehrere mögliche Schlüssel gibt, dann kann einer davon willkürlich als der Schlüssel ausgewählt werden, welcher normalerweise bei dieser Tabelle zur eindeutigen Kennzeichnung (Auswahl) einer bestimmten Zeile dienen soll. Dieser Schlüssel wird Primärschlüssel genannt.
In diesem Kurs geben wir der Spalte mit dem Primärschlüssel oft den Namen der Tabelle. Außerdem geben wir die Primärschlüsselspalte oft als die erste Spalte einer Darstellung einer Tabelle wieder. In anderen Quellen werden auch feste Namen, wie »Id« oder »ID« („Identifikation“) für die Primärschlüsselspalte verwendet.
Eine Spalte, die denselben Wert in mehreren Zeilen enthält oder enthalten könnte, ist nicht als Schlüsselspalte geeignet, weil mit ihr eine Zeile nicht eindeutig identifizert werden kann.
Beispiel
- Tabelle mit einer Nachschlagetabelle
Person (Tabelle)
Person Vorname Nachname Ort
Primaerschluessel
1 Emma Schneider 3 ------------.
|
2 Finn Weber 2 --------. |
| |
3 Charlotte Wagner 2 --------. |
| |
| |
| |
Ort (Nachschlagetabelle) | |
| |
Ort Name | |
Primaerschluessel | |
| |
1 Hamburg | |
| |
2 Stuttgart <-----------------------' |
|
3 Berlin <---------------------------'
4 Braunschweig
Oben ist beispielsweise die Spalte »Person« der Primärschlüssel der Tabelle »Person« und die Spalte »Ort« der Primärschlüssel der Tabelle »Ort«.
Eigene künstliche numerische Primärschlüssel
Die Verwendung von Eigenschaften einer Entität oder von Schlüsseln, die von anderen Personen oder von anderen Datenbanken stammen, kann zur Problemen führen, da man es nicht selber sicherstellen kann, daß sie immer eindeutig ist. Selbst die ISBN oder die bundesweite Steuernummer wurde schon oft mehrfach vergeben!
Deswegen ist es am besten einen eigenen künstlichen numerischen Primärschlüssel zu verwenden.
eigen der Schlüssel wird von der Datenbank, in der er verwendet wird, selber erstellt (festgelegt)
künstlich der Schlüssel wird eine Entität willkürlich zugeordnet, er hat keine Bedeutung und dient nur der eindeutigen Kennzeichnung; der Schlüssel wurde in der Datenbank speziell für diesen Entitätstyp zusätzlich erzeugt, er stellt keine Eigenschaft dar, welche die Entität unabhängig von der Datenbank besitzt
numerisch der Schlüssel ist eine positive ganze Zahl (1, 2, 3 und so weiter), die Primärschlüssel einer Tabelle dürfen auch Lücken enthalten (wie: „1, 2, 4, 5“ ohne „3“)
Die oben dargestellten Tabellen verwenden beide einen künstlichen numerischen Primärschlüssel.
Fremdschlüssel
Ein sich durch eine mögliche Gleichheit auf einen Schlüssel einer Tabelle beziehende Wert wird Fremdschlüssel genannt.
Oben ist beispielsweise die Spalte »Ort« der Tabelle »Person« ein Fremdschlüssel, welcher sich auf die Tabelle »Ort« bezieht.
Eine Möglichkeit zur Hervorhebung eines Fremdschlüssels ist es, diesem den Namen der Tabelle zu geben, auf welcher er sich bezieht (hier »Ort«).
Durch die genannten Regeln zur Benennung wird es erleichtert, sich Spaltennamen zu merken, da diese teilweise aus dem Namen von Tabellen abgeleitet werden können. Die hier vorgestellten Regeln sind aber nicht alle allgemein üblich, sondern nur eine von mehreren Möglichkeiten.
Trotz der Bezeichnung „Fremdschlüssel“ ist ein Fremdschlüssel kein Schlüssel! Deswegen muß er in seiner Tabelle auch nicht eindeutig sein.
Da ein Fremdschlüssel kein Schlüssel ist, verwenden wir hier auch die alternative Bezeichnung Referenz statt „Fremdschlüssel“.
Begriffe *
Was in dieser Lektion als „Schlüssel“ bezeichnet wird, wird sonst oft „Superschlüssel“ genannt.
Primärschlüssel als Domänen *
Ein Primärschlüssel einer Tabelle gehört immer zu einer eigenen Domäne, denn es ist nicht sinnvoll, die Primärschlüssel zweier verschiedener Tabellen auf Gleichheit zu vergleichen.