|
Im Gegensatz zum GBM gibt es im relationalen Modell kein Konstrukt, mit dem Beziehungen zwischen Tupeln explizit modelliert werden können. Beziehungen werden hier implizit mit Hilfe des Primär-Fremdschlüssel-Konzepts dargestellt.
Eine Beziehung zwischen zwei Relationen wird nun so hergestellt, dass die
Domänen des Primärschlüssels der einen Relation in die zweite Relation als
Fremdschlüsseldomänen (mit entsprechenden Attributen) aufgenommen
werden.
Referenzielle Integritätsbedingungen
verlangen, dass aktuelle Fremdschlüsselwerte sich immer nur auf
Primärschlüsselwerte von existierenden Tupeln beziehen.
Formal ausgedrückt heisst dies:
Gegeben sind:
t1
einer Relation
R1
mit dem Schema R1=(A1, ..., Am, ...)
, wobei Ai
die Primärschlüssel-Attribute sind.
t2
einer Relation
R2
mit dem Schema R2=(B1, B2, ..., Bn, ..., A1, ..., Am, ...)
,
wobei Ai
die Fremdschlüssel-Attribute
sind.
Das Tupel t2
ist genau dann
referenziell integer, wenn ein Tupel t1
existiert mit der Eigenschaft t1.Ai=t2.Ai (i=1, ...,
m)
oder wenn t2.Ai =NULL (i=1, ...,
m)
gilt.
Bildlich betrachtet, muss jedes
Tupel der Fremdschlüssel-Relation ein Tupel der Primärschlüssel-Relation
referenzieren (oder auf NULL gesetzt sein). Daher spricht man im Zusammenhang
mit referenzieller Integrität auch davon, dass keine „hängenden Referenzen“
existieren dürfen (also Verweise auf etwas, das nicht existiert).
Das Relationenschema mit dem Fremdschlüssel wird als
referenzierendes, das mit dem entsprechenden
Primärschlüssel als referenziertes Relationenschema
bezeichnet. Ein Fremdschlüssel kann dabei auch das eigene
Relationenschema referenzieren. Die meisten der heutigen relationalen
Datenbanksysteme unterstützen die automatische Einhaltung der referenziellen
Integrität.
Die Tabelle „Abteilung“ hat die Abteilungsnummer als Primärschlüssel.
Dieser wird in der Tabelle Mitarbeiter als Fremdschlüssel verwendet, um die
Abteilungszugehörigkeit eines Mitarbeiters zu fixieren. Die
Fremd-Primärschlüssel-Beziehung erfüllt die Regel der referenziellen Integrität,
falls alle Abteilungsnummern des Fremdschlüssels aus der Tabelle „Mitarbeiter“ in
der Tabelle „Abteilung“ als Primärschlüsselwerte aufgeführt sind. In unserem
Beispiel ist also die Regel der referentiellen Integrität nicht
verletzt.
Nehmen wir an, wir möchten in die Tabelle
„Mitarbeiter“, ein neues Tupel „Id: 4, Weber, A5“ einfügen. Unsere
Einfügeoperation wird abgewiesen, wenn das Datenbanksystem die referenzielle
Integrität unterstützt. Der Wert A5 wird nämlich als ungültig erklärt, da er in
der referenzierten Tabelle „Abteilung“ nicht vorkommt.