Zum Inhalt springen

Primärschlüssel und Fremdschlüssel – einfach erklärt!

  • Daten

Eine Datenbank benötigt Primärschlüssel und Fremdschlüssel zur Erstellung und Definition eines eindeutigen Datenmodells. Damit lassen sich Beziehungen zwischen einzelnen Tabellen in einer relationalen Datenbank aufbauen. Dadurch ist die Integrität, also die Korrektheit, Vollständigkeit und Konsistenz, einer Datenbank sichergestellt.

In diesem Artikel beschäftigen wir uns im Detail mit Primär- und Fremdschlüsseln und stellen deren verschiedene Arten anhand eines einfachen Beispiels an. Außerdem untersuchen wir die Aufgabe dieser Schlüssel im Aufbau von intelligenten Datenbankschemata und erklären, wie die Schlüssel mithilfe von SQL erstellt werden können. 

Was ist ein Primärschlüssel?

Jede Tabelle in einer Datenbank hat im Idealfall eine Spalte oder eine Kombination aus mehreren Spalten, die einen eindeutigen Wert für einen Datensatz aufweisen. Diese Spalte oder mehrere gemeinsame Spalten werden als Primärschlüssel der Tabelle bezeichnet. Er sorgt dafür, dass jeder Datensatz, also jede Zeile der Tabelle, eindeutig identifiziert werden kann. Das bietet die Möglichkeit mithilfe einer SQL-Abfrage auf einzelne Datensätze zuzugreifen.

Wenn eine Tabelle keine Spalte mit eindeutigen Werten besitzt, können auch mehrere Spalten genutzt werden, um diese Eindeutigkeit herzustellen. Dadurch werden verschiedene Arten von primären Schlüsseln unterschieden.

Welche Arten von primären Schlüsseln gibt es?

Je nachdem, ob ein Attribut eindeutige Werte oder nicht, unterscheidet man verschiedene Arten von primären Schlüsseln.

Eindeutiger Schlüssel

Wenn es genau eine Spalte bestehend aus eindeutigen Werten gibt, dann hat man einen eindeutigen Schlüssel. Wenn es mehrere solcher Spalten geben sollte, kann man sich entscheiden, welches der Attribute man nutzen will, denn jede Tabelle kann lediglich einen Primärschlüssel haben. Häufige Beispiele für eindeutige Schlüssel sind beispielsweise Sozialversicherungsnummern, Auftragsnummern oder Ausweisnummern. Zusätzlich ist es wichtig, dass der Primärschlüssel keine Nullwerte besitzen darf und somit jeder Datensatz in der Tabelle einen eindeutigen Wert in dieser Spalte besitzt. 

Eindeutiger Schlüssel | Quelle: Autor

In dieser Tabelle weist nur das Attribut “Auftragsnummer” eindeutige Werte auf und bietet sich auch deshalb an, weil die Auftragsnummer weiterhin einzigartig bleiben wird.

Zusammengesetzter Schlüssel

Wenn es keines dieser Attribute in einer Tabelle gibt, das lediglich eindeutige Werte aufweist, muss man möglicherweise auf einen zusammengesetzten Schlüssel zurückgreifen. Dabei wird durch die Kombination aus verschiedenen Attributen eindeutige Werte für eine Zeile erzeugt.

Zusammengesetzter Schlüssel | Quelle: Autor

Mit einer kleinen Änderung zu der vorherigen Tabelle hat die Spalte “Auftrags ID” nicht mehr eindeutige Werte, da eine Auftragsnummer öfters auftreten kann, wenn die Bestellung mehrere Positionen hat. Aus diesem Grund muss der primäre Schlüssel aus zwei zusammengesetzten Attributen bestehen. Für jeden Auftrag gibt es nämlich nur einen Datensatz für die erste Position. Somit sind die zwei Spalten “Auftrags ID” und “Positions ID” zusammen wieder eindeutig.

Künstlicher Schlüssel

In seltenen Fällen kann es passieren, dass auch das Zusammenziehen mehrerer Spalten nicht zu den gewünschten, eindeutigen Werten führt. Dann muss man darauf zurückgreifen eine neue Spalte anzulegen, in der man einen künstlichen Schlüssel anlegt. Dieser kann beispielsweise die Datensätze einfacher durchnummerieren.

