Definition

Schlüssel in Datenbank-Management-Systemen (DBMS)

Mitarbeiter: Mark Whitehorn, PenguinSoft Consulting

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

Bei einem Primärschlüssel handelt es sich um die Spalte (oder Spalten) einer Tabelle, mit der oder mit denen sich die Zeilen dieser Tabelle eindeutig identifizieren lassen.

KUNDEN

Kundennummer Vorname Nachname
1 Sally Thompson
2 Sally Henderson
3 Harry Henderson
4 Sandra Wellington

In dieser Tabelle ist zum Beispiel Kundennummer der Primärschlüssel.

Die Werte in den Spalten für Primärschlüssel müssen für jede Zeile eindeutig sein – Duplikate sind nicht zulässig. Außerdem dürfen sich in den Spalten für Primärschlüssel keine Nullen befinden. Die Verwendung von einer Spalte oder  mehreren Spalten als Primärschlüssel ist möglich. Wie legt man nun fest, welche Spalte hierfür verwenden sollten (und wie viele)?

Gelegentlich ist es ratsam oder sogar unerlässlich, mehrere Spalten zu verwenden. Falls man allerdings keinen triftigen Grund für die Verwendung mehrerer Spalten erkennen kann, sollten man nur eine nehmen. Das ist aber keine absolute Regel, nur ein Tipp. Besteht ein Primärschlüssel aus nur einer Spalte, lässt er sich in der Regel einfacher verwalten und bietet einen schnellen Betrieb. Für die Abfrage der Datenbank bedeutet es normalerweise schnellere Antworten, falls die Tabellen Primärschlüssel mit nur einer Spalte enthalten.

Die einfachste Möglichkeit zur Auswahl einer Spalte als Primärschlüssel (und damit eine Methode, die häufig angewandt wird) ist: Die Datenbank weist jeder Zeile automatisch eine eindeutige Nummer zu.

In einer Tabelle mit den Namen von Mitarbeitern, ist die Spalte mit den Vornamen eine schlechte Wahl, da man keine Kontrolle über die Vornamen der Mitarbeiter hat. Wie im Fall oben gibt es oft nur eine sinnvolle Möglichkeit für den Primärschlüssel. Sollte es mehrere Möglichkeiten geben, werden diese als Kandidatenschlüssel bezeichnet – wie der Name sagt, handelt es sich hierbei um Kandidaten für die Rolle des Primärschlüssels.

Legt man die Definition oben zugrunde – laut der ein Primärschlüssel aus mehr als einer Spalte bestehen kann und eine eindeutige Identifizierung der Zeilen gewährleistet – kann man zum Beispiel Mitarbeiternummer UND Vorname als Primärschlüssel festlegen. Dies erfüllt zwar die Anforderungen, macht allerdings nicht viel Sinn, da man unnötigerweise die Komplexität erhöht. Es wäre auch ein hervorragendes Beispiel für einen Superschlüssel. „Super“ steht in diesem Fall nicht als Synonym für großartig, sondern vielmehr für überzählig. Die Verwendung von Superschlüsseln wird nicht empfohlen.

Bei Fremdschlüsseln handelt es sich um Spalten, die auf Spalten mit Primärschlüsseln verweisen. So ist beispielsweise Auftragsnummer der Primärschlüssel für die Tabelle AUFTRÄGE unten. Bei Kundennummer handelt es sich damit um einen Fremdschlüssel, der auf den Primärschlüssel in der Tabelle KUNDEN verweist.

AUFTRÄGE

Auftragsnummer Mitarbeiternummer Kundennr. Lieferant Preis Posten
1 1 42 Harrison 235 $ Schreibtisch
2 4 1 Ford 234 $ Stuhl
3 1 68 Harrison 415 $ Tisch
4 2 112 Ford 350 $ Lampe
5 3 42 Ford 234 $ Stuhl
6 2 112 Ford 350 $ Lampe
7 2 42 Harrison 235 $ Schreibtisch

Falls man es ganz genau nimmt, müssen Fremdschlüssel nicht unbedingt auf einen Primärschlüssel verweisen. Die einzig echte Anforderung für eine Spalte, auf die ein Fremdschlüssel verweist, ist: Sie muss eindeutige Werte enthalten. Hier ein Beispiel:

