Database
 sql >> Datenbank >  >> RDS >> Database

Was ist ein Kandidatenschlüssel im Datenbankdesign?

Ein Kandidatenschlüssel ist ein wichtiges Konzept bei der Datenbanknormalisierung. Lesen Sie weiter, um herauszufinden, was ein Kandidatenschlüssel ist und wie Sie überprüfen können, ob ein Satz von Attributen ein Kandidatenschlüssel ist.

Der Kandidatenschlüssel, auch einfach als Schlüssel bezeichnet ist ein wichtiger Bestandteil des Datenbankdesigns. Es ist die theoretische Grundlage für technische Konzepte wie primäre und alternative (eindeutige) Schlüssel. Jeder Datenbankdesigner sollte wissen, wie er Kandidatenschlüssel identifiziert und den richtigen für seine Tabelle auswählt.

Das Konzept des Kandidatenschlüssels wird in allen universitären Datenbankkursen als Teil der Theorie der Datenbanknormalisierung gelehrt. Die häufigsten Probleme, denen Sie beim Lernen von Kandidatenschlüsseln gegenüberstehen, bestehen darin, zu überprüfen, ob ein bestimmter Satz von Attributen ein Kandidatenschlüssel ist, und alle Kandidatenschlüssel für eine Beziehung zu finden.

Das Verständnis von Kandidatenschlüsseln ist wichtig, um die normalen Formen in Datenbanktabellen zu verstehen. Dieses Wissen wird Ihnen helfen, sich die Regeln für die häufigsten Normalformen zu merken.

In diesem Artikel erklären wir das Konzept der Kandidatenschlüssel in einfachen Worten. Außerdem zeigen wir Ihnen, wie Sie überprüfen können, ob ein Satz von Attributen ein Kandidatenschlüssel ist.

Grundlegende Terminologie zur Datenbanknormalisierung

Bevor Sie etwas über Kandidatenschlüssel lesen, machen Sie sich mit der grundlegenden Normalisierungsterminologie vertraut. Lassen Sie uns kurz die wichtigsten Begriffe wiederholen.

Eine Beziehung ist der theoretische Name für eine Datenbanktabelle. Eine Relation (Tabelle) hat einen Namen und besteht aus benannten Attributen (Spalten).

Eine funktionale Abhängigkeit in einer Relation (A -> B ) sagt Ihnen, dass immer dann, wenn zwei Zeilen dieselben Werte für alle Attribute in Satz A haben, sie auch dieselben Werte für alle Attribute in Satz B haben werden.

Die Schließung einer Menge von Attributen ist die Menge derjenigen Attribute, die aus dieser Menge funktional bestimmt werden können. Sie können den Algorithmus zur Berechnung des Abschlusses von Attributen hier überprüfen.

Superschlüssel

Informell ist ein Kandidatenschlüssel ein Satz von Attributen, die eine Zeile eindeutig identifizieren.

Per Definition ist ein Kandidatenschlüssel ein minimaler Superschlüssel. Also, was bedeutet das? Ein Superschlüssel ist ein Attribut oder eine Menge von Attributen, sodass alle Attribute in der Relation abgeschlossen sind.

Sehen wir uns einige Beispiele an. Hier haben wir die CourseEditions-Tabelle. Es speichert Informationen über Kurseditionen.

Jedes Jahr kann ein bestimmter Kurs von einem anderen Lehrer mit einem anderen Preis und einem anderen Limit an Plätzen unterrichtet werden. Damit haben wir folgende funktionale Abhängigkeiten:

  • id -> Kurs, Jahr, Lehrer, Preis, Plätze – die ID bestimmt alle anderen Attribute
  • Kurs, Jahr -> ID, Lehrer, Preis, Plätze – Der Kurs und das Jahr bestimmen die ID, den Lehrer, den Preis und die Plätze.

Kursausgaben

id Kurs Jahr Lehrer Preis Flecken
1 Datenbanken 2019 Chris Cape 100 45
2 Mathematik 2019 Daniel Parr 80 34
3 Datenbanken 2020 Jennifer-Uhr 110 30

Was sind die Superkeys in dieser Tabelle? Zunächst bilden alle Attribute einen Superschlüssel, also die Menge {ID, Kurs, Jahr, Lehrer, Preis, Spots} ist ein Superschlüssel. Denken Sie daran, dass die Menge aller Attribute in allen Tabellen ein Superkey ist.

Gibt es kleinere Superkeys in dieser Tabelle? Ja, das gibt es. Der Satz {id} ist ein Superschlüssel. Wir haben die funktionale Abhängigkeit id -> Kurs, Jahr, Lehrer, Preis, Plätze , und natürlich haben wir die triviale Abhängigkeit id -> id . Sobald wir die id, haben alle anderen Attribute können wir aus den funktionalen Abhängigkeiten ermitteln.

Die Menge {Kurs, Jahr} ist auch ein Superschlüssel. Wir haben die funktionale Abhängigkeit Kurs, Jahr -> ID, Lehrer, Preis, Plätze , und wir haben die trivialen funktionalen Abhängigkeiten Kurs -> Kurs und Jahr -> Jahr . Sobald wir Kurs haben und Jahr , können wir alle anderen Attribute aus den funktionalen Abhängigkeiten ermitteln.

