Logo des digitalen Schulbuchs inf-schule.de. Schriftzug in Zustandsübergangsdiagramm eines endlichen Automaten.

Fachkonzept - Beziehungen zwischen Tabellen

Fremdschlüssel

Es ist oft nicht sinnvoll, alles in einer Tabelle zu speichern. Wie du am Beispiel mit den Kontinent-Daten in der Land-Tabelle gesehen hast, passieren dabei schnell Fehler: falsche Schreibweisen oder unterschiedliche Daten für den gleichen Kontinent.

Solche falschen (Fachbegriff: inkonsistente) oder mehrfach gespeicherte (Fachbegriff: redundante) Daten versucht man zu vermeiden.

Dazu werden die Daten in mehrere Tabellen aufgetrennt und Verweise zeigen dann nur auf "verwandte" Daten.

So sieht das im Beispiel mit der ursprünglichen land-Tabelle aus:

Aufteilen einer Tabelle

Mit der Aufteilung werden alle Daten zu Europa nur noch in einem Datensatz gespeichert. Damit treten zumindest schon einmal keine redundanten Daten mehr auf. Und auch die Fehlerquelle für mögliche inkonsistente Daten ist leichter zu finden.

Ein Fremdschlüssel ist ein Attribut in einer Tabelle, das auf den Primärschlüssel einer anderen Tabelle verweist.

Ist der Primärschlüssel aus mehreren Attributen zusammengesetzt, so müssen auch alle Fremdschlüssel aus diesen Attributen bestehen. Das versucht man in der Regel aber zu vermeiden.

Merkhilfe: Einen Fremdschlüssel kannst du dir ähnlich vorstellen wie ein Link im Internet. Suchst du z.B. in Wikipedia den Artikel zu Deutschland und willst dann mehr über Europa wissen, so gelangst du über einen Link zu den gespeicherten Daten zu Europa. Wieder werden die Daten zu Europa separat gespeichert, um sie nicht (redundant) mehrfach zu speichern.

Über den Fremdschlüssel werden zwei Tabellen miteinander verbunden. Dies stellt eine Beziehung zwischen zwei Tabellen dar. Beziehungen sind nach den Tabellen das zweite wichtige Konzept von relationalen Datenbanken.

Beziehung zwischen Land und Kontinent

Ein relationales Datenbanksystem kann solche Beziehungen garantieren. Das bedeutet, dass nur Werte in den Fremdschlüsseln erlaubt werden, die auch in der Haupttabelle vorhanden sind. Du kannst also z.B. kein Land mit der KNR "xy" speichern - einen solchen Schlüsselwert gibt es in der kontinent-Tabelle nicht.

Das Datenbanksystem erzeugt dann eine Fehlermeldung, dass eine Bedingung (constraint) verletzt wurde:

Fremdschlüssel-Verletzung

X

Fehler melden

X

Suche