MITARBEITER

Sozialversicherungsnummer Mitarbeiternummer Vorname Nachname Geburtsdatum Einstellung
AF-23432334 1 Manny Tomanny 12. Apr. 1966 01. Mai 1999
DQ-65444444 2 Rosanne Kolumns 21. März 1977 01. Jan. 2000
GF-54354543 3 Cas Kade 01. Mai 1977 01. Apr. 2002
JK-34333432 4 Norma Lyzation 03. Apr. 1966 01. Apr. 2002
VB-48565444 5 Juan Tomani 12. Apr. 1966 01. Apr. 2002
FG-23566553 6 Del Eats 01. Mai 1967 01. Mai 2004

Tatsächlich handelt es sich bei der Sozialversicherungsnummer um den Primärschlüssel der Tabelle. Allerdings haben wir an jeden Mitarbeiter eine Nummer vergeben, die ebenfalls eindeutig ist. In diesem Fall kann „AUFTRÄGE.Mitarbeiternummer“ als Fremdschlüssel auf „MITARBEITER.Mitarbeiternummer“ verweisen – selbst wenn es sich bei dieser Spalte nicht um einen Primärschlüssel handelt. Die eigentlich zu beachtende Regel ist ein bisschen subtiler: Ein Fremdschlüssel muss auf einen Kandidatenschlüssel verweisen.

Bei einem Kandidatenschlüssel handelt es sich um eine Spalte, die alle Anforderungen für einen Primärschlüssel erfüllt. Sie besitzt somit das Potential, selbst als Primärschlüssel zu fungieren. In der Praxis verweisen Fremdschlüssel so gut wie immer auf Primärschlüssel.

Der größte Teil dieser Definition basiert auf dem Buch Inside Relational Databases von Mark Whitehorn und Bill Marklyn, veröffentlicht im Springer Verlag.

Diese Definition wurde zuletzt im Oktober 2009 aktualisiert

Erfahren Sie mehr über Datenbank-Management-Systeme (DBMS)

Pro+

Premium-Inhalte

Weitere Pro+ Premium-Inhalte und andere Mitglieder-Angebote, finden Sie hier.

Dem Gespräch beitreten

3 Kommentare

Schicken Sie mir eine Nachricht bei Kommentaren anderer Mitglieder.

Mit dem Absenden dieser Daten erklären Sie sich bereit, E-Mails von TechTarget und seinen Partnern zu erhalten. Wenn Ihr Wohnsitz außerhalb der Vereinigten Staaten ist, geben Sie uns hiermit Ihre Erlaubnis, Ihre persönlichen Daten zu übertragen und in den Vereinigten Staaten zu verarbeiten. Datenschutz

Bitte erstellen Sie einen Usernamen, um einen Kommentar abzugeben.

Hallo,
mir ist ein Fehler aufgefallen:
1. Außerdem dürfen sich in den Spalten für Primärschlüssel keine Nullen befinden.
0 ist eine legitime Zahl. NOT NULL besagt nicht „keine Null“ sondern kein „leerer Wert“ vorkommen darf, also die Spalte frei bleibt. Kundenummer 0 ist somit zulässig, da der Platz ja nicht frei bleibt.
=)
mfG,
Richard Michaelis
Abbrechen
Hallo,
Ich habe schon mehrmals versucht mich über die aufgeführten Begriffe zu
infomieren. Dennoch hatte ich es bisher nie richtig verstanden. Dieser Artikel hat mir wirklich weitergeholfen :-) sie haben das wesentliche hervorgehoben und kurz zusammengefasst. Ohne "bla, bla". DANKE!

Gruss Tanyel
Abbrechen
Hallo!
Kann mir jemand sagen, ob die Begriffe Fremdschlüssel und Sekundärschlüssel das gleiche meinen?
Abbrechen

- GOOGLE-ANZEIGEN

File Extensions and File Formats

Powered by:

SearchSecurity.de

SearchStorage.de

SearchNetworking.de

SearchDataCenter.de

Close