12 Unterschied zwischen Primärschlüssel und Fremdschlüssel mit Beispielen

Contents

Was ist ein Primärschlüssel?

Ein Primärschlüssel ist eine spezielle Tabellenspalte einer relationalen Datenbank (oder eine Kombination von Spalten), die dazu bestimmt ist, jeden Tabellendatensatz eindeutig zu identifizieren. Es handelt sich um eine eindeutige Kennung, wie z. B. eine Führerscheinnummer, eine Telefonnummer (einschließlich Vorwahl) oder eine Fahrgestellnummer (FIN). Eine relationale Datenbank muss immer nur einen Primärschlüssel haben. Primärschlüssel erscheinen normalerweise als Spalten in relationalen Datenbanktabellen.

Die Hauptmerkmale eines Primärschlüssels sind:

  • Sie muss für jede Datenzeile einen eindeutigen Wert enthalten.
  • Es darf keine Nullwerte enthalten.
  • Jede Zeile muss einen Primärschlüsselwert haben.

Ein Primärschlüssel kann ein oder mehrere Felder verwenden, die bereits im zugrunde liegenden Datenmodell vorhanden sind, oder es kann ein spezielles zusätzliches Feld als Primärschlüssel erstellt werden.

Beispiel

In einer Geschäftsbank muss beispielsweise eine Datenbank alle Daten enthalten, die von einer Geschäftsbank gespeichert werden. Zwei der Datenbanktabellen sind der CUSTOMER_MASTER, der grundlegende und statische Kundendaten (Name, Geburtsdatum, Adresse, Sozialversicherungsnummer etc.) speichert und der ACCOUNTS_MASTER, der verschiedene Bankkontodaten (Kontoerstellungsdatum, Kontoart, Auszahlungslimits oder entsprechende Kontoinformationen usw.).

Um Kunden eindeutig zu identifizieren, wird eine Spalte oder eine Kombination von Spalten ausgewählt, um sicherzustellen, dass zwei Kunden niemals denselben eindeutigen Wert haben. Dadurch werden bestimmte Spalten sofort eliminiert, zB Nachname und Geburtsdatum.

Ein guter Primärschlüsselkandidat ist die Spalte, die für die Aufnahme von Sozialversicherungsnummern bestimmt ist. Einige Kontoinhaber haben jedoch möglicherweise keine Sozialversicherungsnummern, sodass die Kandidatur dieser Spalte entfällt.

Die nächste logische Option besteht darin, eine Kombination von Spalten zu verwenden, z. B. das Hinzufügen des Nachnamens zum Geburtsdatum der E-Mail-Adresse, was zu einem langen und umständlichen Primärschlüssel führt.

Am besten erstellen Sie einen separaten Primärschlüssel in einer neuen Spalte namens CUSTOMER_ID. Anschließend generiert die Datenbank jedes Mal, wenn ein Kunde hinzugefügt wird, automatisch eine eindeutige Nummer, die eine eindeutige Identifizierung garantiert.

Die Wahl eines Primärschlüssels in einer relationalen Datenbank hängt oft von den Vorlieben des Administrators ab. Es ist möglich, den Primärschlüssel für eine bestimmte Datenbank zu ändern, wenn sich die spezifischen Bedürfnisse der Benutzer ändern. Beispielsweise können die Personen in einer Stadt in einer Anwendung eindeutig anhand ihrer Führerscheinnummern identifiziert werden, in einer anderen Situation kann es jedoch bequemer sein, sie anhand ihrer Telefonnummern zu identifizieren.

