Teil von  SELFPHP   Teil von  Praxisbuch
Letztes Update: 16.08.2005 17:53:45


Navigation

Seite News *

Seite Startseite
Seite Über SELFPHP
Seite Werbung
Seite Kontakt
Seite Forum *
Seite Download *
Seite SELFPHP Banner *
Seite SELFPHP in Buchform
Seite Newsletter *
Seite Impressum

 
* Link führt ins Internet


Anbieterverzeichnis
Informieren Sie sich über die Unternehmen in unserem Anbieterverzeichnis!  

 


SELFPHP Forum
Fragen rund um die Themen PHP? In über 79.000 Beiträgen finden Sie sicher die passende Antwort!  


Newsletter
Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 



 

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.


 



 




 sponsored by

Host Europe


HighText iBusiness


Host Europe




© 2001-2006 E-Mail SELFPHP - Damir Enseleit, info@selfphp.deImpressumKontakt
© 2005-2006 E-Mail PHP5 Praxisbuch - Matthias Kannengiesser, m.kannengiesser@selfphp.de