Seitenleiste

Community

SQL

Grundlagen

Datenbanksysteme

Client/Server

Eingebettet

Schlüssel

Bei Datenbanken öffnet der Schlüssel nicht ein Schloss, wie man es in der Kryptographie, sondern ist eher als Id zu verstehen - also als Identifikation eines einzelnes Datensatzes. Ein Schlüssel passt nur auf einen einzelnen Datensatz.

Uniqueness

Unter Uniqueness versteht die Einzigartigkeit, die ein Schlüssel aufweisen muss. Da er nur auf genau einen Datensatz passen darf, muss ein Schlüssel entsprechend einzigartig sein.

Ein Datensatz muss daher eindeutig identifizierbar sein, weil sich Datensätze auch ähneln können. Nehmen wir eine Tabelle mit Mitarbeitern:

+------------+----------+---------------+-----------+------+---------------+
| Department | Salary   | FamilyName    | GivenName | Sex  | DateOfJoining |
+------------+----------+---------------+-----------+------+---------------+
|          1 | 50000.00 | Boss          | Bert      | m    | 2010-01-01    |
|          2 | 30000.00 | Handel        | Holger    | m    | 2010-06-01    |
|          3 | 28000.00 | Helfer        | Herbert   | m    | 2010-08-01    |
|          4 | 25000.00 | Redseelig     | Rainer    | m    | 2011-01-01    |
|          2 | 20000.00 | Ramsch        | Rainer    | m    | 2012-04-01    |
|       NULL |     NULL | Aushilfskraft | Arne      | m    | 2013-02-01    |
+------------+----------+---------------+-----------+------+---------------+

Nun bekommt Rainer eine Gehaltserhöhung:

UPDATE Staff SET Salary=22000 WHERE GivenName = "Rainer";

Mit dieser Anweisung erhält Rainer Ramsch eine Gehaltserhöhung von 20000 auf 22000 während Rainer Redseelig versehentlich eine Lohnkürzung von 25000 auf 22000 hinnehmen muss. Der Vorname ist also kein einzigartiges Merkmal eines Mitarbeiters. In dieser Tabelle könnte der Nachname ein Schlüsselkandidat sein, denn der Nachname unterscheidet die Mitarbeiter eindeutig.

Schlüsselkandidaten

Ein guter Schlüsselkandidat ist so gewählt, dass er auch bei zukünftigen Daten eindeutig bleibt. Entsprechend ist der Nachname ist natürlich ebenfalls fragwürdig. Einige Nachnamen gelten eher als Sammelbegriffe, beispielsweise die berühmten Meyer/Müller/Schmitz. Ein Nachname kann bei mehreren Datensätzen identisch sein, der Nachname ist entsprechend kein Schlüsselkandidat.

Zusammengesetzte Schlüssel

Ein besserer Schlüsselkandidat wäre also die Kombination von Vorname und Nachname. Wie es bei Nachnamen aber Sammelbegriffe gibt, die tausende Male auftreten, so gibt es auch bei Vornamen Modeerscheinungen, so dass einige Namen mehrfach auftauchen. Ein Name wie 'Michael Schumacher' könnte in einer Firma aber durchaus mehrfach auftauchen.

In Kombination mit dem Geburtstag lässt sich bereits eine guter Schlüsselkandidat identifizieren. Leider reicht Vorname, Nachname und Geburtsdatum auch nicht, um einen Menschen in Deutschland eindeutig zu identifizieren.

Surrogatschlüssel

Eine einfache Lösung ist die Daten einfach fortlaufend durchzunummerieren. Dieser Schlüssel ist ein zusätzliches Attribut im Datensatz. Dieses Identifizierungsattribut wird Surrogatschlüssel oder auch Stellvertreter- oder Ersatzschlüssel genannt:

+----+------------+----------+---------------+-----------+------+---------------+
| id | Department | Salary   | FamilyName    | GivenName | Sex  | DateOfJoining |
+----+------------+----------+---------------+-----------+------+---------------+
|  1 |          1 | 50000.00 | Boss          | Bert      | m    | 2010-01-01    |
|  2 |          2 | 30000.00 | Handel        | Holger    | m    | 2010-06-01    |
|  3 |          3 | 28000.00 | Helfer        | Herbert   | m    | 2010-08-01    |
|  4 |          4 | 25000.00 | Redseelig     | Rainer    | m    | 2011-01-01    |
|  5 |          2 | 20000.00 | Ramsch        | Rainer    | m    | 2012-04-01    |
|  6 |       NULL |     NULL | Aushilfskraft | Arne      | m    | 2013-02-01    |
+------------+----------+---------------+-----------+------+---------------+

