Definition: Primär- und Fremdschlüssel
(Auszug aus Wikipedia)
Primärschlüssel
Um
die Tupel (=Zeilen) in einer Relation (=Tabelle) eindeutig
identifizieren zu können, wird für die Relation ein Primärschlüssel
angegeben – einer der Schlüsselkandidaten. Der Primärschlüssel wird
üblicherweise so ausgewählt, dass er möglichst klein ist, das heißt möglichst wenige Attribute umfasst bzw. einen möglichst simplen Datentyp hat. Er sollte zeitlich stabil
sein, seine Werte sollten sich also während des gesamten Lebenszyklus
der betroffenen Tabellen nicht ändern, da dies auch Änderungen an den
zugehörigen Fremdschlüsselwerten mit sich zöge (was durch sogenannte
Kaskadierung zwar prinzipiell möglich, aber oft aufwändig ist).
Darüber hinaus muss der ausgewählte Primärschlüssel tatsächlich die eindeutige Identifizierbarkeit
der realen Objekte erlauben, die durch die Tupel der Relation
repräsentiert werden. Wählt man beispielsweise die Kombination {Name,
Geburtstag} als Primärschlüssel aus, so legt man damit auch fest, dass
es keine zwei gleichnamigen Personen geben darf, die am gleichen Tag
Geburtstag haben (Eindeutigkeit, uniqueness). Durch die Einführung von
Surrogatschlüsseln (künstliche Schlüssel, z. B. eine Laufnummer) wird dieses Problem in jedem Fall vermieden.
Besteht
ein Primärschlüssel aus mehreren Attributen, spricht man auch von einem
kombinierten (auch: zusammengesetzten) Primärschlüssel oder einem
Verbundschlüssel.
Sekundärschlüssel sind Attributgruppen, die
häufig zur Beschreibung einzelner und mehrerer Tupel benutzt werden
(Suchbegriff). So kann etwa die Postleitzahl in einer Adresstabelle als
Sekundärschlüssel infrage kommen.
In der Datenbank werden
Sekundärschlüssel durch Sekundärindizes (umgangssprachlich einfach nur
„Indizes“) implementiert. Ein Sekundärindex ist eine optionale,
zusätzliche Suchstruktur einer Datenbank, die Tupel schneller auffindbar
macht, indem das Durchsuchen des gesamten Datenbestandes vermieden wird
(ähnlich dem Index eines Buches, durch den Begriffe gezielt aufgefunden
werden können).
Sekundärschlüssel müssen nicht notwendigerweise
eindeutig sein. Aber auch Fremdschlüssel (ebenfalls nicht zwingend
eindeutig) sind Sekundärschlüssel, weil sie dazu dienen, Datensätze zu
beschreiben (ordnen, gruppieren etc.).
Fremdschlüssel
Ein Primärschlüssel einer Relation kann Fremdschlüssel einer anderen werden.
Ein
Fremdschlüssel ist ein Attribut oder eine Attributkombination einer
Relation, welches auf einen Primärschlüssel (bzw. Schlüsselkandidaten)
einer anderen oder der gleichen Relation verweist.
Er dient
als Verweis zwischen zwei Relationen, d. h., er zeigt an, welche Zeilen der Relationen inhaltlich miteinander in Verbindung stehen.