Primär- und Fremdschlüssel

Primärschlüssel (PK, Primary Key)

Der Primärschlüssel dient zur eindeutigen Identifizierung eines Datensatzes in einer Tabelle. Es gibt verschiedene Arten von Primärschlüsseln:

  • Eindeutiger Primärschlüssel:

Es wird ein eindeutiges Attribut einer Tabelle als Schlüssel verwendet, z.B. die Personalausweisnummer

  • Zusammengesetzter Primärschlüssel:

Mehrere Attribute einer Tabelle werden kombiniert und als Schlüssel definiert, z.B. Nachname, Ort und Geburtstag. Hierbei muss sichergestellt werden, dass jede Kombination nur einmal vorhanden ist.

  • Künstlicher Primärschlüssel:

Gibt es in einer Tabelle keine eindeutigen Schlüssel, so kann man einen künstlichen Schlüssel definieren. Hierzu wird meist eine fortlaufende Nummer als ID verwendet, um einen Datensatz eindeutig zu identifizieren. Der sogenannte surrogate primary key wird in der Praxis am häufigsten verwendet.

In unserer Testdatenbank „Sakila“ werden ausschließlich surrogate primary keys verwendet. In der Tabelle Actor ist z.B. die ACTOR_ID der eindeutige Primärschlüssel:

Wie wir sehen entspricht die actor_id einer fortlaufenden Nummer als ID, es wird hier also der surrogate primary key genutzt:

Fremdschlüssel (FK, Foreign Key)

Ein Fremdschlüssel verweist auf einen Primärschlüssel einer anderen oder dergleichen Tabelle und dient dazu Verbindungen zwischen verschiedenen Tabellen herstellen zu können. Der Fremdschlüssel muss die referentielle Integrität der Daten sicherstellen, d.h. er darf nur Werte annehmen, die in der Referenztabelle mit entsprechendem Wert im Primärschlüssel vorhanden sind.

Beispiel:

Die Tabelle FILM_ACTOR besitzt 2 Fremdschlüssel, die eine Verknüpfung mit der FILM und der ACTOR Tabelle ermöglicht:

  1. Der FK Actor_ID aus der Film_Actor Tabelle entspricht dem PK Actor_id aus der Actor Tabelle
  2. Der FK Film_ID aus der Film_Actor Tabelle entspricht dem PK Film_id aus der Film Tabelle

Im ER Modell sieht die Verbindung der 3 Tabellen wie folgt aus:

Durch die Verknüpfung über die Fremdschlüssel können wir uns zu unserer FILM_ACTOR Tabelle z.B. alle Filmtitle ausgeben lassen, in denen die Schauspielerin Penelope Guiness mitspielt:

Wie die SQL-Syntax zu einer Ausgabe von Datensätzen über verschiedene Tabellen aussieht, wird im kommenden Beitrag über JOINS erklärt.

(Visited 26.421 times, 4 visits today)

6 Antworten auf „Primär- und Fremdschlüssel“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert