Loading AI tools
eindeutiger Identifikator in einer Datenbanktabelle Aus Wikipedia, der freien Enzyklopädie
Ein Schlüssel dient in einer relationalen Datenbank dazu, die Tupel (Datensätze, „Zeilen“) einer Relation (Tabelle) eindeutig zu identifizieren, sie zu nummern. Ein Schlüssel ist dann eine Gruppe von Spalten (oder eine einzelne), die so ausgewählt wird, dass jede Tabellenzeile über die Werte dieser Spaltengruppe eine einmalige (und damit eindeutige) Wertekombination hat.
In der Theorie der relationalen Datenbanken sind pro Entitätstyp (pro Tabelle) ein oder mehrere Schlüsselkandidaten (Spaltenkombinationen, die als Schlüssel möglich wären) erforderlich, welche definitionsgemäß jeweils eindeutig sein müssen. Von diesen Schlüsselkandidaten wird einer als Primärschlüssel ausgewählt und bei der Umsetzung der Entität als Datenbanktabelle als solcher implementiert. Abweichend von dieser Konvention gibt es auch Datenbanksysteme, die Tabellendefinitionen erlauben, ohne dass ein Primärschlüssel definiert wird. Solche Tabellen erlauben damit auch doppelte Datensätze und sind damit definitionsgemäß keine relationalen Entitäten.
In Relationalen Datenbanken unterscheidet man die Schlüsselbegriffe
Es sei ein bestimmtes Relationenschema R (das Tabellen-Gerüst, d. h. alle Spalten) gegeben. Eine Teilmenge S der Attribute (der Spalten) des Schemas R heißt Schlüssel, wenn gilt:
ISBN | Autor | Buchtitel | … |
---|---|---|---|
0001 | Hans | V | … |
0002 | Lutz | W | … |
0003 | Peter | W | … |
0004 | Peter | X | … |
0005 | Ralf | Y | … |
… | … | … | … |
Name | Geburtstag | Wohnort | … |
---|---|---|---|
Heinz Hoffmann | 01.08.1966 | Norden, BBS | … |
Alf Appel | 08.11.1957 | Mömlingen | … |
Sebastian Sonnenschein | 04.08.1979 | Hamburg | … |
Klaus Kleber | 15.04.1970 | Frankfurt | … |
Barbara Bachmann | 17.10.1940 | Kirchheim | … |
… | … | … | … |
direkter Vorgesetzter (ID) | Mitarbeiter (ID) |
---|---|
002 | 104 |
030 | 512 |
115 | 519 |
234 | 993 |
234 | 670 |
… | … |
Ein Schlüsselkandidat (englisch candidate key) ist eine minimale Menge von Attributen, die die Tupel (Datensätze) einer Relation eindeutig identifiziert. Die formale Definition lautet: Ist eine Relation über der Menge von Attributen , so gilt: ist genau dann ein Schlüsselkandidat von R, wenn gilt: .
Hierbei wird der Begriff der vollen funktionalen Abhängigkeit – dargestellt durch – verwendet. Hier ist A von voll funktional abhängig, was bedeutet:
Im Gegensatz zum Superschlüssel werden hier also nur noch diejenigen Attributmengen betrachtet, die nicht mehr verkleinert werden können, ohne ihre Schlüsseleigenschaft zu verlieren; man sagt auch, sie seien minimal identifizierend. Für die Beispielrelationen der Einleitung ergeben sich folgende Schlüsselkandidaten:
Aus der Liste der Superschlüssel wurden also gerade diejenigen ausgewählt, die minimal sind. Gelegentlich wird auch die Bezeichnung Kandidatenschlüssel verwendet, was eine wörtliche Übersetzung des englischen Fachbegriffs candidate key ist.
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 aufwendig 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. Für die Beispielrelationen aus der Einleitung bieten sich die folgenden Primärschlüssel an (sind Schlüsselkandidaten):
Unter der Voraussetzung, dass keine Surrogatschlüssel eingeführt werden sollen, ist die Entscheidung bei den Beispielen b) und c) hinfällig, denn es gibt jeweils nur einen Schlüsselkandidaten; folglich muss dieser auch als Primärschlüssel verwendet werden. In Beispiel a) entscheidet man sich für {ISBN} als Primärschlüssel, weil dies der kleinste Schlüssel ist (er hat im Gegensatz zu {Autor, Buchtitel, …} nur ein Attribut), zudem wird dadurch die Realität genau wiedergegeben. Besteht ein Primärschlüssel aus mehreren Attributen, spricht man auch von einem kombinierten (auch: zusammengesetzten) Primärschlüssel oder einem Verbundschlüssel. Durch die Auswahl des Primärschlüssels werden alle anderen Schlüsselkandidaten der Relation automatisch zu Alternativschlüsseln. In unseren Beispielrelationen wären dies:
Alternativschlüssel haben den Zweck, dass in der Tabelle Eindeutigkeit bei allen Schlüsselkandidaten durchgesetzt wird, nicht nur beim Primärschlüssel. (Dadurch sind Alternativschlüssel prinzipiell geeignet, in einer anderen Relation als Fremdschlüssel verwendet zu werden).
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 können Sekundärschlüssel durch Sekundärindizes (umgangssprachlich einfach nur „Indizes“) implementiert werden. Ein Sekundärindex ist eine optionale, zusätzliche Suchstruktur einer Datenbank, die Tupel schneller auffindbar macht, indem das Durchsuchen des gesamten Datenbestandes vermieden wird (genau so wie der Index eines Buches, durch den Begriffe gezielt aufgefunden werden können).
Sekundärschlüssel müssen nicht notwendigerweise eindeutig sein (lediglich die sogenannten Alternativschlüssel, die automatisch auch Sekundärschlüssel sind, sind eindeutig). Aber auch Fremdschlüssel (ebenfalls nicht zwingend eindeutig) sind Sekundärschlüssel, weil sie dazu dienen, Datensätze zu beschreiben (ordnen, gruppieren etc.).
Es ist möglich, dass alle Schlüsselkandidaten einer Relation aus mehreren Attributen bestehen, oder dass alle Schlüsselkandidaten die tatsächlichen Verhältnisse nur unzureichend widerspiegeln. Von unseren Beispielen ist b) ein solcher Fall. Will man in der Tabelle Kunde eine Person identifizieren, muss man stets Name und Geburtstag gleichzeitig angeben. Es ist daher oft wünschenswert, ein zusätzliches Attribut einzuführen, das als Primärschlüssel dient: Man nennt dies einen stellvertretenden Schlüssel (englisch surrogate key). Für Beispiel b) würde sich eine geschäftseigene Identifikationsnummer wie „Kundennummer“ oder eine fortlaufende Nummer anbieten.
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. Beispiele für Fremdschlüssel sind die beiden Attribute „Vorgesetzter“ und „Untergebener“ aus der Beispielrelation c) der Einleitung: Hier wird jeweils die „Personalnummer“ eines Angestellten angegeben. Doch mit einer solchen Nummer lässt sich im Alltag eher wenig anfangen; viel wichtiger sind Name, Abteilung, Beschäftigung und ähnliche Informationen. Deshalb wird hier höchstwahrscheinlich eine weitere Relation existieren, die Attribute wie {Personalnummer, Name, Abteilung, Beschäftigung, …} enthält. Diese Relation wird ebenso höchstwahrscheinlich den Primärschlüssel {Personalnummer} besitzen; es bietet sich also an, Personalnummer als Fremdschlüssel zu benutzen.
Seien R, S Relationen und die Attributmenge α der Primärschlüssel von R. Wenn eine kompatible Attributmenge β aus S ein Fremdschlüssel bzgl. α sein soll, so müssen die Werte von β Teilmenge der Werte des Primärschlüssels α in R sein. (vgl. referentielle Integrität)
Eine Attributmenge ist dann kompatibel zu einer anderen, wenn die Wertebereiche der beteiligten Attribute gleich sind, also dom(α) = dom(β).
In der Datenbankwelt unterscheidet man verschiedene Arten von Beziehungen zwischen zwei Relationen R und S. Der Begriff „Relation“ ist – für das bessere Verständnis – mit der Tabelle gleichzusetzen. Im Falle relationaler Datenbanken werden die folgenden Beziehungsarten unterschieden:
Die Fälle 1. und 2. werden implementiert, indem S den Primärschlüssel aus R als Fremdschlüssel enthält. Im Falle der 1:1-Beziehung wird dies auch der Primärschlüssel. Für die n:m-Beziehung braucht man, wie in Beispiel c) oben, eine eigene Relation, die die Primärschlüssel beider Relationen als Fremdschlüssel erhält. Beide Attributmengen zusammen sind der Primärschlüssel dieser „Verknüpfungsrelation“.
Hinweis: Die eigentlichen sogenannten Kardinalitäten dieser drei Beziehungstypen sind 1:1 ⇒ [0,1]:[0,1], 1:n ⇒ [0,1]:[0,*] und n:m ⇒ [0,*]:[0,*]. Das Zeichen „*“ steht für „beliebig viele“.
Folgende Begriffe sind keine Schlüssel im Sinne der relationalen Datenbanken:
Schlüssel können auch nach der Kategorie ihrer Herleitung als natürliche oder künstliche Schlüssel unterschieden werden.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.