Was Sie über Primärschlüssel wissen müssen 

  • Eine Primärschlüsseleinschränkung ist eine Spalte, die jede Zeile in der Tabelle der relationalen Datenbankverwaltung eindeutig identifiziert.
  • Es wird verwendet, um jeden Datensatz in der Datenbanktabelle eindeutig zu identifizieren.
  • Der Primärschlüssel ist ein Clustered-Index und die Daten in der DBMS-Tabelle sind physisch in der Reihenfolge des Clustered-Index organisiert.
  • Der Primärschlüssel akzeptiert niemals Nullwerte.
  • Sie können einen einzelnen Primärschlüssel in einer Tabelle haben.
  • Der Wert des Primärschlüssels kann nicht aus der übergeordneten Tabelle entfernt werden.
  • Eine Tabelle kann nur einen Primärschlüssel haben.
  • Die Primärschlüsseleinschränkung kann für die temporären Tabellen definiert werden.
  • Keine zwei Zeilen können identische Werte für einen Primärschlüssel haben.
  • Es kann keine Eltern-Kind-Beziehung in einer Tabelle erstellen.
  • Primary ist ein eindeutiges Schlüsselattribut, es kann keine doppelten Werte in Beziehung speichern.
  • Unter Primärschlüsseln kann ein Wert aus der referenzierenden Tabelle gelöscht werden, indem sichergestellt wird, dass der Wert nicht in der Fremdschlüssel-Referenztabelle vorhanden ist.

Was ist ein Fremdschlüssel?

Ein Fremdschlüssel ist eine Spalte oder Gruppe von Spalten in einer relationalen Datenbanktabelle, die eine Verknüpfung zwischen Daten in zwei Tabellen bereitstellt. Es fungiert als Querverweis zwischen Tabellen, da es auf den Primärschlüssel einer anderen Tabelle verweist und dadurch eine Verbindung zwischen ihnen herstellt.

Die Mehrzahl der Tabellen in einem relationalen Datenbanksystem folgt dem Fremdschlüsselkonzept. In komplexen Datenbanken und Data Warehouses müssen Daten in einer Domäne über mehrere Tabellen hinweg hinzugefügt werden, um so eine Beziehung zwischen ihnen aufrechtzuerhalten. Das Konzept der referentiellen Integrität leitet sich aus der Fremdschlüsseltheorie ab.

Während ein Primärschlüssel für sich allein existieren kann, muss ein Fremdschlüssel immer irgendwo auf einen Primärschlüssel verweisen. Die ursprüngliche Tabelle, die den Primärschlüssel enthält, ist die übergeordnete Tabelle (auch als referenzierte Tabelle bezeichnet). Auf diesen Schlüssel kann von mehreren Fremdschlüsseln aus anderen Tabellen, sogenannten “Kindtabellen”, verwiesen werden.

Für jede Spalte, die als Fremdschlüssel fungiert, sollte ein entsprechender Wert in der verknüpften Tabelle vorhanden sein. Beim Einfügen von Daten und Entfernen von Daten aus der Fremdschlüsselspalte ist besondere Vorsicht geboten, da ein unachtsames Löschen oder Einfügen die Beziehung zwischen den beiden Tabellen zerstören kann.

Einfacher ausgedrückt ist ein Fremdschlüssel ein Satz von Attributen, der  auf  einen Kandidatenschlüssel verweist. Beispielsweise kann eine Tabelle namens TEAM ein Attribut MEMBER_NAME haben, das ein Fremdschlüssel ist, der auf einen Kandidatenschlüssel, PERSON_NAME, in der Tabelle PERSON verweist. Da MEMBER_NAME ein Fremdschlüssel ist, muss jeder Wert, der als Name eines Mitglieds in TEAM existiert, auch als Name einer Person in der PERSON-Tabelle vorhanden sein; mit anderen Worten, jedes Mitglied eines TEAMs ist auch eine PERSON.