Nun haben wir ein garantiert eindeutiges Attribut, dass auch dann funktioniert, wenn zwei 'Andreas Müller' in der gleichen Abteilung mit gleichem Gehalt und gleichem Eintrittsdatum und gleichem Geburtstag in der Firma arbeiten.

Mit einem Surrogatschlüssel haben wir immer einen einfachen und kurzen Schlüsselkandidaten, den wir allerdings zusätzlich zu den Daten speichern müssen.

Den Surrogatschlüssel kennen wir auch im Alltag häufig: Als Kundennummer, Mitarbeiternummer, Artikelnummer, Rechnungsnummer und ähnlichem.

Als ob Surrogatschlüssel nicht bereits genug synonyme Begriffe hätte, nennt man sie auch „künstliche Schlüssel“, weil der Surrogatschlüssel keinerlei Verbindung mit den eigentlichen Daten besitzt.

natürliche Schlüssel

Natürliche Schlüssel sind einzigartige Attribute, die bereits in den Daten vorhanden sind. Das kann beispielsweise eine Seriennummer sein oder ein einzigartiges biometrisches Merkmal, um eine Person zu identifizieren. Ein natürlicher Schlüssel kann also ein guter Schlüsselkandidat sein.

Ein solcher Schlüssel dient häufig Regel dazu, zusätzliche Informationen zu der eindeutigen Kennzeichnung zu speichern. Bei einem Fahrzeug kann durch die Seriennummer auf die Ausstattungsmerkmale des Fahrzeugs geschlossen werden.

Primärschlüssel

Ein Datensatz kann durch unterschiedliche Schlüssel identifiziert werden. Wenn man bei einer Hotline anruft, wird man häufig nach der Kundennummer gefragt und wenn man diese nicht weiß, nach Namen und Geburtsdatum. Mit beiden Informationen findet man den gesuchten Datensatz. Beides sind Schlüsselkandidaten, die einen Datensatz in der Regel eindeutig identifizieren.

Der Primärschlüssel ist der Hauptschlüssel, also der Schlüssel nachdem vorrangig gesucht werden wird. Dies sind häufig Surrogatschlüssel, in unserem Beispiel also die Kundennummer. Der Primärschlüssel sollte also möglichst kurz und unveränderlich sein. Ein zusammengesetzter Schlüssel aus Name und Geburtsdatum könnte sich ändern, wenn die Person heiratet. Ein Surrogatschlüssel ist kurz und unveränderlich.

Fremdschlüssel

Fremdschlüssel nennt man Primärschlüssel, die in anderen Tabellen stehen. Der Primärschlüssel der fremden Tabelle bildet eine Referenz auf einen zugehörigen Datensatz. Nehmen wir eine Tabelle Adresse, die einen Surrogatschlüssel als Primärschlüssel verwendet, also eine fortlaufende Nummer der Adressen. In der Tabelle Mitarbeiter findet sich nun ein eigener Primärschlüssel 'Mitarbeiternummer' und ein Attribut 'Adresse' in dem der entsprechende Primärschlüssel der zugehörigen Adresse in der Tabelle 'Adresse' steht. Wenn man den Mitarbeiter gelesen hat, weiß man den Primärschlüssel der zugehörigen Adresse und kann die Adresse aus dieser Tabelle nachladen. Den in der Tabelle Mitarbeiter gespeicherten Primärschlüssel der Adressen-Tabelle nennt man hier Fremdschlüssel: Es ist ein Schlüssel, der nicht zur Tabelle 'Mitarbeiter' gehört.

Über die Fremdschlüssel gehen die beiden Tabellen eine Verbindung, eine sogenannte Relation ein - die Grundlage aller relationalen Datenbanken.

Ziel der Lektion

Wir wissen nun, was Schlüssel sind. Wichtig ist sich zu merken, was Primärschlüssel sind und dass sie in der Regel über eine fortlaufende Nummer abgebildet werden. Fremdschlüssel sind Primärschlüssel fremder Tabellen und dienen dazu, eine Verbindung zwischen den jeweiligen Datensätzen abzubilden.

Relationen werden wir uns im nächsten Kapitel ausführlicher ansehen.