Primärschlüssel bestimmen
Lösung geprüft
Die Aufgabe der heutigen Stunde ist der Primärschlüssel! Jede Tabelle braucht ein Attribut, mit dem sich jede Zeile eindeutig identifizieren lässt. Klingt einfach, ist es aber nicht immer – bei einer der Tabellen gibt es nämlich gar keinen brauchbaren.
DB_01-2: Welches Attribut wäre ein geeigneter
Primärschlüssel?
LAGERBESTAND: Artikelpreis, Artikelname, Artikelnummer, Regalnummer
KUNDEN: LaufendeNummer, Kundename, Kundevorname, Kundegeburtsdatum
DB_01-3: Welche Attribute wären ein geeigneter
ZUSAMMENGESETZTER PRIMÄRSCHLÜSSEL?
„Flüge der Lufthansa": Pilotvorname, Pilotnachname, Flugzeuggewicht,
Flugzeugnummer, Datum, AusweisnummerPilot
„Ausleihvorgänge" DVD-Verleih: DVD-Nummer, Filiale,
DVD-Erscheinungsjahr, Kundennummer, Kundenachname, Rueckgabedatum,
Ausleihdatum
DB_01-4: Bestimmen Sie den Primärschlüssel (einfach oder zusammengesetzt) für sechs gegebene Tabellen.
Was ein Primärschlüssel leisten muss
- Eindeutig: Kein Wert darf zweimal vorkommen.
- Immer vorhanden: Er darf nie leer (NULL) sein.
- Unveränderlich: Er sollte sich nie ändern, denn andere Tabellen verweisen darauf.
DB_01-2 – Einfache Primärschlüssel
| Tabelle | Primärschlüssel | Warum die anderen nicht taugen |
|---|---|---|
| LAGERBESTAND | Artikelnummer | Preise wiederholen sich ständig, zwei Artikel können gleich heißen, und in einem Regal liegen viele Artikel. |
| KUNDEN | LaufendeNummer | Namen und Vornamen sind nicht eindeutig – zwei Kunden können Peter Müller heißen. Auch Name plus Geburtsdatum ist nicht sicher. |
Bei den Kunden sieht man den wichtigsten Grundsatz: echte Daten taugen fast nie als Schlüssel. Namen wiederholen sich, Leute heiraten und ändern ihren Nachnamen, Adressen ändern sich. Deshalb nimmt man eine künstliche, durchlaufende Nummer.
DB_01-3 – Zusammengesetzte Primärschlüssel
Flüge der Lufthansa
Flugzeugnummer + Datum
Eine Flugzeugnummer allein reicht nicht – dasselbe Flugzeug fliegt an vielen Tagen. Ein Datum allein reicht auch nicht, an einem Tag starten hunderte Flüge. Erst beides zusammen macht die Zeile eindeutig.
Das gilt allerdings nur unter der Annahme, dass ein Flugzeug pro Tag genau einen Flug macht. Fliegt es morgens und abends, bräuchte man noch die Uhrzeit dazu. Solche Annahmen sollte man in der Antwort dazuschreiben.
Ausleihvorgänge im DVD-Verleih
DVD-Nummer + Ausleihdatum
Dieselbe DVD wird über die Jahre oft ausgeliehen, aber an einem bestimmten Tag nur einmal. Die Kundennummer braucht man nicht dazu – wenn DVD und Datum feststehen, steht der Kunde sowieso fest.
Rueckgabedatum taugt nicht, weil es beim Ausleihen noch leer
ist. Und ein Primärschlüssel darf nie leer sein.
DB_01-4 – Die sechs Tabellen
| Tabelle | Primärschlüssel | Begründung | |
|---|---|---|---|
| A | Kunden | kunde_id | Eindeutige Nummer, genau dafür gedacht |
| B | Lagerbestand | artikel_nummer | Regalnummer und Anzahl sind nicht eindeutig |
| C | Ausleihvorgänge | dvd_id + ausleihdatum (zusammengesetzt) | Wie oben: eine DVD an einem Tag nur einmal |
| D | Fahrräder | fahrrad_id | Farbe, Hersteller und Gangschaltung wiederholen sich |
| E | Bestellungen | kunde_id + bestelldatum (zusammengesetzt) | Es gibt keine Bestellnummer. Gilt nur, solange ein Kunde pro Tag höchstens einmal bestellt. |
| F | Bücher | keiner geeignet! | siehe unten |
F) Bücher – die Falle
Die Tabelle hat buchtitel, erscheinungsjahr,
autor_name, preis und seitenzahl.
Kein einziges davon ist eindeutig:
- Buchtitel wiederholen sich – „Die Verwandlung" gibt es in vielen Ausgaben
- Ein Autor schreibt mehrere Bücher
- Preis und Seitenzahl sowieso nicht
- Auch Titel + Autor + Jahr ist unsicher: Neuauflagen im selben Jahr, Sammelbände
Die richtige Antwort ist deshalb: Hier gibt es keinen geeigneten
Primärschlüssel. Man muss einen hinzufügen – entweder eine
künstliche buch_id oder die ISBN, die es für
genau diesen Zweck gibt.
Genau darauf zielt die Aufgabe ab. Es ist völlig normal, dass eine gegebene Tabelle keinen brauchbaren Schlüssel enthält – dann ist das eine Erkenntnis und kein Fehler.
Einfach oder zusammengesetzt – wann was?
| Einfach | Zusammengesetzt | |
|---|---|---|
| Besteht aus | einem Attribut | zwei oder mehr Attributen |
| Typisch bei | Tabellen mit eigener ID | Verknüpfungstabellen und Vorgängen (Ausleihe, Bestellung, Flug) |
| Vorteil | kurz, einfach zu referenzieren | kommt ohne künstliche ID aus |
| Nachteil | braucht ein zusätzliches Attribut | Fremdschlüssel darauf werden umständlich |
In der Praxis gibt man fast jeder Tabelle eine einfache
id, auch wenn ein zusammengesetzter Schlüssel möglich wäre.
Das macht alles Weitere einfacher. In der Klausur wird aber genau das
abgefragt, was in den gegebenen Spalten steht – also ohne eigene Erfindung
antworten und stattdessen dazuschreiben, dass eine ID fehlt.