Der Primärschlüssel
Der Primärschlüssel
In Heft 6 hast du gesehen, dass selbst Name und Land nicht immer ausreichen, um einen Ort eindeutig zu finden. Datenbanken benötigen deshalb ein Merkmal, das jeden Datensatz zuverlässig identifiziert.
Merke
Ein Primärschlüssel einer Tabelle ist ein Attribut oder eine Kombination von Attributen, mit der jeder Datensatz eindeutig identifiziert werden kann. Der Schlüssel ist minimal: Man kann kein Attribut weglassen, ohne dass die Eindeutigkeit verloren geht.
Wenn natürliche Attribute nicht ausreichen, verwendet man häufig einen künstlichen Primärschlüssel, zum Beispiel eine Ortsnummer.
Im Schema erkennst du einen Primärschlüssel am Schlüsselsymbol 🔑. Fahre mit der Maus über den Begriff oder fokussiere ihn mit der Tastatur, um Schlüssel, Schema und Datensätze hervorzuheben.
- 🔑LNR TEXT
- Name TEXT
- Kontinent TEXT
- Einwohner REAL
| LNR | Name | Kontinent | Einwohner |
|---|---|---|---|
| D | Deutschland | Europa | 82.17 |
| I | Italien | Europa | 60.78 |
| CH | Schweiz | Europa | 8.18 |
| A | Österreich | Europa | 8.51 |
In der Tabelle land übernimmt LNR diese Aufgabe. Jeder Wert kommt nur einmal vor; so lässt sich Österreich unabhängig von der Schreibweise des Namens finden.
SELECT * FROM land WHERE LNR = 'A'
| LNR | Name | Einwohner | Flaeche | Hauptstadt | Kontinent | KontinentFlaeche | KontinentEinwohner |
|---|---|---|---|---|---|---|---|
| A | Österreich | 8.51 | 83879 | Wien | Europa | 10 | 733 |
Die Tabelle ort hat keinen Primärschlüssel. Welche Lösung ist am besten?
Merke: Schlüssel aus mehreren Attributen
Manchmal ist kein einzelnes Attribut eindeutig, aber eine Kombination ist es. Dann bilden mehrere Attribute zusammen den Primärschlüssel. Im Schema tragen alle diese Attribute das Schlüsselsymbol 🔑.
Beispiel: In der Tabelle note steht, welche Note eine Schülerin oder ein Schüler in welchem Fach hat. Die Schülernummer SNR allein ist nicht eindeutig, ebenso wenig das Fach. Erst SNR und Fach zusammen bestimmen einen Datensatz eindeutig – und man kann keines von beiden weglassen.
- 🔑SNR INTEGER
- 🔑Fach TEXT
- Note INTEGER
| SNR | Fach | Note |
|---|---|---|
| 1 | Mathe | 2 |
| 1 | Informatik | 1 |
| 2 | Mathe | 3 |
| 2 | Informatik | 2 |
| 3 | Mathe | 2 |
Fahre mit der Maus über die Begriffe: SNR und Fach wiederholen sich für sich genommen, die Paare aus beiden nie.
Fehler in den Daten
Die terra-Datenbank enthält absichtlich Fehler. Finde sie!
Datenbankschema „terra (Länder und Orte)“ anzeigen
- 🔑 LNR varchar(4)
- Name varchar(50)
- Einwohner decimal(20,2)
- Flaeche int(11)
- Hauptstadt varchar(30)
- Kontinent varchar(15)
- KontinentFlaeche int(11)
- KontinentEinwohner int(11)
- Name varchar(30)
- Land varchar(50)
- Einwohner int(11)
- Laenge decimal(10,4)
- Breite decimal(10,4)
🔑 Primärschlüssel · → Fremdschlüssel (verweist auf Tabelle.Attribut)
Ohne Anmeldung wird deine Abfrage nicht gespeichert.
Ein großes Land fehlt eindeutig in der Liste. Welches ist es? Welchen Grund könnte das haben?
Datenbankschema „terra (Länder und Orte)“ anzeigen
- 🔑 LNR varchar(4)
- Name varchar(50)
- Einwohner decimal(20,2)
- Flaeche int(11)
- Hauptstadt varchar(30)
- Kontinent varchar(15)
- KontinentFlaeche int(11)
- KontinentEinwohner int(11)
- Name varchar(30)
- Land varchar(50)
- Einwohner int(11)
- Laenge decimal(10,4)
- Breite decimal(10,4)
🔑 Primärschlüssel · → Fremdschlüssel (verweist auf Tabelle.Attribut)
Ohne Anmeldung wird deine Abfrage nicht gespeichert.
Welche weiteren Fehler fallen dir auf? Welche Ursache könnten sie haben, und wie könnte man sie verhindern?
Ausblick
Die Kontinent-Daten stehen in terra bei jedem Land noch einmal – und genau dabei sind die Fehler entstanden. Im nächsten Kapitel teilst du die Daten auf mehrere Tabellen auf und verbindest sie über Schlüssel.