spezifizieren sind werden g.d.w. Kapite 6 Semantische Integrität & Trigger in SQL-99 Dekarative Integritätbedingungen Trigger Semantische Integrität - Kurzeinfhrung Eine Datenbank (DB) so die Reawet korrekt abbiden Semantische Integritätsbedingungen (IB) Regen der Reawet Tei eines Datnbankschemas automatisch berprft insert Mitarbeiter (Ken, 1000,...) insert Mitarbeiter (Jim, 6000,...) DB ist semantisch korrekt ae spezifizierten IB erft sind rejected DBMS inserted DB CREATE TABLE Mitarbeiter (Name VARCHAR(30),, CHECK(Gehat > 2000)) Voresung "Objektreationae, erweiterbare Datenbanken - WS 2001/2002 (Dr. C. Trker) 6-2
NOT CHECK UNIQUE/PRIMARY FOREIGN Beiebige Dekarativ NULL DEFAULT Formuierung von IB (Booesches Prädikat) KEY (Eindeutigkeits-/Schssebedingungen) KEY... REFERENCES (Fremdschssebedingungen) DOMAIN ASSERTION Prozedura mittes Trigger (statische & transitionae) IB reaisierbar Voresung "Objektreationae, erweiterbare Datenbanken - WS 2001/2002 (Dr. C. Trker) 6-3 Dekarative IB - Beispiee CREATE DOMAIN Jobs CHAR(10) DEFAULT 'Verkaeufer' CHECK(VALUE IN ('Verkaeufer', 'Manager', 'Buchhater')); CREATE TABLE Mitarbeiter ( MNr SMALLINT PRIMARY KEY, Nachname VARCHAR(25) NOT NULL, Vorname VARCHAR(20) NOT NULL, Job Jobs, Vorgesetzter SMALLINT Mitarbeiter(MNr), Ansteung CREATE DATE ASSERTION DEFAULT MaxJahresgehat CURRENT_DATE, Gehat DECIMAL(7,2) NOT NULL CHECK(Gehat > 2000), CHECK((SELECT 12*SUM(Gehat + Bonus) FROM Mitarbeiter) < Bonus DECIMAL(7,2) NOT NULL CHECK(Bonus < 5000), 5000000); CONSTRAINT EindeutigeNamenskombination UNIQUE(Nachname, Vorname), CONSTRAINT CheckGesamtgehat CHECK(Gehat + Bonus < 25000)); CREATE ASSERTION MaxJahresgeht CHECK((SELECT 12*SUM(Gehat + Bonus) FROM Mitarbeiter) < 5000000); Voresung "Objektreationae, erweiterbare Datenbanken - WS 2001/2002 (Dr. C. Trker) 6-4
Notwendig DEFERRABLE IMMEDIATE Komponenten dekarativer IB Name (DBMS generiert einen fas keiner expizit angegeben wurde) fr Debugging und Administration (Löschen & (De-)Aktivieren von IB) Verzögerungsmodus / NOT DEFERRABLE (Initiaer) Überprfungsmodus / DEFERRED DEFERRABLE NOT DEFERRABLE IMMEDIATE DEFERRED Überprfungsmodus ändern SET CONSTRAINTS constraint-name DEFERRED; SET CONSTRAINTS ALL IMMEDIATE; Voresung "Objektreationae, erweiterbare Datenbanken - WS 2001/2002 (Dr. C. Trker) 6-5 Semantik von Eindeutigkeitsbedingungen UNIQUE(u1,..., un) git fr Tabee R PRIMARY KEY(u1,..., un) git fr Tabee R Voresung "Objektreationae, erweiterbare Datenbanken - WS 2001/2002 (Dr. C. Trker) 6-6
Fremdschsse Ae Fremdschssesemantiken (1) R(f 1,..., f n ) REFERENCES S(u 1,..., u n ) SIMPLE MATCH PARTIAL MATCH FULL MATCH Voresung "Objektreationae, erweiterbare Datenbanken - WS 2001/2002 (Dr. C. Trker) 6-7 Fremdschssesemantiken (2) Agemein git: FULL = SIMPLE+CHECK((f 1 IS NULL AND... AND f n IS NULL) OR (f 1 IS NOT NULL AND... AND f n IS NOT NULL)) SIMPLE, PARTIAL und FULL MATCH sind äquivaent, wenn git: ist auf nur einem Attribut definiert und/oder referenzierenden und/oder referenzierten Attribute sind NOT NULL Referenzierte Eindeutigkeitsbedingung muss NON-DEFERRABLE sein Referenzierte Tabee muss eine Basistabee sein Voresung "Objektreationae, erweiterbare Datenbanken - WS 2001/2002 (Dr. C. Trker) 6-8
INSERT DELETE NO RESTRICT: CASCADE: SET SET Fremdschsse & Referentiee Aktionen Fremdschssebedingung veretzbar durch oder UPDATE auf der referenzierenden Tabee oder UPDATE auf der referenzierten Tabee Mögiche referentiee Reaktionen ACTION: verbietet DELETE/UPDATE eines referenzierten Tupes (Objekts) anaog zu NO ACTION; wird aber "on the fy" berprft automatisches DELETE/UPDATE der referenzierenden Tupe (Objekte) NULL: setzt korrespondierende Fremdschsse auf NULL DEFAULT: setzt korrespondierende Fremdschsse auf DEFAULT Voresung "Objektreationae, erweiterbare Datenbanken - WS 2001/2002 (Dr. C. Trker) 6-9 Probeme mit referentieen Aktionen CREATE TABLE dept (dept_id INT PRIMARY KEY); CREATE TABLE proj ( proj_id INT, Effekt einer Löschung bzw. Änderung hängt von der Überprfungsreihenfoge ab dept_id INT, PRIMARY KEY(proj_id,dept_id), FOREIGN KEY (dept_id) REFERENCES dept(dept_id) ON DELETE CASCADE ON UPDATE CASCADE); DELETE FROM dept WHERE dept_id = 1311 CREATE TABLE emp ( emp_id INT PRIMARY KEY, dept_id INT NOT NULL, dept dept_id 1311 proj_id INT NOT NULL, FOREIGN KEY (proj_id, dept_id) proj proj_id 1704 dept_id 1311 REFERENCES proj (proj_id, dept_id) ON DELETE RESTRICT ON UPDATE CASCADE, FOREIGN KEY (dept_id) REFERENCES dept(dept_id) emp emp_id 5643 proj_id 1704 dept_id 1311 ON DELETE CASCADE ON UPDATE CASCADE); Voresung "Objektreationae, erweiterbare Datenbanken - WS 2001/2002 (Dr. C. Trker) 6-10
NO CASCADE: SET SET IB fr Referenzattribute Referentiee Reaktionen anaog zu Fremdschssen ACTION/RESTRICT: verbietet DELETE eines referenzierten Objekts öscht automatisch ae referenzierenden Tupe und Objekte NULL: setzt korrespondierende Referenzattribute auf NULL DEFAULT: setzt korrespondierende Referenzattribute auf DEFAULT n SQL-99 eraubt derzeit nur NULL as Defautwert fr ein Referenzattribut Beispie: Hinzufgen eines Referenzattributs mit Scope und referentieer Reaktion ALTER TABLE Mitarbeiter ADD Projekt REF(ProjektTyp) SCOPE InterneProjekte REFERENCES ARE CHECKED ON DELETE CASCADE; Voresung "Objektreationae, erweiterbare Datenbanken - WS 2001/2002 (Dr. C. Trker) 6-11 Vererbung von IB IB einer Supertabee geten impizit fr ae Subtabeen Überschreiben (Ersetzen) einer geerbten IB nicht untersttzt Pro Tabee maxima ein impiziter bzw. expiziter Primärschsse Primärschsse sind nur auf Wurzetabeen definierbar Beispie: CREATE TABLE Mitarbeiter OF MitarbeiterTyp ( Gehat WITH OPTIONS NOT NULL, CHECK(Gehat >2000) ); CREATE TABLE Manager OF ManagerTyp UNDER Mitarbeiter( CHECK(Gehat >5000) ); Voresung "Objektreationae, erweiterbare Datenbanken - WS 2001/2002 (Dr. C. Trker) 6-12
IB Probeme: Trigger Konzept, um automatisch auf vordefinierte Ereignisse in der DB zu reagieren Neu im Standard, obwoh kommerziee Systeme aesamt schon ange Trigger untersttzen Trigger, sind auch fr die Sicherung der DB-Konsistenz einsetzbar innerhab eines Triggers berprft n Zusammenspie der Trigger (Terminierung & Konfuenz) n Zusammenspie Trigger & dekarative IB (Determinismus) Voresung "Objektreationae, erweiterbare Datenbanken - WS 2001/2002 (Dr. C. Trker) 6-13 Triggerkonzept am Beispie INSERT INTO Mitarbeiter VALUES (Ken, 1000,...) DBMS DB Mitarbeiter Name Gehat..................... Ken 1000... CREATE TRIGGER trig1 AFTER INSERT ON Mitarbeiter REFERENCING NEW AS NM FOR EACH ROW INSERT INTO MitarbBackup VALUES (NM.Name, NM.Gehat) MitarbBackup Name...... Ken Gehat...... 1000 Voresung "Objektreationae, erweiterbare Datenbanken - WS 2001/2002 (Dr. C. Trker) 6-14
INSERT/DELETE/UPDATE BEFORE/AFTER FOR SQL-Bedingung; Sequenz Beispiedefinition eines Triggers Fogender Trigger impementiert die ON UPDATE CASCADE Aktion (Orace, DB2 und Informix untersttzen diese referentiee Aktion nicht): CREATE TRIGGER OnUpdateCascadeMitarbeiter AFTER UPDATE OF ID ON Mitarbeiter REFERENCING OLD AS AtMit NEW AS NeuMit FOR EACH ROW WHEN(EXISTS(SELECT * FROM Dept WHERE Manager= AtMit.ID)) BEGIN ATOMIC UPDATE Dept SET Manager=NeuMit.ID WHERE Manager=AtMit.ID END; Voresung "Objektreationae, erweiterbare Datenbanken - WS 2001/2002 (Dr. C. Trker) 6-15 Triggerereignis: Trigger - Komponenten auf Basistabee Triggeraktivierungszeitpunkt: Triggerereignis Triggergranuarität: EACH ROW/STATEMENT Triggerbedingung: Aktion nur dann ausgefhrt, wenn die Bedingung erft ist Triggeraktion: von SQL-Anweisungen Voresung "Objektreationae, erweiterbare Datenbanken - WS 2001/2002 (Dr. C. Trker) 6-16
Menge Fhrt Dies Rcksetzen IB-Überprfung and Triggerausfhrung SQL-Anweisung Bestimme Menge der betroffenen Tupe/Objekte Fhre BEFORE Trigger aus Fhre Änderungen der SQL-Anweisung aus Überprfe ae RESTRICT Fremdschsse Überprfe ae CASCADE, SET NULL, SET DEFAULT Fremdschsse Überprfe ae NO ACTION Fremdschsse and ae anderen IB Fhre AFTER Trigger aus Voresung "Objektreationae, erweiterbare Datenbanken - WS 2001/2002 (Dr. C. Trker) 6-17 Effekt einer Integritätsveretzung Transaktion: von SQL-Anweisungen, die eine DB von einem konsistenten in einen anderen konsistenten Zustand berfhrt SQL-99 untersttzt impizit Konsistenz auf Anweisungsebene eine SQL-Anweisung zu einer Veretzung einer IB, wird eine Ausnahme signaisiert und die Änderungen der Anweisung rckgängig gemacht git auch fr ae automatisch durch referentiee Aktionen oder Trigger durchgefhrte Änderungen der gesamten Transaktion muss expizit durch den Benutzer/Anwendung mittes des Befehs ROLLBACK durchgefhrt werden Voresung "Objektreationae, erweiterbare Datenbanken - WS 2001/2002 (Dr. C. Trker) 6-18
Vergeich - Dekarative Integritätsbedingungen NOT NULL, DEFAULT, UNIQUE, PRIMARY KEY FOREIGN KEY MATCH SIMPLE PARTIAL FULL ON DELETE NO ACTION RESTRICT CASCADE SET NULL SET DEFAULT ON UPDATE NO ACTION RESTRICT CASCADE SET NULL SET DEFAULT CHECK Attribut-/Tupe-/Objektebene Tabeen-/Datenbankebene DOMAIN, ASSERTION Voresung "Objektreationae, erweiterbare Datenbanken - WS 2001/2002 (Dr. C. Trker) SQL99 Orace () () () DB2 () Informix () () () 6-19 NOT NULL und objektreationae Erweiterungen NOT NULL auf Objektwertigen Attributen Referenzattributen Koektionswertigen Attributen Beispie Orace DB2 Informix () () CREATE TYPE NameTyp (Vorname VARCHAR(20), Nachname VARCHAR(25)); CREATE TABLE Person (Name NameTyp NOT NULL,...); INSERT INTO Person(Name) VALUES (NULL); INSERT INTO Person(Name) VALUES (NameTyp(NULL, NULL)); CHECK((Name.Vorname IS NOT NULL) AND (Name.Nachname IS NOT NULL)); Voresung "Objektreationae, erweiterbare Datenbanken - WS 2001/2002 (Dr. C. Trker) 6-20
DB2 Orace Orace DB2 Vergeich - Semantik von Eindeutigkeitsbedingungen DB2 & Informix: Schsseattributwerte mssen eindeutig sein Orace: Schsseattributwerte mssen eindeutig sein (wenn sie nicht kompett aus Nuwerten bestehen) Voresung "Objektreationae, erweiterbare Datenbanken - WS 2001/2002 (Dr. C. Trker) 6-21 Vergeich - Eindeutigkeitsbedingungen Was passiert, wenn mehrere Eindeutigkeitsbedingungen auf geichen Attributen definiert werden? weist die Definition einer Eindeutigkeitsbedingung zurck, wenn auf derseben Tabee bereits eine andere Eindeutigkeitsbedingung mit denseben Attributen existiert & Informix weist die Definition einer Eindeutigkeitsbedingung nur dann zurck, wenn zusätzich die Reihenfoge der Attribute bereinstimmt Was geben die Systeme aus, wenn mehrere Eindeutigkeitsbedingungen geichzeitig veretzt sind? gibt den Namen der ätesten Eindeutigkeitsbedingung aus & Informix sagen nur, dass eine Eindeutigkeitsbedingung veretzt ist Voresung "Objektreationae, erweiterbare Datenbanken - WS 2001/2002 (Dr. C. Trker) 6-22
DB2 Informix: In Überraschenderweise Orace Vergeich - Eindeutigkeitsbedingungen und OR-Erweiterungen UNIQUE auf Objektwertigen Attributen Referenzattributen Koektionswertigen Attributen Orace () DB2 Informix Orace untersttzt Eindeutigkeitsbedingungen auf Komponenten eines objektwertigen Attributs, wenn der Typ der Komponente ein Basistyp ist Vererbung von Eindeutigkeitsbedingungen (Primärschssebedingungen) verbietet expizite Eindeutigkeitsbedingungen fr Subtabeen Jede Tabee darf maxima eine expizite Primärschssebedingung Voresung "Objektreationae, erweiterbare Datenbanken - WS 2001/2002 (Dr. C. Trker) 6-23 Vergeich - Fremdschsse & Referenzattribute DB2: Wenn eine Tabee mehrere Fremdschsse enthät, mssen ae Fremdschsse die geiche DELETE-Rege befogen diesem die DELETE-Rege des ersten Fremdschsses sind mehrere Fremdschsse nicht eraubt, wenn die erste DELETE-Rege SET NULL ist Integritätsbedingungen auf Referenzattributen Attributbasiert: Tabeenbasiert: ref_coumn REF ref_type SCOPE IS typed_tabe SCOPE FOR ref_coumn IS typed_tabe untersttzt beide Formen, DB2 nur attributbasiert Voresung "Objektreationae, erweiterbare Datenbanken - WS 2001/2002 (Dr. C. Trker) 6-24
Grund: Vergeich - Trigger Syntax und Semantik kommerzieer Trigger sind sehr unterschiedich Trigger wurden erst mit SQL-99 standardisiert, obwoh Trigger seit ber zehn Jahren von kommerzieen Systemen angeboten werden SQL-99 Orace DB2 Informix #Ereignisse pro Trigger #Trigger pro Ereignis Granuarität (ROW/STATEMENT) Aktivierungszeit (BEFORE/AFTER) Aktivierungsbedingung 1 * R/S B/A * * R/S B/A 1 * R/S B/A 1 1 R/S B/A Voresung "Objektreationae, erweiterbare Datenbanken - WS 2001/2002 (Dr. C. Trker) 6-25 Vergeich - Evoution von IB ADD DROP ENABLE DISABLE SET ENABLE VALIDATE VALIDATE + EXCEPTION NOVALIDATE DISABLE RESTRICT CASCADE VALIDATE VALIDATE + EXCEPTION NOVALIDATE RESTRICT CASCADE INITIALLY IMMEDIATE DEFERRED DEFERRABLE NOT DEFERRABLE SQL99 () Orace DB2 () () () () Informix () () () () Voresung "Objektreationae, erweiterbare Datenbanken - WS 2001/2002 (Dr. C. Trker) 6-26
Vergeich - Hinzufgen neuer IB ADD+ENABLE+VALIDATE+EXCEPTION Orace: ALTER TABLE t ADD cons-spec EXCEPTIONS INTO e; Informix: ALTER TABLE t ADD cons-spec FILTERING; ADD+DISABLE Orace: Informix: ALTER TABLE t ADD cons-spec DISABLE; ALTER TABLE t ADD cons-spec DISABLED; ADD+ENABLE+NOVALIDATE Orace: ALTER TABLE t ADD cons-spec NOVALIDATE; Voresung "Objektreationae, erweiterbare Datenbanken - WS 2001/2002 (Dr. C. Trker) 6-27 Vergeich - Aktivierung & Deaktivierung von IB ENABLE+VALIDATE Orace: ALTER TABLE t ENABLE cons; Informix: SET CONSTRAINTS cons-name ENABLED; ENABLE+NOVALIDATE Orace: ALTER TABLE t ENABLE NOVALIDATE cons; DISABLE Orace: Informix: ALTER TABLE t DISABLE cons; SET CONSTRAINTS cons-name DISABLED; SQL-99 & DB2 bieten hier keine Untersttzung Voresung "Objektreationae, erweiterbare Datenbanken - WS 2001/2002 (Dr. C. Trker) 6-28
Namen Vergeich - Metasichten fr IB & Trigger Enthaten Informationen ber definierte IB & Trigger SQL-99 tabe_constraints check_constraint referentia_constraints key_coumns_usage triggers Orace xxx_constraints xxx_constraints xxx_constraints xxx_cons_coumns xxx_triggers DB2 syscat.tabconst syscat.checks syscat.references syscat.keycouse syscat.triggers Informix sysconstraints syschecks sysreferences syscodepend systriggers Orace & DB2: mssen in Anfragen in grossen Buchstaben geschrieben sein (auch wenn bei der Definition keine Buchstaben verwendet wurden) Informix: Namen immer in Keinbuchstaben Voresung "Objektreationae, erweiterbare Datenbanken - WS 2001/2002 (Dr. C. Trker) 6-29