Künstlicher Schlüssel | Quelle: Autor

In dieser leicht abgewandelten Tabelle gibt es nun keine einzelne Spalte und auch keine Kombination aus Attributen, die eindeutig sind. Deshalb fügt man die zusätzliche Spalte “ID” ein, die die einzelnen Datensätze durchnummeriert. Somit enthält die Spalte “ID” nur eindeutige Werte und jeder Datensatz kann eindeutig angesprochen werden.

Was ist ein Fremdschlüssel?

Der Fremdschlüssel ist ein Attribut oder eine Kombination aus mehreren Attributen, das in einer anderen Tabelle der primäre Schlüssel ist. Dadurch lassen sich in Datenbanken Verbindungen zwischen Tabellen herstellen. Abhängig vom primären Schlüssel in der anderen Tabelle, kann es sich um einen zusammengesetzten oder eindeutigen Fremdschlüssel handeln.

Fremdschlüssel Beziehung zweier Tabellen | Quelle: Autor

Wichtig ist dabei jedoch zu erwähnen, dass der fremde Schlüssel in der eigenen Tabelle nicht eindeutig sein muss, sondern Werte auch öfters vorkommen können. Mithilfe von solchen Verbindungen können große Tabellen, in mehrere, kleinere Tabellen aufgespalten werden, was sowohl Speicherplatz spart, als auch der Übersichtlichkeit dient.

Was ist der Unterschied zwischen Primär- und Fremdschlüssel?

In Datenbankmanagementsystemen werden Primär- und Fremdschlüssel verwendet, um Beziehungen zwischen Tabellen herzustellen. Obwohl beide Arten von Beschränkungen zur Gewährleistung der Datenintegrität verwendet werden, dienen sie unterschiedlichen Zwecken.

Ein Primärschlüssel ist eine Spalte oder eine Gruppe von Spalten in einer Tabelle, die jede Zeile in dieser Tabelle eindeutig identifiziert. Es handelt sich um einen eindeutigen Bezeichner, der innerhalb derselben Tabelle nicht dupliziert werden kann. Ein Primärschlüssel wird verwendet, um die Integrität von Entitäten zu gewährleisten, was bedeutet, dass jede Zeile in der Tabelle eine eindeutige Entität darstellt. Primärschlüssel sind für die Indizierung, Sortierung und Suche von Daten unerlässlich und werden auch verwendet, um Beziehungen zwischen Tabellen herzustellen.

Ein Fremdschlüssel hingegen ist eine Spalte oder ein Satz von Spalten in einer Tabelle, die auf den Primärschlüssel einer anderen Tabelle verweist. Er wird verwendet, um die referenzielle Integrität zu erzwingen, was bedeutet, dass die Werte in der Fremdschlüsselspalte mit den Werten in der Primärschlüsselspalte der referenzierten Tabelle übereinstimmen müssen. Auf diese Weise stellen diese Beziehungen zwischen Tabellen her und gewährleisten, dass die Daten über mehrere Tabellen hinweg konsistent bleiben.

Hier sind einige wesentliche Unterschiede zwischen den beiden Schlüsselarten:

  • Primärschlüssel werden verwendet, um eindeutige Zeilen innerhalb einer Tabelle zu identifizieren, während Fremdschlüssel verwendet werden, um Beziehungen zwischen Tabellen herzustellen.
  • Primärschlüssel müssen eindeutig sein und dürfen keine Nullwerte enthalten, während Fremdschlüssel Nullwerte enthalten können.
  • Primärschlüssel werden immer auf Tabellenebene definiert, während Fremdschlüssel entweder auf Tabellen- oder auf Spaltenebene definiert werden können.
  • Primärschlüssel können in anderen Tabellen als Fremdschlüssel verwendet werden, während Fremdschlüssel nur auf Primärschlüssel in anderen Tabellen verweisen können.

