Skip to main content

Primär- und Fremddatenbankschlüssel

C Programming Tutorial | Learn C programming | C language (Juni 2026)

C Programming Tutorial | Learn C programming | C language (Juni 2026)
Anonim

Wie Sie vielleicht bereits wissen, verwenden Datenbanken Tabellen, um Informationen zu organisieren. (Wenn Sie nicht mit den Datenbankkonzepten vertraut sind, lesen Sie Was ist eine Datenbank?) Jede Tabelle besteht aus einer Reihe von Zeilen, die jeweils einem einzelnen Datenbanksatz entsprechen. Wie halten Datenbanken also all diese Aufzeichnungen aufrecht? Es geht um die Verwendung von Schlüsseln.

Primärschlüssel

Der erste Schlüsseltyp, den wir besprechen, ist der Primärschlüssel. Jede Datenbanktabelle sollte mindestens eine Spalte als Primärschlüssel enthalten. Der Wert, den dieser Schlüssel enthält, sollte für jeden Datensatz in der Datenbank eindeutig sein.

Nehmen wir beispielsweise an, wir haben eine Tabelle mit dem Namen Angestellte, die Personalinformationen für jeden Angestellten in unserer Firma enthält. Wir müssen einen geeigneten Primärschlüssel auswählen, der jeden Mitarbeiter eindeutig identifiziert. Ihr erster Gedanke wäre, den Namen des Mitarbeiters zu verwenden. Dies würde nicht sehr gut funktionieren, da es denkbar ist, dass Sie zwei Mitarbeiter mit demselben Namen einstellen. Eine bessere Wahl könnte die Verwendung einer eindeutigen Mitarbeiter-ID sein, die Sie jedem Mitarbeiter bei seiner Einstellung zuweisen. Einige Organisationen verwenden Sozialversicherungsnummern (oder ähnliche Regierungskennzeichen) für diese Aufgabe, da jeder Mitarbeiter bereits über eine verfügt und diese garantiert eindeutig sind. Die Verwendung von Sozialversicherungsnummern für diesen Zweck ist jedoch aus Datenschutzgründen sehr umstritten. (Wenn Sie für eine staatliche Organisation arbeiten, kann die Verwendung einer Sozialversicherungsnummer nach dem Privacy Act von 1974 sogar illegal sein.) Aus diesem Grund haben sich die meisten Organisationen auf die Verwendung eindeutiger Identifikatoren (Personalausweis, Studentenausweis etc.) .) die diese Datenschutzbedenken nicht teilen.

Wenn Sie sich für einen Primärschlüssel entschieden und die Datenbank eingerichtet haben, erzwingt das Datenbankverwaltungssystem die Eindeutigkeit des Schlüssels. Wenn Sie versuchen, einen Datensatz in eine Tabelle mit einem Primärschlüssel einzufügen, der einen vorhandenen Datensatz dupliziert, schlägt das Einfügen fehl.

Die meisten Datenbanken können auch eigene Primärschlüssel generieren. Microsoft Access kann beispielsweise so konfiguriert werden, dass der Datentyp AutoNumber verwendet wird, um jedem Datensatz in der Tabelle eine eindeutige ID zuzuweisen. Obwohl dies effektiv ist, ist dies eine schlechte Entwurfspraxis, da in jedem Datensatz in der Tabelle ein sinnloser Wert verbleibt. Warum nicht diesen Platz nutzen, um etwas Nützliches zu speichern?

Fremde Schlüssel

Der andere Typ ist der Fremdschlüssel, der zum Erstellen von Beziehungen zwischen Tabellen verwendet wird. In den meisten Datenbankstrukturen gibt es natürliche Beziehungen zwischen Tabellen. Stellen Sie sich vor, wir möchten zu unserer Employee-Datenbank zurückkehren und möchten der Tabelle eine Tabelle mit Abteilungsinformationen hinzufügen. Diese neue Tabelle könnte als Abteilungen bezeichnet werden und würde eine große Menge an Informationen über die gesamte Abteilung enthalten. Wir möchten auch Informationen zu den Mitarbeitern in der Abteilung aufnehmen, aber es wäre überflüssig, dieselben Informationen in zwei Tabellen (Mitarbeiter und Abteilungen) zu haben. Stattdessen können wir eine Beziehung zwischen den beiden Tabellen erstellen.

Nehmen wir an, dass in der Tabelle Departments die Spalte Department Name als Primärschlüssel verwendet wird. Um eine Beziehung zwischen den beiden Tabellen zu erstellen, fügen wir der Employees-Tabelle eine neue Spalte mit dem Namen Department hinzu. Wir geben dann den Namen der Abteilung an, zu der jeder Mitarbeiter gehört. Wir informieren das Datenbankverwaltungssystem auch darüber, dass die Abteilungsspalte in der Employees-Tabelle ein Fremdschlüssel ist, der auf die Departments-Tabelle verweist. Die Datenbank erzwingt dann die referenzielle Integrität, indem sichergestellt wird, dass alle Werte in der Spalte "Abteilungen" der Tabelle "Employees" entsprechende Einträge in der Tabelle "Departments" haben.

Beachten Sie, dass für einen Fremdschlüssel keine Eindeutigkeitsbeschränkung besteht. Wir können (und haben höchstwahrscheinlich) mehr als einen Angestellten, der zu einer einzelnen Abteilung gehört. Ebenso ist es nicht erforderlich, dass ein Eintrag in der Tabelle "Departments" einen entsprechenden Eintrag in der Tabelle "Employees" hat. Es ist möglich, dass wir eine Abteilung ohne Mitarbeiter haben.

Weitere Informationen zu diesem Thema finden Sie unter Erstellen von Fremdschlüsseln.