Primärschlüssel einfach erklärt
Ein Primärschlüssel ist ein Attribut oder eine Kombination mehrerer Attribute, die jeden Datensatz einer Tabelle eindeutig kennzeichnet. Seine Werte müssen eindeutig und immer vorhanden sein. Du lernst hier, einfache und zusammengesetzte Primärschlüssel zu erkennen, geeignete Schlüssel auszuwählen und sie von Fremdschlüsseln zu unterscheiden.
Hake ab, was du schon kannst — und komm am Ende hierher zurück!
Woran erkennst du einen Primärschlüssel?
Eine Tabelle besteht aus Zeilen und Spalten. Jede Zeile beschreibt einen Datensatz, zum Beispiel einen Artikel. Die Spalten enthalten seine Attribute, etwa Artikelnummer, Name und Preis.
Primärschlüssel
Ein Primärschlüssel ist ein Attribut oder eine geordnete Kombination mehrerer Attribute, deren Wert beziehungsweise Wertekombination jeden Datensatz der Tabelle eindeutig identifiziert.
Ein Primärschlüssel erfüllt zwei notwendige Bedingungen:
- eindeutig: Kein Schlüsselwert kommt in zwei Datensätzen vor.
- vollständig: Kein Datensatz hat an dieser Stelle einen fehlenden Wert.
Außerdem sollte sich ein geeigneter Schlüsselwert möglichst nicht ändern.
| Artikel_ID | Artikelname | Einkaufspreis |
|---|---|---|
| 1 | Hut | 20,99 € |
| 2 | Regenschirm | 10,50 € |
| 3 | Sonnenbrille | 19,00 € |
Artikel_ID ist ein geeigneter Primärschlüssel: Jeder Wert ist vorhanden und kommt genau einmal vor. Einkaufspreis wäre ungeeignet, weil verschiedene Artikel denselben Preis haben könnten.
Ein Attribut ist nicht schon deshalb ein guter Primärschlüssel, weil seine Werte in einer kleinen Beispieltabelle gerade verschieden sind. Es muss für alle zulässigen Datensätze eindeutig bleiben.
Einfach oder zusammengesetzt?
Ein einfacher Primärschlüssel besteht aus genau einem Attribut. In der Artikeltabelle genügt Artikel_ID allein.
Zusammengesetzter Primärschlüssel
Ein zusammengesetzter Primärschlüssel besteht aus mehreren Attributen. Erst ihre gemeinsame Wertekombination identifiziert jeden Datensatz eindeutig.
Betrachte Bestellungen:
| Bestellungsdatum | Kunden_ID | Rechnungsbetrag |
|---|---|---|
| 01.09.2010 | 1377 | 31,99 € |
| 01.09.2010 | 19991 | 188,45 € |
| 07.09.2010 | 1377 | 61,99 € |
Das Datum allein ist nicht eindeutig: Am 01.09.2010 gibt es zwei Bestellungen. Auch Kunden_ID allein reicht nicht, weil Kunde 1377 mehrfach bestellt. In den sichtbaren Daten ist jedoch jede Kombination aus Bestellungsdatum und Kunden_ID verschieden.
Um die Zeile mit 31,99 € eindeutig zu bestimmen, brauchst du beide Werte: 01.09.2010 und 1377. Der Schlüssel ist daher in diesem Beispiel zusammengesetzt.
Für eine echte Datenbank müsste zusätzlich geklärt werden, ob derselbe Kunde am selben Tag mehrmals bestellen darf. Falls ja, wäre die Kombination langfristig nicht eindeutig und eine eigene Bestell_ID geeigneter.
Wie wählst du einen geeigneten Schlüssel aus?
Prüfe mögliche Primärschlüssel in dieser Reihenfolge:
- Ist jeder Wert vorhanden? Ein fehlender Schlüsselwert ist nicht erlaubt.
- Ist jeder Wert eindeutig? Suche gezielt nach Wiederholungen.
- Bleibt die Eindeutigkeit auch bei neuen Datensätzen erhalten? Eine kleine Tabelle kann täuschen.
- Ist der Wert möglichst stabil? Ein Schlüssel sollte sich nach Möglichkeit nicht ändern.
- Genügt ein Attribut? Wenn nicht, prüfe eine notwendige Kombination oder verwende einen künstlichen Schlüssel.
Natürlicher Schlüssel
Ein natürlicher Schlüssel verwendet ein bereits vorhandenes, fachlich bedeutungsvolles Attribut, sofern es eindeutig und vollständig ist.
Ersatzschlüssel
Ein Ersatzschlüssel ist ein eigens erzeugtes Attribut ohne aus den Fachdaten abgeleitete Bedeutung, zum Beispiel eine automatisch vergebene Kunden_ID.
Namen und Geburtsdaten sind oft problematisch: Verschiedene Personen können gleich heißen oder dasselbe Geburtsdatum haben. Selbst eine Kombination, die in den vorhandenen Zeilen eindeutig ist, muss bei späteren Einträgen nicht eindeutig bleiben. Eine künstliche ID vermeidet dieses Problem, sofern jeder erzeugte Wert nur einmal vergeben wird.
Eine Lagertabelle besitzt die Attribute Artikelpreis, Artikelname, Artikelnummer und Regalnummer.
Artikelpreis kann sich wiederholen und ändern. Derselbe Artikelname könnte mehrfach verwendet werden. In einem Regal liegen mehrere Artikel. Eine eindeutig vergebene Artikelnummer ist deshalb der überzeugendste Primärschlüssel.
Wähle in jeder Lücke die passende Form und prüfe anschließend deine Antworten.
Ein Primärschlüssel muss jeden Datensatz kennzeichnen. Fehlt ein geeigneter natürlicher Schlüssel, kann eine künstlich erzeugte verwendet werden. Besteht der Schlüssel aus mehreren Attributen, muss ihre gemeinsame eindeutig sein.
Wie unterscheiden sich Primär- und Fremdschlüssel?
Primär- und Fremdschlüssel haben unterschiedliche Aufgaben.
| Primärschlüssel | Fremdschlüssel |
|---|---|
| identifiziert eine Zeile seiner Tabelle eindeutig | verweist auf den Primärschlüssel einer anderen Tabelle |
| darf in seiner Tabelle nicht doppelt vorkommen | darf je nach Beziehung mehrfach vorkommen |
| muss für jeden Datensatz vorhanden sein | verbindet zusammengehörige Datensätze verschiedener Tabellen |
Angenommen, die Tabelle Kunden verwendet Kunden_ID als Primärschlüssel. In der Tabelle Bestellungen steht dieselbe Kunden_ID als Fremdschlüssel:
| Bestell_ID | Kunden_ID | Produkt_ID |
|---|---|---|
| 1001 | 001 | 002 |
| 1002 | 002 | 003 |
| 1003 | 001 | 001 |
Die Kunden_ID 001 darf in Bestellungen mehrfach auftreten, weil ein Kunde mehrere Bestellungen tätigen kann. Jeder dort eingetragene Fremdschlüsselwert muss jedoch zu einer vorhandenen Kunden_ID in der Kundentabelle passen.
Referenzielle Integrität
Referenzielle Integrität bedeutet hier: Ein Fremdschlüsselwert verweist auf einen tatsächlich vorhandenen Primärschlüsselwert. So entstehen keine Bestellungen für nicht vorhandene Kunden.
Wie wird ein Primärschlüssel in SQL festgelegt?
Beim Erstellen einer Tabelle kann SQL den Primärschlüssel direkt festlegen. Das folgende Schema beschreibt eine Mitarbeitertabelle:
CREATE TABLE EMP (ID INT NOT NULL, FIRSTNME VARCHAR(15) NOT NULL, LASTNAME VARCHAR(15) NOT NULL, PRIMARY KEY (ID));
ID ist eine Ganzzahl und wird mit PRIMARY KEY (ID) als Primärschlüssel festgelegt. NOT NULL drückt aus, dass kein Wert fehlen darf.
Bei einer Kundentabelle ist auch die verkürzte Schreibweise direkt am Attribut möglich:
CREATE TABLE Kunden (Kunden_ID INT PRIMARY KEY, Name VARCHAR(100));
Ein Fremdschlüssel in einer Bestellungstabelle kann mit einem Verweis ergänzt werden:
FOREIGN KEY (Kunden_ID) REFERENCES Kunden(Kunden_ID)
Damit zeigt Bestellungen.Kunden_ID auf den Primärschlüssel Kunden.Kunden_ID.
Datenbanksysteme können für einen Primärschlüssel einen eindeutigen Index anlegen oder voraussetzen. Ein Index kann das gezielte Auffinden von Zeilen beschleunigen. Die Hauptaufgabe des Primärschlüssels bleibt jedoch die eindeutige Identifikation.
Karteikasten
Überlege zuerst selbst und drehe die Karte anschließend zum Prüfen um.
Alles auf einen Blick
- Primärschlüssel
- Bedingungen: eindeutig, immer vorhanden, möglichst stabil
- Aufbau: einfach oder zusammengesetzt
- Herkunft: natürlicher Schlüssel oder künstlicher Ersatzschlüssel
- Beziehungen: Fremdschlüssel verweisen auf Primärschlüssel
- Integrität: ungültige Fremdschlüsselverweise verhindern
- Auswahl: künftige Datensätze prüfen und bei Bedarf eine eigene ID verwenden
Abschluss-Check
Wenn du bei einer Tabelle einen Primärschlüssel suchst, frage zuerst: Welche Angabe unterscheidet jede erlaubte Zeile dauerhaft und ist immer vorhanden? Reicht kein einzelnes Attribut, prüfst du eine notwendige Kombination oder führst einen künstlichen Ersatzschlüssel ein.
Mit Google fortfahren