Primärschlüssel einfach erklärt
Du lernst, wie Primärschlüssel Zeilen eindeutig kennzeichnen, wie du passende Schlüssel auswählst und sie von Fremdschlüsseln unterscheidest.
Kurz gesagt
Ein Primärschlüssel kennzeichnet jede Zeile einer Tabelle eindeutig und enthält keine fehlenden Werte. Er besteht aus einer Spalte oder aus mehreren Spalten, deren Werte zusammen eindeutig sind.
Eine Datenbank speichert geordnete Daten, zum Beispiel in Tabellen. Jede Tabellenzeile ist ein Datensatz, also ein zusammengehöriger Eintrag. Jede Spalte beschreibt eine Eigenschaft; sie heißt auch Attribut. Mit einem Primärschlüssel kannst du einen bestimmten Datensatz eindeutig finden.
Deine Lernziele
Ein Primärschlüssel besteht aus einer Spalte oder mehreren Spalten. Sein Wert kennzeichnet genau eine Zeile. Bei mehreren Spalten zählt die gesamte Wertekombination. Zwei verschiedene Zeilen dürfen nicht denselben Schlüsselwert haben.
In keiner beteiligten Spalte darf ein Wert fehlen. NULL bezeichnet einen fehlenden Wert. Die Zahl 0 ist dagegen ein vorhandener Wert und als Schlüsselwert möglich, wenn sie noch nicht vergeben ist.
Die Eindeutigkeit muss für alle nach den Regeln erlaubten Einträge gelten, auch für spätere. Dass die Werte in einer kleinen Beispieltabelle verschieden sind, genügt deshalb nicht.
Im theoretischen Modell, also der vereinfachten Beschreibung einer Datenbank, wird der Primärschlüssel aus den Schlüsselkandidaten ausgewählt. Ein Schlüsselkandidat identifiziert Zeilen eindeutig und ist minimal: Keine seiner Spalten kann entfallen, ohne die Eindeutigkeit zu verlieren. Minimal bedeutet dabei nicht, dass jeder Kandidat gleich viele Spalten oder die geringste Spaltenzahl aller Kandidaten hat.
Eine Tabelle kann höchstens einen festgelegten Primärschlüssel haben. Das Datenbankprogramm PostgreSQL prüft bei einem Primärschlüssel Eindeutigkeit und das Verbot von NULL. Es prüft dabei keine Minimalität. Deshalb kann es auch einen Schlüssel mit überflüssigen Spalten annehmen. PostgreSQL erlaubt außerdem Tabellen ohne festgelegten Primärschlüssel.
Primärschlüssel
Eine ausgewählte Spalte oder Spaltenkombination, deren vorhandene Werte jede Tabellenzeile eindeutig kennzeichnen.
Beispiel: Truhennummern prüfen (ausgedacht)
- 1In der Tabelle „Truhen“ ist die Truhennummer der Primärschlüssel.
- 2Zwei Einträge tragen die verschiedenen Nummern 41 und 42.
- 3Eine weitere Zeile mit Nummer 41 würde die Eindeutigkeit verletzen.
- 4Eine Zeile mit NULL als Truhennummer würde das Verbot fehlender Werte verletzen.
Teste dich
Ein einspaltiger Primärschlüssel besteht aus einer Spalte. Deren Werte müssen die Zeilen eindeutig kennzeichnen.
Ein zusammengesetzter Primärschlüssel besteht aus mehreren Spalten. Hier muss die gesamte Kombination eindeutig sein. Werte einer einzelnen Spalte dürfen sich wiederholen. Trotzdem darf in keiner der beteiligten Spalten NULL stehen. Die Kombination bleibt ein einziger Primärschlüssel.
Die ausgedachte Tabelle „Raumnutzung“ unten hat die Spalten Raum, Tag und Zweck. Es gilt die Regel: Für jeden Raum gibt es an jedem Tag höchstens einen Eintrag. Raum und Tag zusammen kennzeichnen deshalb eine Zeile eindeutig. Raum R1 kommt mehrfach vor, ebenso der Tag Montag. Keine dieser beiden Spalten reicht für sich aus. Die Kombination enthält damit keine überflüssige Spalte und eignet sich im theoretischen Modell als Primärschlüssel.
| Raum | Tag | Zweck |
|---|---|---|
| R1 | Montag | Lesen |
| R1 | Dienstag | Lesen |
| R2 | Montag | Lesen |
Merke: Mehrere Schlüsselspalten bilden gemeinsam einen Primärschlüssel. Eindeutig sein muss ihre Kombination, nicht jede einzelne Spalte.
Teste dich
Prüfe zuerst die Regeln der Tabelle: Welche Spalte oder Kombination bleibt für alle erlaubten Einträge eindeutig? In den gewählten Schlüsselspalten darf kein Wert fehlen. Streiche bei der theoretischen Auswahl jede überflüssige Spalte. Wenn mehrere Schlüsselkandidaten passen, kannst du einen davon als Primärschlüssel auswählen.
Wenige Spalten und einfache Werte sind praktisch. Auch zeitliche Stabilität ist eine Empfehlung: Ein Schlüsselwert sollte möglichst gleich bleiben. Eine Änderung ist nicht grundsätzlich verboten, kann aber Änderungen an Verweisen auf diesen Wert erfordern.
Für die ausgedachte Tabelle „Pflanzenbestand“ unten gelten diese Regeln: Jede Pflanze erhält eine eigene Pflanzennummer. Diese Nummer fehlt nie, bleibt gleich und wird auch später nicht erneut vergeben. Pflanzenarten und Standorte dürfen sich wiederholen; der Standort kann sich ändern.
Die Pflanzennummer ist deshalb eine geeignete Wahl. Sie bleibt eindeutig und ist vorhanden. Eine einzelne Spalte genügt. Pflanzenart und Standort scheiden jeweils allein aus, weil ihre Werte mehrfach vorkommen dürfen. Die Kombination aus Pflanzennummer und Standort wäre zwar eindeutig, enthielte aber eine überflüssige Spalte: Die Pflanzennummer reicht bereits.
| Pflanzennummer | Pflanzenart | Standort |
|---|---|---|
| 501 | Minze | Fenster |
| 502 | Minze | Regal |
| 503 | Farn | Fenster |
Merke: Begründe deine Wahl mit den Regeln für mögliche Einträge. Verschiedene Werte in den gerade sichtbaren Zeilen sichern keine künftige Eindeutigkeit.
Teste dich
Ein Primärschlüssel kennzeichnet die Zeilen seiner Tabelle eindeutig. Ein Fremdschlüssel stellt einen Verweis her: Eine Spalte oder Spaltenkombination verweist auf einen dafür zugelassenen eindeutigen Schlüssel. Das Ziel kann in einer anderen Tabelle oder in derselben Tabelle liegen.
Das Ziel muss nicht der Primärschlüssel sein. Beispielsweise erlaubt PostgreSQL auch andere dafür zugelassene Spalten oder Spaltenkombinationen, deren Eindeutigkeit gesichert ist.
Für die folgenden Beispiele betrachten wir Fremdschlüssel aus einer Spalte. Jeder eingetragene Fremdschlüsselwert muss als Schlüsselwert im Ziel vorhanden sein. Mehrere Zeilen dürfen denselben Zielwert verwenden. Ein Fremdschlüssel muss deshalb nicht eindeutig sein. Eine Spalte kann aber zugleich Primärschlüssel und Fremdschlüssel sein, wenn sie beide Aufgaben erfüllt.
Ein Fremdschlüssel darf einen fehlenden Wert enthalten, wenn die festgelegten Regeln dies erlauben. Bei mehreren Fremdschlüsselspalten hängt die Behandlung teilweise fehlender Werte von den Regeln ab. In PostgreSQL kann die Prüfung des Verweises je nach Einstellung schon bei einem fehlenden Teil entfallen oder erst dann, wenn alle Teile fehlen. Ein Verbot fehlender Werte schließt solche Ausnahmen aus.
Fremdschlüssel
Eine Spalte oder Spaltenkombination, die auf einen dafür zugelassenen eindeutigen Schlüssel verweist. Mehrere Zeilen dürfen auf dasselbe Ziel verweisen.
Beispiel: Roboter einer Gruppe zuordnen (ausgedacht)
- 1In der Tabelle „Gruppen“ ist die Gruppennummer der Primärschlüssel. Die Gruppen G4 und G8 sind eingetragen.
- 2In der Tabelle „Roboter“ ist die Roboternummer der Primärschlüssel. Die Gruppennummer ist ein Fremdschlüssel auf „Gruppen“.
- 3Die Roboter R21 und R22 dürfen beide die Gruppennummer G4 tragen.
- 4Die Gruppennummer G9 wäre als ausgefüllter Fremdschlüssel unzulässig, weil keine Gruppe G9 eingetragen ist.
Merke: Prüfe die Aufgabe einer Spalte: Kennzeichnet sie eine Zeile eindeutig, oder verweist sie auf ein Ziel? Unter passenden Regeln kann sie beide Aufgaben erfüllen.
Teste dich
Alles auf einen Blick
Primärschlüssel
Kein erlaubter Eintrag darf denselben Primärschlüsselwert wie eine andere Zeile haben.
NULL ist in jeder Primärschlüsselspalte ausgeschlossen; die Zahl 0 ist kein fehlender Wert.
Mehrere Spalten bilden gemeinsam einen Primärschlüssel; eindeutig sein muss ihre Kombination.
Im theoretischen Modell entfällt jede überflüssige Schlüsselspalte. Stabile Werte sind eine zusätzliche Empfehlung.
Ein Fremdschlüssel verweist auf einen zugelassenen eindeutigen Schlüssel; seine Werte dürfen sich wiederholen.
Einen Schlüssel für Kostüme auswählen (ausgedacht)
- 1Aufgabe: Wähle für eine Kostümtabelle einen geeigneten Primärschlüssel. Die Spalten heißen Kennnummer, Kleidungsart und Größe.
- 2Die Regeln lauten: Jede Kennnummer ist vorhanden, wird genau einem Kostüm zugeteilt, bleibt gleich und wird später nicht erneut vergeben. Kleidungsart und Größe dürfen sich wiederholen.
- 3Die Daten lauten: Kennnummer 61, Mantel, groß; Kennnummer 62, Mantel, klein; Kennnummer 63, Hut, klein.
- 4Prüfe die Beschreibungen: Mantel kommt zweimal vor, ebenso die Größe klein. Diese beiden Spalten eignen sich jeweils allein nicht.
- 5Wähle die Kennnummer: Sie ist nach den Regeln auch bei späteren Einträgen eindeutig und enthält keine fehlenden Werte.
- 6Begründe die Auswahl: Eine Spalte reicht aus, und ihr Wert bleibt gleich. Kleidungsart oder Größe zusätzlich aufzunehmen wäre für die eindeutige Kennzeichnung überflüssig.
Fehler finden
Fehler in Zeile 4Die Anzahl der beteiligten Spalten wird mit der Anzahl der Primärschlüssel verwechselt. Richtig: Die gewählte Kombination aus beiden Spalten bildet einen einzigen zusammengesetzten Primärschlüssel.
Lückentext
Alle folgenden Fälle sind ausgedacht. In der Tabelle „Tore“ ist die Tornummer der Primärschlüssel. Nummer 12 ist vergeben, Nummer 13 noch frei. Ein weiteres Tor darf die Nummer erhalten. In der Tabelle „Tagesdienste“ kommt jede Kombination aus Tag und Dienstart höchstens einmal vor. Tage und Dienstarten wiederholen sich einzeln; Werte fehlen nicht. Der Schlüssel aus beiden Spalten ist . Die Tabelle „Werkstätten“ enthält die Werkstattnummern 5 und 9. Eine andere Tabelle verweist mit einem einspaltigen Fremdschlüssel auf diese Nummern. Als vorhandener Zielwert passt .