3.5.2 Fremdschlüssel/ Referentielle Integrität (6/9) Beispiel 3-1: n m S SP P Relation S: Relation P: S# ... P# ... S1 ... P12 ... S17 ... P25 ... Relation SP: S# P# QTY S1 P12 13 (zur Seite 29) S17 P12 19 SS2001 Semantische Integritätsbedingungen Ó AIFB
3.5.2 Fremdschlüssel/ Referentielle Integrität (7/9) CREATE TABLE S ( S# CHAR(5) PRIMARY KEY, … ) CREATE TABLE P ( P# CHAR(5) PRIMARY KEY, … ) CREATE TABLE SP ( S# CHAR(5), P# CHAR(5), PRIMARY KEY (S#, P#), FOREIGN KEY (S#) REFERENCES S ON DELETE CASCADE, ON UPDATE CASCADE, FOREIGN KEY (P#) REFERENCES P ) SS2001 Semantische Integritätsbedingungen Ó AIFB
3.5.2 Fremdschlüssel/ Referentielle Integrität (8/9) INSERT INTO SP (S#, P#, QTY) VALUES (’S20’, ‘P12‘, 32) zum Beispiel3.1(s.27) Fehlende Referenz ’S20’ in S Einfügen verweigert 2. UPDATE SP SET P# = ’P20’ WHERE P# = ‘P12‘ Fehlende Referenz ’P20’ in P Änderung verweigert 3. DELETE FROM S WHERE S# = ’S1’ Effekt CASCADE (S1, P12, 13) wird ebenfalls gelöscht SS2001 Semantische Integritätsbedingungen Ó AIFB
3.5.2 Fremdschlüssel/ Referentielle Integrität (9/9) 4. DELETE FROM P WHERE P# = ‘P12“ Effekt NO-ACTION DELETE wird verweigert, da eine Referenz existiert 5. UPDATE S SET S# = ’S20’ WHERE S# = ’S17’ AnalogeBehandlung wie bei DELETE, Effekt CASCADE (d.h. Änderungen weitergeben) In der Relation SP wird der Wert 17 ebenfalls in 20 geändert. resultierende Tupel: (S20, …) S (S20, P12, 19) SP SS2001 Semantische Integritätsbedingungen Ó AIFB