Schlüssel

Ein Schlüssel dient in einer relationalen Datenbank dazu, die Tupel (Datensätze) einer Relation (Tabelle) eindeutig zu identifizieren. Ein Schlüssel ist dann eine Gruppe von Spalten, die so ausgewählt wird, dass jede Tabellenzeile über den Werten dieser Spaltengruppe eine einmalige Wertekombination hat.

Superschlüssel

Bestimmen einige Attribute einer Relation eindeutig die Werte aller Attribute der Relation, so spricht man von einem Superschlüssel, das heißt, jedes Tupel dieser Relation ist eindeutig durch die Werte dieser Attribute bestimmt.

Relation Mitarbeiter {Nachname, Vorname, Geburtsdatum, PLZ, Straße, Umsatz, Dienstjahre}

Im extrem Fall verwendet man alle Attribute der Relation, um ein Tupel zu bestimmen. Z.B. gilt Nachname, Vorname, Geburtsdatum, PLZ, Straße, Umsatz->Dienstjahre. Dienstjahre wäre funktional, aber nicht voll funktional abhängig vom Schlüssel. Dies wäre ein legitimer Superschlüssel. Allerdings kann man aus dem Superschlüssel noch Attribute weglassen, um ein Tupel eindeutig zu bestimmen. Dann spricht man von einem Schlüsselkandidaten.

Schlüsselkandidat

Ein Schlüsselkandidat ist ein minimaler Superschlüssel, das heißt, keine echte Teilmenge der Attribute dieses Schlüssels bestimmt vollständig die Werte aller anderen Attribute der Relation. Unter allen Schlüsselkandidaten einer Relation wird ein so genannter Primärschlüssel ausgewählt.

Die Attribute Nachname, Vorname, Geburtsdatum, PLZ sollten ausreichen. Nun gilt Straße, Umsatz, Dienstjahre ist voll funktional abhängig von Nachname, Vorname, Geburtsdatum, PLZ. Kann man kein Attribut mehr weglassen, ist also die Attributmenge minimal, dann handelt es sich um einen Schlüsselkandidaten. Es kann wie gesagt mehrere Schlüsselkandidaten für eine Relation geben.

Primärschlüssel

Um mitzuteilen, welchen der Schlüsselkandidaten man zur Identifikation der Tupel in einer Relation bevorzugt, wird aus allen Schlüsselkandidaten der Primärschlüssel ausgewählt. 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 allerdings prinzipiell möglich, aber oft aufwändig ist).

Fremdschlüssel

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 Tupel der Relationen inhaltlich miteinander in Verbindung stehen.

Künstlicher Schlüssel

Ein künstlicher Schlüssel ist ein Datenbankschlüssel in einer Datenbanktabelle. Eine wichtige Besonderheit dieses Schlüssels ist, dass er nicht aus den Attributen in der Tabelle abgeleitet wird. Sie werden automatisch gebildet (z. B. als fortlaufende Nummer), häufig als Primärschlüssel verwendet und dienen dem einfacheren Zugriff auf Datensätze. Der Schlüssel kann entweder durch das Datenbanksystem oder durch ein Anwendungsprogramm vergeben werden.

Die wichtigste Eigenschaft eines künstlichen Schlüssels ist, dass er die Referenz auf ein Datenelement vereinfacht. Im Gegensatz zu einem zusammengesetzten Schlüssel muss lediglich ein einzelnes Feld als Fremdschlüssel verwaltet werden. Ein weiterer Vorteil ist, dass beim Ändern eines Datenobjektes der Wert des künstlichen Schlüssels unverändert bleibt, da er keinerlei Beziehung zu den Daten hat. Somit ist auch eine Änderung des Fremdschlüssels unnötig. In der Praxis ist es oft nicht klar, welche Felder einen sprechenden Schlüssel bilden (oder ein Schlüssel, der ursprünglich eindeutig war, muss aufgrund geänderter Anforderungen später um weitere Felder ergänzt werden. Sobald es z.B. einen Kunden mit gleichem Vornamen, Nachnamen und Geburtstag gibt, muss z.B. die PLZ noch hinzugefügt werden).