next up previous index
Weiter: 3 Entwurfsgrundlagen für Datenbanken Hoch: 2 Was sind Schlüssel? Zurück: 2 Was sind Schlüssel?

1 Varianten für Schlüssel

Beim Umgang mit Datenbanktabellen unterscheidet man bei den Schlüsseln (bzw. Indizes) noch verschiedene Varianten (einfache Schlüssel, eindeutiger Schlüssel, Primärschlüssel). Zur Verdeutlichung dieser Begriffe soll das Modell der Telefonliste etwas erweitert werden. Nehmen wir an, es wird in der Personalabteilung eine Liste der Angestellten gepflegt. Dann könnte diese Tabelle in Anlehnung an unsere kleine Telefonliste folgende Spalten (sprich Felder) aufweisen: Personal Nr., Name, Vorname, PLZ, Ort, Straße, Hausnr., Tel. Nr., Geb.-Datum. Natürlich können Sie weitere Felder in die Tabelle aufnehmen. Für unser Beispiel reichen diese Felder aber aus. Welches Feld als Schlüssel benutzt wird, hängt von verschiedenen Randbedingungen ab.

Benötigen Sie einen eindeutigen Schlüssel, nach dem die Tabelle sortiert ist? In diesem Fall darf ein Wert für den Schlüssel immer nur einen Datensatz liefern. Das Feld Name ist für diesen Zweck sicherlich nicht geeignet. Es kann ja durchaus zwei Mitarbeiter gleichen Namens in der Firma geben. Selbst die Berücksichtigung des Vornamens bringt keine wirkliche Lösung, da durchaus auch zwei Mitarbeiter gleichen Vor- und Nachnamens angestellt sein könnten. Besser ist es, ein eigenes Feld in Form einer Personalnummer etc. einzuführen, welches dann als eindeutiger Schlüssel benutzt wird. Diese Nummern werden gerade so gewählt, dass sie für eine Person (d.h. einen Datensatz der Tabelle) eindeutig sind. Der zweite Mitarbeiter Müller erhält einfach eine andere Personalnummer, und schon ist das Problem gelöst. Diesen Schlüssel bezeichnet man auch als "`eindeutigen Schlüssel"' (oder Unique Key).

Beim Zugriff auf die Tabelle über diesen eindeutigen Schlüssel findet sich in der Tabelle immer nur ein Datensatz (oder kein Satz, falls die Tabelle diesen Schlüssel nicht enthält). Weil die Tabelle primär über diesen Schlüssel sortiert und verwaltet wird, spricht man auch von einem "`Primärschlüssel"' oder "`Hauptschlüssel"'. Solche Primärschlüssel sind bei Datenbanken wichtig, falls Sie mit mehreren Tabellen arbeiten und Ergebnisse zusammenführen müssen. Nehmen wir an, die Datenbank enthält neben der Tabelle der Personaldaten noch weitere Tabellen, in denen Gehaltsdaten (Stundenlohn), Arbeitszeiten (Stundenabrechnungen) etc. geführt werden. Um nun anhand der aufgezeichneten Arbeitszeiten und dem Stundenlohn das Gesamtgehalt für einen Monat zu ermitteln, müssen die Daten aus den verschiedenen Tabellen herausgezogen und miteinander verknüpft werden.

Über den Primärschlüssel (z.B. Personalnummer) lassen sich Einträge anderer Tabellen identifizieren, die Zusatzdaten zum aktuellen Datensatz aufweisen. So könnte aus der Personaldatei der Name samt Anschrift geholt werden. Über die gleiche Personalnummer wird der aktuelle Stundenlohn in einer weiteren Tabelle ermittelt, und in einer dritten Tabelle führt die Personalnummer zu allen Datensätzen dieses Mitarbeiters, in denen Stundenabrechnungen hinterlegt sind. Die Personalnummer fungiert dann als primärer Schlüssel, über den sich die benötigten Daten aus mehreren Tabellen schnell zusammensuchen lassen.

In der Tabelle mit den Stundenabrechnungen wird die Personalnummer ebenfalls als Index benutzt. In diesem Falls ist der Schlüssel aber gezielt mehrdeutig und adressiert mehrere Datensätze. Es handelt sich um einen mehrdeutigen Index, da diese Tabelle ja mehrere Datensätze für einen Mitarbeiter aufweisen muss (für jeden Arbeitstag oder jede Schicht wird die Zahl der gearbeiteten Stunden abgelegt). Trotzdem bietet der Index einen Vorteil, da er die Werte des Indexfelds in sortierter Form beinhaltet. Es kann also per Index sehr schnell auf die Datensätze zu einer gegebenen Personalnummer zugegriffen werden.

In der Praxis gibt es aber Sonderfälle, wo ein Primärindex zum Zugriff auf die Tabelle nicht ausreicht. Bei Anfragen an die Datenbank wird es häufig Fälle geben, in denen die Personalnummer unbekannt ist. Dann ließe sich die Personalnummer über den Namen und ggf. den Vornamen sowie weitere Ordnungskriterien wie Geburtsdatum etc. ermitteln. In diesem Fall werden Felder wie Name + Vorname als Sekundärschlüssel zum Zugriff auf die Tabellen der Datenbank benutzt. Auch wenn es bei Namensgleichheit zu Problemen führt, sind solche Sekundärschlüssel hilfreich, wenn Sie die Daten einer Tabelle nach anderen Gesichtspunkten sortieren und anzeigen möchten. Zusätzlich zum Primärindex kann man dann weitere Sekundärindizes auf eine Tabelle definieren und zum Zugriff benutzen.


next up previous index
Next: 3 Entwurfsgrundlagen für Datenbanken Up: 2 Was sind Schlüssel? Previous: 2 Was sind Schlüssel?
Nicolaus Millin
2007-08-11