Erste Seite Zurück Weiter Letzte Seite Übersicht Grafik

Beziehungen zwischen Tabellen


Notizen:

Eine Beziehung zwischen zwei Tabellen A und B bedeutet, dass zu einem Datensatz einer Tabelle A bestimmte Datensätze der Tabelle B gehören. In der Tabelle B wird dazu in einem Datensatz ein Verweis auf einen Datensatz in der Tabelle A gespeichert. Tabelle A nennen wir in diesem Zusammenhang die Kopf- oder Mastertabelle, Tabelle B ist in diesem Sinn eine Detailtabelle.
Beziehungen werden implementiert, indem man in der Detailtabelle die Spalte(n) eines Schlüsselkandidaten einer anderen Tabelle aufnimmt.
Definition: Fremdschlüssel (Foreign Key):
Ein Fremdschlüssel besteht aus einem oder mehreren Feldern, die einen Verweis auf einen Schlüsselkandidaten einer anderen Tabelle herstellen.
Anm.: Es gibt Datenbanksysteme, die für einen Fremdschlüssel den Verweis auf den Primärschlüssel der Kopftabelle erzwingen, z.B. DB/2.
Definition: Referenzielle Integrität Zu jedem Wert eines Fremdschlüssels muss der entsprechende Wert im Schlüsselkandidat in jener Tabelle existieren, zu der eine Beziehung besteht.
Das Datenbanksystem ist dafür verantwortlich, dass Referenzielle Integrität zwischen Tabellen besteht. Das DB-System muss also dafür sorgen, dass man
keinen Fremdschlüssel in Tabelle eintragen kann, für den es in der in zugehörigen Kopftabelle keinen entsprechenden Datensatz gibt
keinen Datensatz aus der Kopftabelle löschen kann, wenn sein Schlüssel in einer anderen Tabelle als Fremdschlüssel verwendet wird
Das eben Gesagte gilt selbstverständlich nicht nur für das Einfügen in Detailtabellen und das Löschen aus Kopftabellen, sondern auch für das Ändern von Datensätzen:
Es darf kein Fremdschlüssel eines Datensatzes in einer Detailtabelle auf einen Wert geändert werden, der im zugehörigen Schlüsselkandidat der Kopftabelle nicht existiert
Es darf kein Schlüsselkandidat der Kopftabelle verändert werden, wenn noch zugehörige Datensätze in einer Detailtabelle existieren.
Datenbankpraxis: würde sich der Wert eines Schlüssels in der Kopftabelle ändern, würde die Beziehung zu einem oder mehreren Datensätzen in der Detailtabelle verloren gehen. DBMS unterstützen daher die sog. „Änderungsweitergabe“ oder „Kaskade“. D.h., wenn sich der Schlüssel in der Kopftabelle ändert, werden alle betroffenen Schlüssel in der Detailtabelle automatisch mit geändert. Weiters gibt es noch die sog. „Löschweitergabe“. Das bedeutet, dass beim Löschen eines Datensatzes in der Kopftabelle automatisch alle in Beziehung stehenden Datensätze in der Detailtabelle mit gelöscht werden. Achtung: das ist sehr oft nicht sinnvoll!
Es gibt übrigens noch andere Möglichkeiten, wie ein Datenbanksystem auf eine versuchte Verletzung der Referenziellen Integrität reagieren kann. Wir lernen Aspekte der Referenziellen Integrität gemeinsam mit diesen Operationen in größerer Detailliertheit weiter unten kennen.