Schlüssel

Aus FLBK-Wiki
Zur Navigation springen Zur Suche springen

Ein Schlüssel dient in einer relationalen Datenbank dazu, die Tupel (Datensätze) einer Relation (Tabelle) eindeutig zu identifizieren. Ein Schlüssel ist 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 bedeutet, dass jedes Tupel dieser Relation eindeutig durch die Werte dieser Attribute bestimmt ist.

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

Im Extremfall verwendet man alle Attribute der Relation, um ein Tupel zu bestimmen. Zum Beispiel gilt: Nachname, Vorname, Geburtsdatum, PLZ, Straße, Umsatz → Dienstjahre. Dies wäre ein legitimer Superschlüssel. Allerdings kann man aus dem Superschlüssel noch Attribute weglassen, um ein Tupel eindeutig zu bestimmen, was zu einem Schlüsselkandidaten führt.

Schlüsselkandidat

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

Beispiel: Die Attribute Nachname, Vorname, Geburtsdatum, PLZ könnten ausreichen, um einen Datensatz eindeutig zu identifizieren. Wenn kein Attribut mehr weglassen werden kann und die Attributmenge somit minimal ist, handelt es sich um einen Schlüsselkandidaten. Eine Relation kann mehrere Schlüsselkandidaten haben.

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 (wenige Attribute umfasst)
  • einen möglichst simplen Datentyp hat
  • zeitlich stabil ist (seine Werte sollten sich während des gesamten Lebenszyklus der Tabelle nicht ändern)

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 und zeigt an, welche Tupel der Relationen inhaltlich miteinander in Verbindung stehen.

Künstlicher Schlüssel

Ein künstlicher Schlüssel ist ein Datenbankschlüssel, der nicht aus den Attributen in der Tabelle abgeleitet wird. Künstliche Schlüssel werden automatisch gebildet (z. B. als fortlaufende Nummer) und häufig als Primärschlüssel verwendet.

Vorteile

  • Vereinfachte Referenz auf ein Datenelement
  • Nur ein einzelnes Feld muss als Fremdschlüssel verwaltet werden
  • Der Wert bleibt bei Änderungen des Datenobjektes unverändert
  • Keine Änderung des Fremdschlüssels notwendig
  • Vermeidet Probleme mit natürlich Schlüsseln, die ihre Eindeutigkeit verlieren können

Praxisbeispiel

In der Praxis ist es oft nicht klar, welche Felder einen sprechenden Schlüssel bilden. Sobald es z.B. einen Kunden mit gleichem Vornamen, Nachnamen und Geburtstag gibt, müssen zusätzliche Felder (wie z.B. die PLZ) hinzugefügt werden, was künstliche Schlüssel attraktiv macht.