Zusammenfassend lässt sich sagen, dass sowohl beide Schlüssel wichtige Werkzeuge sind, um die Datenintegrität zu gewährleisten und Beziehungen zwischen Tabellen in einer Datenbank herzustellen. Während Primärschlüssel verwendet werden, um eindeutige Zeilen innerhalb einer Tabelle zu identifizieren, werden Fremdschlüssel verwendet, um Beziehungen zwischen Tabellen zu erstellen, indem auf die ersteren in anderen Tabellen verwiesen wird. Das Verständnis der Unterschiede zwischen diesen beiden Arten von Schlüsseln ist für den Entwurf einer gut strukturierten und effizienten Datenbank unerlässlich.

Wie können die Schlüssel mithilfe von SQL erstellt werden?

In der Praxis erfolgt das Management von Datenbank häufig mithilfe der sogenannten Structured Query Language (SQL), mit der sich verschiedene Funktionalitäten, wie die Abfrage oder das Ändern von Daten umsetzen lässt oder eben auch die Erstellung von Schlüsseln. 

Der Primärschlüssel wird häufig bereits während der Tabellenerstellung definiert. Am oben genannten Beispiel einer Auftragstabelle könnte dies dann folgendermaßen aussehen: 

CREATE TABLE AUFTRAG (
    Auftragsnummer INT PRIMARY KEY,
    Kunde VARCHAR(100),
    Umsatz FLOAT
);

Hierbei werden die einzelnen Spalten und deren Datentyp definiert. Die Spalte „Auftragsnummer“ erhält das zusätzliche Argument „PRIMARY KEY“. Wenn nun neue Daten in die Tabelle geladen wird, checkt die Daten automatisch, dass die Auftragsnummer einzigartig ist und erzeugt ansonsten einen Fehler. 

Falls bei der Erstellung der Datenbank kein Primärschlüssel definiert wurde, kann dies auch nachträglich passieren, wobei dies vermieden werden sollte. Dazu nutzt man den Befehl „ALTER TABLE“, um eine bestehende Tabelle zu verändern. Anschließend kann man mit „ADD CONSTRAINT“ eine Bedingung definieren und anschließend die Spalte festlegen, die als Primärschlüssel verwendet werden soll.

ALTER TABLE Auftrag
ADD CONSTRAINT pk_Auftrag PRIMARY KEY (Auftragsnummer);

Jede Bedingung braucht dabei einen einzigartigen Namen, der im besten Fall noch sprechend ist, damit er auch zu einem späteren Zeitpunkt noch aussagekräftig ist. In unserem Beispiel haben wir uns daher für die Bezeichnung „pk_Auftrag“ entschieden. 

Mit einer ähnlichen Logik kann man auch einen Fremdschlüssel definieren, der im besten Fall auch während der Erstellung einer Tabelle festgelegt wird. Angenommen wir definieren die Tabelle „Auftrag“ anders und hinterlegen direkt den Primärschlüssel und den Fremdschlüssel zu der Tabelle „Kunden“, dann sieht der Befehl wie folgt aus: 

CREATE TABLE AUFTRAG (
    Auftragsnummer INT PRIMARY KEY,
    Kunde VARCHAR(100),
    Umsatz FLOAT,
    FOREIGN KEY (Kunde) REFERENCES Kunden(Kunde)
);

Dieser Befehl legt nun fest, dass die Spalte „Kunde“ in der Tabelle „Auftrag“ auf die Spalte „Kunde“ in der Tabelle „Kunden“ als Fremdschlüssel referenziert. 

Was ist das Stern-Schema?

Bei großen Datenmengen, die in Datenbanken oder im Data Warehouse gespeichert sind, wird es schnell unübersichtlich und Abfragen sind nicht nur kompliziert, sondern dauern auch relativ lange. Daher sind intelligente Wege gefragt, um Tabellen zu erstellen, damit Speicherplatz gespart werden kann und Abfragen schneller erfolgen können.

