| |
| * Link führt ins Internet |
|
| |
Fremdschlüssel und referenzielle Integrität
|
|
Die Verknüpfung zwischen Relationen erfolgt über Werte, die als Fremdschlüssel bzw. Foreign Keys bezeichnet werden. Ein Fremdschlüssel ist ein Attribut, das sich auf einen Wert des Primärschlüssels einer anderen oder derselben Relation bezieht.
Die Relation mit dem Primärschlüssel wird häufig als Vater- oder Masterrelation bezeichnet, die Relation mit dem Fremdschlüssel als abhängige Relation.
Am Beispiel "Kunde kauft Produkt" erläutert, ergeben sich folgende Schlüsselsituationen:
Die Tabelle Verkäufe besteht aus den beiden Fremdschlüsseln Produktnr und Kundennr
. In den Relationen Produkte und Kunden werden die Primärschlüssel als Produktnr bzw. Kundennr angelegt.
. Die Relation Verkäufe besitzt Verknüpfungen zur Kunden- und Produkttabelle. Hier sind die Fremdschlüssel Produktnr und Kundennr als Fremdschlüssel definiert.
Referenzielle Integrität
Für Beziehungen über Fremdschlüssel wird in der Regel gefordert, dass für einen Wert des Fremdschlüssels auch immer ein Wert in der Masterrelation besteht. Diese Forderung wird als referenzielle Integrität bezeichnet.
Aus dieser referenziellen Integrität ergeben sich bei Änderungen oder beim Löschen von Datensätzen (Tupeln) Konsequenzen. Wird ein Datensatz aus der Masterrelation gelöscht, sollte automatisch in der abhängigen Relation eine Aktion folgen. Hierzu sind folgende Verhaltensweisen möglich:
. Nicht zulässig
Ein Datensatz in der Masterrelation darf nicht gelöscht werden, wenn noch referenzierte Datensätze in der Detailtabelle bestehen, etwa Kunde und Rechnung.
. Weitergeben (CASCADE)
Wird ein Datensatz aus der Masterrelation gelöscht, werden alle betroffenen Datensätze in der Detailtabelle ebenfalls gelöscht.
. Auf NULL (SET NULL) oder Vorgabewert (SET DEFAULT) setzen
Wird ein Datensatz aus der Masterrelation gelöscht, werden alle Verweise in der Detailtabelle auf NULL oder einen anderen Wert gesetzt.
MySQL überprüft mit seinen Standardtabellentypen wie MyISAM momentan nicht die referenzielle Integrität. Mit dem InnoDB-Tabellentyp wird die referenzielle Integrität unterstützt, allerdings sind hier zur Zeit noch nicht die oben definierten Verhaltensregeln implementiert.
|
|
|
|
|
|
|