Kandidatenschlüssel

Definition - Was bedeutet Kandidatenschlüssel?

Ein Kandidatenschlüssel ist ein bestimmter Feldtyp in einer relationalen Datenbank, der jeden eindeutigen Datensatz unabhängig von anderen Daten identifizieren kann.

Experten beschreiben einen Kandidatenschlüssel als "keine redundanten Attribute" und als "minimale Darstellung eines Tupels" in einer relationalen Datenbanktabelle.

Eine der häufigsten Fragen zur Verwendung eines Kandidatenschlüssels ist, wie sich der Kandidatenschlüssel auf Superschlüssel und Primärschlüssel im Datenbankdesign bezieht.

Technische.me erklärt den Kandidatenschlüssel

Kandidatenschlüssel und Primärschlüssel

Die Beziehung zwischen dem Kandidatenschlüssel und dem Primärschlüssel ist einfacher zu beschreiben. Grundsätzlich kann eine relationale Datenbank mehr als einen Kandidatenschlüssel enthalten, aber nur einer dieser Kandidatenschlüssel ist der Primärschlüssel, der hauptsächlich zur eindeutigen Identifizierung jedes Datensatzes verwendet wird.

Der beste Weg, Kandidatenschlüssel zu definieren, ist ein Beispiel: Die Datenbank einer Bank wird entworfen. Um das Konto jedes Kunden eindeutig zu definieren, kann eine Kombination aus dem Geburtsdatum des Kunden und einer fortlaufenden Nummer für jedes seiner Konten verwendet werden.

Das Girokonto von Andrew Smith kann also mit 120344-1 und sein Sparkonto mit 120344-2 nummeriert werden. Ein Kandidatenschlüssel wurde gerade erstellt.

Dies kann zu Problemen führen.

Was ist, wenn mehr als eine Person mit demselben Geburtsdatum ein Konto bei der Bank eröffnen möchte?

Aufgrund dieser potenziellen Fallstricke besteht eine häufig verwendete Option darin, einen eindeutigen Kandidatenschlüssel zu erstellen. In diesem Fall kann die Datenbank der Bank eindeutige Kontonummern ausgeben, die garantiert das gerade hervorgehobene Problem verhindern. Diese Kontonummern können eine integrierte Logik haben.

Beispielsweise können Girokonten mit einem "C" beginnen, gefolgt von Jahr und Monat der Erstellung und innerhalb dieses Monats mit einer fortlaufenden Nummer. Das Girokonto von Andrew Smith kann nun C-200805-22 sein.

Auch ohne an anderer Stelle darauf hinzuweisen, kann ein Kassierer feststellen, dass dies das 22. Girokonto war, das im Mai 2008 erstellt wurde. Sparkonten folgen der gleichen Logik, jedoch mit einem "S" anstelle von "C".

Wenn eine Datenbanktabelle zwei oder mehr eindeutige Bezeichner hat, wählt der Datenbankadministrator oder -ingenieur einen dieser als Primärschlüssel aus.

Super Keys und Candidate Keys

Die Verwendung von Superschlüsseln und Kandidatenschlüsseln ist komplizierter.

Im Wesentlichen besteht ein Superschlüssel aus einer Reihe von Attributen (und per Proxy häufig aus einer Reihe von Tabellenspalten), die einen eindeutigen Datensatz identifizieren.

Der Kandidatenschlüssel identifiziert auch einen eindeutigen Datensatz, besteht jedoch aus einem einzelnen Feld oder einer einzelnen Spalte

Sie werden häufig den Kandidatenschlüssel sehen, der als "Minimal" eines Superschlüssels bezeichnet wird.

Stellen Sie sich beispielsweise eine Produktionsstätte mit zwei Terminals vor, in der zu einem bestimmten Zeitpunkt nur ein Produkt an einem bestimmten Terminal gebaut werden kann.

Da die Datenbank die Erstellung von Produkten in einer Tabelle protokolliert und dabei auf Zeit und Terminal verweist, ist der Superschlüssel, die Kombination aus Zeit und Terminal, für jeden einzelnen Datensatz eindeutig. Die einzelnen Spalten Zeit und Terminal weisen jedoch Redundanzen auf.

Wenn der Datenbankingenieur der Tabelle, die aus einer beliebigen alphanumerischen Eingabe besteht, einen Kandidatenschlüssel hinzufügt, führt dieser Kandidatenschlüssel mit nur einer Spalte dasselbe aus wie die Kombination aus Zeit- und Terminal-Superschlüsselattribut.

Vor diesem Hintergrund kann die Verwendung eines Kandidatenschlüssels bestimmen, wie auf Datensätze zugegriffen wird und wie die Subjekte dieser Datensätze identifiziert werden.

Wie andere Arten von Datenbankinhalten können Kandidatenschlüssel mit Hash-Verschlüsselung behandelt werden, um die Cybersicherheit zu erhöhen. Beim Hashing wird ein ursprüngliches Zeichenfolgenfeld in eine kürzere Zeichenfolge umgewandelt, um es zu abstrahieren und nicht anzuzeigen, um den nicht autorisierten Zugriff einzuschränken.

Ingenieure müssen die Möglichkeit von Hash-Kollisionen und anderen einschränkenden Faktoren beim Hash dieser Daten bewerten - wie man einen bestimmten Datensatz durch eine kürzere Zeichenfolge ersetzt, um den Inhalt der Datenbanktabelle für Hacker weniger zugänglich zu machen.

Die Idee des Hashings kann bei diesen traditionellen relationalen Datenbankdesigns effektiv sein. In der Zwischenzeit fungiert der Kandidatenschlüssel als eindeutige Kennung und als Hauptfokus von SQL und anderen Abfragen.