Ein erster Ansatz dazu ist das Sternschema, das sternförmige Tabellenstrukturen beinhaltet. Es wird zwischen Fakten und Dimensionen unterschieden:

  • Die Fakten sind Kennzahlen oder Messwerte, die analysiert oder abgebildet werden sollen. Sie stehen im Mittelpunkt der Analyse und befinden sich in der zentralen Faktentabelle. Diese besteht neben den Kennzahlen auch aus den Schlüsseln, die sich auf die umliegenden Dimensionen beziehen. Fakten sind im betriebswirtschaftlichen Umfeld z.B. die Absatzmenge, der Umsatz oder der Auftragseingang.
  • Die Dimensionen hingegen sind die Eigenschaften der Fakten und können zur Visualisierung der Kennzahlen verwendet werden. In diesen werden dann die verschiedenen Detaillierungsgrade der Dimensionen gespeichert und so kann Speicherplatz gespart werden, da die Details nur einmal in der Dimensionstabelle gespeichert werden müssen. Dimensionen im Unternehmensumfeld sind z.B. Kundeninformationen, das Datum der Bestellung oder Produktinformationen.

Das Sternschema verzichtet absichtlich auf die Normalisierung, die normalerweise ein wichtiges Konzept in der Datenbanktheorie ist. Die dritte Normalform wird nämlich bei einem Sternschema verletzt. Andererseits ist die Struktur besonders effizient und liefert auch bei komplexen Abfragen schnelle Antworten.

Was ist das Schneeflocken-Schema?

Das sogenannte Schneeflockenschema ist eine weitere Ausbaustufe des Sternschemas mit dem Ziel, die Tabellen vollständig zu normalisieren und damit die Nachteile des Sternschemas bis zu einem gewissen Grad zu umgehen. Die Struktur der Schneeflocke ergibt sich, kurz gesagt, daraus, dass die Dimensionstabellen noch weiter untergliedert und klassifiziert werden. Die Faktentabelle bleibt jedoch unverändert.

In unserem Beispiel könnte dies dazu führen, dass die Dimensionstabelle mit den Lieferadressen weiter in Land, Bundesland und Stadt unterteilt wird. Damit werden die Tabellen normalisiert und auch die dritte Normalform ist erfüllt, allerdings auf Kosten weiterer Verzweigungen. Diese sind insbesondere bei einer späteren Abfrage nachteilig, da diese mit komplexen Joins wieder zusammengesetzt werden müssen.

Die weitere Verzweigung führt also dazu, dass die Daten weniger redundant gespeichert werden und somit die Datenmenge im Vergleich zum Sternschema wieder reduziert wird. Dies geht allerdings auf Kosten der Performance, da die Dimensionstabellen bei der Abfrage wieder zusammengeführt werden müssen, was oft sehr zeitaufwendig ist.

Welche häufigen Fehler können auftreten?

Wenn in einer Datenbank Primär- und Fremdschlüssel gepflegt sind, können in der Praxis Fehler bei der Datenpflege auftreten, die die Arbeit erschweren. Die folgenden Punkte sollten deshalb beachtet werden, da sie häufig auftreten: 

  • Fehlende referentielle Integrität: Wenn ein Fremdschlüssel in einer Tabelle auf einen Primärschlüssel verweist, der nicht mehr existiert kann es zu Inkonsistenzen kommen. Deshalb sollte vor jeder Löschung oder Änderung eines Datensatzes geprüft werden, ob bestimmte Schlüsseleinträge verändert werden müssen. Um das Auftreten solcher Probleme von vornherein zu vermeiden, kann die Datenbank auch so aufgesetzt, dass diese Fälle mithilfe von Constraints automatisch gehandhabt werden. 
  • Komplexität bei der Datenpflege: Einfache Vorgänge wie das Löschen oder Aktualisieren von Datensätzen können durch Schlüsselabhängigkeiten deutlich komplexer werden. Deshalb muss zum Beispiel beim Löschen eines Datensatzes mit einem Primärschlüssel vorher definiert werden, wie die abhängigen Datensätze behandelt werden sollen. Wenn dies nicht passiert, müssen die Datensätze von Hand überprüft und zugeordnet werden, was nicht nur zeitaufwendig, sondern auch fehleranfällig ist. 
  • Vorsicht beim Einfügen von Daten: Beim Einfügen von neuen Datensätzen verweigert die Datenbank die Ausführung, wenn ein Fremdschlüsselwert eingefügt wird, der nicht mit einem Primärschlüsselwert übereinstimmt. Dies kann vor allem auftreten, wenn Daten in einer falschen Reihenfolge importiert werden oder schlicht inkonsistent sind. Deshalb sollte im Vorhinein die Reihenfolge des Imports genau überlegt sein oder es sollte mit temporären Tabellen gearbeitet werden, um diese Probleme zu umgehen. 