Der Satz {ID, Kurs, Jahr, Lehrer} ist auch ein Superschlüssel. Wir haben id , Kurs , und Jahr . Mit diesen drei Attributen können wir also alle anderen Attribute in der Tabelle bestimmen.

Andererseits die Menge {Lehrer} ist kein Superschlüssel. Wenn wir den Lehrer kennen, Wir können kein anderes Attribut als den Lehrer bestimmen. Das Set {Lehrer, Preis} ist auch kein Superkey. Sobald wir Lehrer haben und Preis , können wir keine weiteren Attribute ermitteln.

Minimale Superkeys

Nicht alle Superschlüssel sind Kandidatenschlüssel. Um ein Kandidatenschlüssel zu sein, muss ein Superschlüssel minimal sein was bedeutet, dass es kein Superschlüssel mehr ist, wenn Sie irgendwelche Attribute daraus entfernen. Sehen wir uns einige Beispiele an.

Der Satz {id} ist ein Superschlüssel, und es ist minimal. Sie können ihm keine Attribute entnehmen, weil Sie dann eine leere Menge haben, und eine leere Menge ist kein Superschlüssel. Somit ist die Menge {id} ist ein Kandidatenschlüssel.

Die Menge {Kurs, Jahr} ist auch ein Superschlüssel und ein Kandidatenschlüssel. Wenn Sie eines der Attribute daraus entfernen, ist der verbleibende Satz kein Superschlüssel mehr. Sie benötigen beide Kurs und Jahr um die anderen Attribute in der Menge zu bestimmen.

Der Satz {ID, Kurs, Jahr, Lehrer} ist ein Superschlüssel, aber kein Kandidatenschlüssel. Wenn Sie beispielsweise das Attribut Lehrer entfernen der verbleibende Satz ist immer noch ein Superschlüssel. Tatsächlich können Sie in diesem Fall jedes Attribut aus {ID, Kurs, Jahr, Lehrer} entfernen , und der verbleibende Satz ist immer noch ein Superschlüssel.

Beachten Sie, dass ein minimaler Superschlüssel nicht den Superschlüssel mit der kleinsten Anzahl von Elementen bedeutet. Beide {id} und {Kurs, Jahr} sind Kandidatenschlüssel, obwohl sie eine andere Anzahl von Elementen haben.

Algorithmus:Verifizieren, dass ein Satz von Attributen ein Kandidatenschlüssel ist

Dies ist das allgemeine Problem beim Datenbankdesign:Wie überprüfen Sie, ob ein Satz von Attributen ein Kandidatenschlüssel ist?

Hier ist der Algorithmus zur Überprüfung:

  • Schritt 1:Überprüfen Sie, ob der gegebene Satz ein Superschlüssel ist. Berechnen Sie den Abschluss von Attributen in der Menge. Wenn der Abschluss die Menge aller Attribute ist, ist die Menge ein Superschlüssel.
  • Schritt 2:Überprüfen Sie, ob der Superkey minimal ist. Entfernen Sie jedes Attribut einzeln. Wenn der verbleibende Satz ein Superschlüssel ist, ist der Superschlüssel nicht minimal, und der Satz ist kein Kandidatenschlüssel. Wenn Sie keines der Attribute entfernen und die Superkey-Eigenschaft beibehalten können, ist der Satz ein Kandidatenschlüssel.

Lassen Sie uns zum Beispiel prüfen, ob die Menge {Kurs, Jahr} ist in der Tat ein Kandidatenschlüssel.

  • Schritt 1:Berechnen wir den Abschluss von {Kurs, Jahr}. Unter Verwendung des Abschlussalgorithmus schlussfolgern wir, dass der Abschluss tatsächlich {id, course, year, Teacher, price, spots} ist. Also die Menge {Kurs, Jahr} ist in der Tat ein Superschlüssel.
  • Schritt 2. Versuchen wir, Kurs zu entfernen aus dem Satz. Übrig bleibt die Menge {year}. Es gibt keine funktionale Abhängigkeit mit nur Jahr als linke Seite. Somit ist der Abschluss dieses Satzes {year} . Ebenso, wenn wir das Attribut Jahr, entfernen der Abschluss des verbleibenden Satzes ist {Kurs}. Weder {year} noch {Kurs} sind Superschlüssel, also die Menge {Kurs, Jahr} ist ein minimaler Superschlüssel und somit ein Kandidatenschlüssel.

Wenn Ihnen dieser Artikel gefallen hat, sehen Sie sich andere Normalisierungsartikel in unserem Blog an.

Wenn Sie ein Student sind, der Datenbankkurse belegt, erstellen Sie unbedingt ein kostenloses akademisches Konto in Vertabelo, unserem Online-Tool zum Zeichnen von ER-Diagrammen. Es ermöglicht Ihnen, logische und physische ER-Diagramme direkt in Ihrem Browser zu zeichnen.

Vertabelo unterstützt PostgreSQL, SQL Server, Oracle, MySQL, Google BigQuery, Amazon Redshift und andere relationale Datenbanken. Probieren Sie es aus und sehen Sie, wie einfach der Einstieg ist!