Was Sie über Fremdschlüssel wissen müssen

  • Ein Fremdschlüssel ist eine Spalte oder Gruppe von Spalten in einer relationalen Datenbanktabelle, die eine Verknüpfung zwischen Daten in zwei Tabellen bereitstellt.
  • Es wird verwendet, um zwei Tabellen miteinander zu verknüpfen.
  • Ein Fremdschlüssel kann nicht automatisch einen Index erstellen, geclustert oder nicht geclustert.
  • Ein Fremdschlüssel kann mehrere Nullwerte akzeptieren.
  • Sie können mehrere Fremdschlüssel in einer Tabelle haben.  
  • Der Wert des Fremdschlüsselwerts kann aus der untergeordneten Tabelle entfernt werden.
  • Eine Tabelle kann mehr als einen Fremdschlüssel haben.
  • Für die lokalen oder globalen temporären Tabellen kann keine Fremdschlüsseleinschränkung definiert werden.
  • Ein Fremdschlüssel kann doppelte Werte enthalten.
  • Es kann eine Eltern-Kind-Beziehung in einer Tabelle erstellen.
  • Doppelte Werte können in der Fremdschlüsselspalte gespeichert werden.
  • Unter Fremdschlüsseln können die Werte ohne Störungen gelöscht werden, da es egal ist, ob der Wert noch in der Primärschlüssel-Referenztabelle vorhanden ist oder nicht.

Unterschied zwischen Primärschlüssel und Fremdschlüssel in Tabellenform

VERGLEICHSGRUNDLAGEPRIMÄRSCHLÜSSELUNBEKANNTER SCHLÜSSEL
BeschreibungEine Primärschlüsseleinschränkung ist eine Spalte, die jede Zeile in der Tabelle der relationalen Datenbankverwaltung eindeutig identifiziert.  Ein Fremdschlüssel ist eine Spalte oder Gruppe von Spalten in einer relationalen Datenbanktabelle, die eine Verknüpfung zwischen Daten in zwei Tabellen bereitstellt.  
FunktionEs wird verwendet, um jeden Datensatz in der Datenbanktabelle eindeutig zu identifizieren.  Es wird verwendet, um zwei Tabellen miteinander zu verknüpfen.  
IndizierungDer Primärschlüssel ist ein Clustered-Index und die Daten in der DBMS-Tabelle sind physisch in der Reihenfolge des Clustered-Index organisiert.  Ein Fremdschlüssel kann nicht automatisch einen Index erstellen, geclustert oder nicht geclustert.  
NullwerteDer Primärschlüssel akzeptiert niemals Nullwerte.  Ein Fremdschlüssel kann mehrere Nullwerte akzeptieren.  
NaturSie können einen einzelnen Primärschlüssel in einer Tabelle haben.  Sie können mehrere Fremdschlüssel in einer Tabelle haben.   
WertentfernungDer Wert des Primärschlüssels kann nicht aus der übergeordneten Tabelle entfernt werden.  Der Wert des Fremdschlüsselwerts kann aus der untergeordneten Tabelle entfernt werden.  
TabelleEine Tabelle kann nur einen Primärschlüssel haben.  Eine Tabelle kann mehr als einen Fremdschlüssel haben.  
DefinitionDie Primärschlüsseleinschränkung kann für die temporären Tabellen definiert werden.  Für die lokalen oder globalen temporären Tabellen kann keine Fremdschlüsseleinschränkung definiert werden.  
Doppelte WerteKeine zwei Zeilen können identische Werte für einen Primärschlüssel haben.  Ein Fremdschlüssel kann doppelte Werte enthalten.  
Eltern-Kind-BeziehungEs kann keine Eltern-Kind-Beziehung in einer Tabelle erstellen.  Es kann eine Eltern-Kind-Beziehung in einer Tabelle erstellen.  
Doppelte WertePrimary ist ein eindeutiges Schlüsselattribut, es kann keine doppelten Werte in Beziehung speichern.  Doppelte Werte können in der Fremdschlüsselspalte gespeichert werden.  
StreichungUnter Primärschlüsseln kann ein Wert aus der referenzierenden Tabelle gelöscht werden, indem sichergestellt wird, dass der Wert nicht in der Fremdschlüssel-Referenztabelle vorhanden ist.  Unter Fremdschlüsseln können die Werte ohne Störungen gelöscht werden, da es egal ist, ob der Wert noch in der Primärschlüssel-Referenztabelle vorhanden ist oder nicht.  

osky