Wenn diese Hauptpunkte beachtet werden, wird die Konsistenz der Datenbank gestärkt und langfristig gestaltet sich die Datenbankpflege einfacher. 

Das solltest Du mitnehmen

  • Der Primärschlüssel ist ein oder mehrere Attribute, die jeden Datensatz eindeutig identifizieren.
  • Der Fremdschlüssel besteht aus einem oder mehreren Attributen, die in einer anderen Tabelle ein primärer Schlüssel sind. Dadurch lassen sich Verbindungen zwischen Tabellen in einer Datenbank herstellen.
  • Mithilfe von SQL können solche Schlüsselspalten definiert werden. Im besten Fall werden sie schon bei der Erstellung der Tabelle hinterlegt, jedoch ist es auch möglich sie erst im Nachhinein zu definieren.
  • Je nach Aufbau und Verbindung der Tabellen unterscheidet man das Stern- und Schneeflocken Schema.
  • Die Nutzung von Primär- und Fremdschlüsseln kann zu Problemen bei der Instandhaltung von Datenbanken führen, zum Beispiel beim Löschen oder Aktualisieren von Datensätzen. Deshalb ist es wichtig gewisse Regeln zu beachten, um Problemen aus dem Weg zu gehen.
Outlier Detection / Ausreißererkennung

Was ist Ausreißererkennung?

Entdecken Sie Anomalien in Daten mit Verfahren zur Ausreißererkennung. Verbessern Sie ihre Entscheidungsfindung!

Bivariate Analysis / Bivariate Analyse

Was ist die Bivariate Analyse?

Nutzen Sie die Bivariate Analyse: Erforschen Sie Typen und Streudiagramme und nutzen Sie Korrelation und Regression.

RESTful API

Was ist eine RESTful API?

Erfahren Sie alles über RESTful APIs und wie sie Ihre Webentwicklungsprojekte effizienter und skalierbarer machen können.

Time Series Data / Zeitreihendaten

Was sind Zeitreihendaten?

Gewinnen Sie mithilfe von Analyse- und Prognosetechniken Erkenntnisse aus Zeitreihendaten. Entdecken Sie Trends und Muster!

Balkendiagramm / Bar Chart

Was ist ein Balkendiagramm?

Entdecken Balkendiagramme bei der Datenvisualisierung. Lernen Sie, wie man sie für aufschlussreiche Datenanalyse erstellt und anpasst.

Liniendiagramm / Line Chart

Was ist ein Liniendiagramm?

Meistern Sie die Kunst der Liniendiagramme: Lernen Sie in unserem Leitfaden, wie Sie Trends und Muster visualisieren können.

Andere Beiträge zum Thema Primärschlüssel und Fremdschlüssel

Das Logo zeigt einen weißen Hintergrund den Namen "Data Basecamp" mit blauer Schrift. Im rechten unteren Eck wird eine Bergsilhouette in Blau gezeigt.

Verpass keine neuen Beiträge!

Wir versenden keinen Spam! Lies die Details gerne in unserer Datenschutzrichtlinie nach.

Niklas Lang

Seit 2020 bin ich als Machine Learning Engineer und Softwareentwickler tätig und beschäftige mich leidenschaftlich mit der Welt der Daten, Algorithmen und Softwareentwicklung. Neben meiner Arbeit in der Praxis unterrichte ich an mehreren deutschen Hochschulen, darunter die IU International University of Applied Sciences und die Duale Hochschule Baden-Württemberg, in den Bereichen Data Science, Mathematik und Business Analytics.

Mein Ziel ist es, komplexe Themen wie Statistik und maschinelles Lernen so aufzubereiten, dass sie nicht nur verständlich, sondern auch spannend und greifbar werden. Dabei kombiniere ich praktische Erfahrungen aus der Industrie mit fundierten theoretischen Grundlagen, um meine Studierenden bestmöglich auf die Herausforderungen der Datenwelt vorzubereiten.

Schlagwörter:
Cookie Consent mit Real Cookie Banner