1. Integritätsbedingungen und Trigger

Werbung
1. Integritätsbedingungen und Trigger
„ ACID und Datenkontrolle
– Synchronisation zur Ablaufintegrität
– Transaktionsablauf
„ Integritätsbedingungen
– Klassifikation: Statische vs. Dynamische Integritätsbedingungen, ...
– Integritätsbedingungen in SQL92
„ Integritätsregeln / Trigger
– Konzept
– CREATE TRIGGER
– Einsatzformen von Trigger
gg
DBS 2
SS08, © Prof. Dr. E. Rahm
1-1
ACID und Datenkontrolle
„
T
Transaktionskonzept
ki k
(ACID-Eigenschaften)
(ACID Ei
h f )
– im SQL-Standard: COMMIT WORK, ROLLBACK WORK, Beginn einer
Transaktion implizit
– Einhaltung der logischen DB-Konsistenz (Consistency)
– Verdeckung der Nebenläufigkeit (concurrency isolation)
– Verdeckung von (erwarteten) Fehlerfällen (->
( > Logging und Recovery)
„
Integritätskontrolle
– Semantische Integritätskontrolle: möglichst hohe Übereinstimmung von DB
DB-Inhalt
Inhalt
und Miniwelt (Datenqualität)
– nur 'sinnvolle' und 'zulässige' Änderungen der DB: bei COMMIT müssen alle
semantischen Integritätsbedingungen erfüllt sein (Transaktionskonsistenz)
– Einhaltung der physischen Integrität sowie der Ablaufintegrität (operationale
Integrität)
„
Zugriffskontrolle
– Maßnahmen zur Datensicherheit und zum Datenschutz
– Sichtkonzept
– Vergabe und Kontrolle von Zugriffsrechten
SS08, © Prof. Dr. E. Rahm
DBS 2
1-2
ACID und Datenkontrolle (2)
Art der Integrität
TransaktionsT
kti
eigenschaft
realisierende DBS-Komponente
Semantische
Integrität
C (Consistency,
Konsistenz)
(Semantische) Integritätskontrolle
Physische Integrität
D: Dauerhaftigkeit
A: Atomarität
Logging, Recovery
((+ korrekte Implementierung
p
g der DBOperationen)
Ablaufintegrität
I (Isolation)
Synchronisation (z. B. Sperrverwaltung)
SS08, © Prof. Dr. E. Rahm
DBS 2
1-3
Synchronisation
„ DBS
S
müssen Mehrbenutzerbetrieb
hb
b i b unterstützen
„ ohne Synchronisation
y
kommt es zu so genannten
g
Mehrbenutzer-Anomalien
–
–
–
–
Verlorengegangene Änderungen (lost updates)
Abh i k i von nicht
Abhängigkeiten
i h freigegeben
f i
b Änderungen
Ä d
(dirty
(di read,
d dirty
di overwrite)
i )
inkonsistente Analyse (non-repeatable read)
Phantom-Probleme
„ Anomalien
sind nur durch Änderungen verursacht
„ Synchronisation erfolgt automatisch durch das DBS,
DBS z.B.
zB
durch Setzen von Sperren vor Datenzugriff (Freigabe der
Sperren am Transaktionsende)
SS08, © Prof. Dr. E. Rahm
DBS 2
1-4
Verloren gegangene Änderung (Lost Update)
DB-Inhalt
Gehaltsänderung T1
SELECT GEHALT INTO :gehalt
FROM PERS
WHERE PNR = 2345
gehalt := gehalt + 2000;
(PNR GEHALT)
(PNR,
Gehaltsänderung T2
2345
29.000
SELECT GEHALT INTO :gehalt
FROM PERS
WHERE PNR = 2345
gehalt := gehalt + 1000;
UPDATE PERS
SET GEHALT = :gehalt
WHERE PNR = 2345
2345
UPDATE PERS
SET GEHALT = :gehalt
WHERE PNR = 2345
2345
Zeit
DBS 2
SS08, © Prof. Dr. E. Rahm
1-5
Die Transaktion als Schnittstelle zwischen
g p g
und DBS
Anwendungsprogramm
Aktionen auf Seite des AP
Sicherstellen der Rücksetzbarkeit
von Änderungsoperationen
BOT
•
•
•
Befehle
Op
i
•
•
•
EOT
Ausführen von DML-Befehlen
(Überprüfen der unverzögerten
Integritätsbedingungen)
Überprüfen
p
der verzögerten
g
Integritätsbedingungen
g
g g
C
2-PhasenC
Commit
it
(2PC)
Aktionen auf Seite des DBS
O
Phase 1
M
M
I
T
Phase 2
Sicherstellen der Wiederholbarkeit aller Änderungen
(Logging)
Freigabe der Betriebsmittel (Sperren)
Bestätigung über erfolgreiches Ende an das AP
Weiterarbeit im AP
SS08, © Prof. Dr. E. Rahm
DBS 2
1-6
(Semant.) Integritätskontrolle
„
Wahrung
W
h
der
d logischen
l i h DB-Konsistenz
DB K i
„ Überwachung von semantischen Integritätsbedingungen durch Anwendungen
oder durch DBS
„ DBS-basierte Integritätskontrolle
–g
größere Sicherheit
– vereinfachte Anwendungserstellung
– Unterstützung von interaktiven sowie programmierten DB-Änderungen
– leichtere
l i h
Änderbarkeit
Ä d b k i von Integritätsbedingungen
I
i ä b di
„ Integritätsbedingungen der Miniwelt sind explizit bekannt zu machen, um
automatische Überwachung zu ermöglichen
AP1
AP2
...
APn
interaktives
Update
AP1
AP2
...
APn
interaktives
Update
Integritätskontrolle
DBS
DBS
AP-Prüflogik
SS08, © Prof. Dr. E. Rahm
DBS 2
1-7
Klassifikation von Integritätsbedingungen
1.
M d lli hä
Modellinhärente
Integritätsbedingungen
I
i ä b di
(vs.
( Anwendungsspezifische
A
d
ifi h IB)
– Primärschlüsseleigenschaft
– referentielle Integrität für Fremdschlüssel
– Definitionsbereiche (Domains) für Attribute
2.
3.
Reichweite
Reichweite
Attribut
Beispiele
GEB-JAHR ist numerisch, 4-stellig
Satzausprägung
ABT.GEHALTSSUMME < ABT.JAHRESETAT
Satztyp
S
t t
mehrere
Satztypen
PNR iistt eindeutig
i d ti
ABT.GEHALTSSUMME ist Summe aller
Angestelltengehälter
Zeitpunkt der Überprüfbarkeit
– unverzögert (sofort bei Änderungsoperation)
– verzögert
er ögert (am Transaktionsende)
4.
Art der Überprüfbarkeit
– Zustandsbedingungen (statische Integritätsbedingungen)
– dynamische Integritätsbedingungen
SS08, © Prof. Dr. E. Rahm
DBS 2
1-8
Dynamische Integritätsbedingungen
„
„
Beziehen
B
i h sich
i h im
i Gegensatz
G
zu statischen
i h IB auff Änderungen
Ä d
selbst und damit auf mehrere Datenbankzustände
Z i Varianten
Zwei
V i t
– Übergangsbedingungen: Änderung von altem zu neuem DB-Zustand wird
g
eingeschränkt
– temporale Bedingungen: Änderungen in bestimmtem zeitlichen Fenster werden
eingeschränkt
„
Beispiele dynamischer Integritätsbedingungen
– Übergang von FAM-STAND von 'ledig' nach 'geschieden' ist unzulässig
– Gehalt darf nicht kleiner werden
– Gehalt darf innerhalb von 3 Jahren nicht um mehr als 25% wachsen
DBS 2
SS08, © Prof. Dr. E. Rahm
1-9
Integritätsbedingungen in SQL
„
Ei d i k i von Attributwerten
Eindeutigkeit
A ib
– UNIQUE bzw. PRIMARY KEY bei CREATE TABLE
– Satztypbedingungen
Bsp.:
„
CREATE TABLE PERS ...
PNR INT UNIQUE
Q
((bzw. PRIMARY KEY))
Fremdschlüsselbedingungen
– FOREIGN-KEY-Klausel
– Satztyp- bzw. satztypübergreifende Bedingung
„
Wertebereichsbeschränkungen von Attributen
–
–
–
–
CREATE DOMAIN
NOT NULL
DEFAULT
Attribut- und Satztyp-Bedingungen
Attribut
Satztyp Bedingungen
SS08, © Prof. Dr. E. Rahm
DBS 2
1-10
Integritätsbedingungen in SQL (2)
„
All
Allgemeine
i IIntegritätsbedingungen
i ä b di
– CHECK-Constraints bei CREATE TABLE
– allgemeine Assertions,
Assertions z.
z B.
B für satztypübergreifende Bedingungen
CHECK-Constraints bei CREATE TABLE
Anweisung CREATE ASSERTION
CREATE TABLE PERS ....
GEB-JAHR INT
CHECK (VALUE BETWEEN 1900 AND 2100)
CREATE TABLE ABT .....
(GEHALTSSUMME < JAHRESETAT)
)
CHECK (
CREATE ASSERTION A1
CHECK (NOT EXISTS
(SELECT * FROM ABT A
WHERE GEHALTSSUMME <>
(SELECT SUM (P.GEHALT) FROM PERS P
WHERE P.ANR = A.ANR)))
DEFERRED
„
Festlegung des Überprüfungszeitpunktes:
– IMMEDIATE: am Ende der Änderungsoperation (Default)
– DEFERRED: am Transaktionsende (COMMIT)
„
Unterstützung für dynamische Integritätsbedingungen durch
Trigger (ab SQL:1999)
SS08, © Prof. Dr. E. Rahm
DBS 2
1-11
Integritätsregeln
„
„
Standardreaktion
S
d d k i auff verletzte
l
Integritätsbedingung:
I
i ä b di
ROLLBACK
Integritätsregeln erlauben Spezifikation von Folgeaktionen, z. B.
um Einhaltung
Ei h lt
von Integritätsbedingungen
I t ität b di
zu erreichen
i h
– SQL92: deklarative Festlegung referentieller Folgeaktionen (CASCADE, SET
NULL,, ...))
– SQL99: Trigger
„
Trigger: Festlegung von Folgeaktionen für Änderungsoperationen
– INSERT
– UPDATE oder
– DELETE
„
„
Trigger wesentlicher Mechanismus von aktiven DBS
Verallgemeinerung durch sogenannte ECA
ECA-Regeln
Regeln (Event /
Condition / Action)
SS08, © Prof. Dr. E. Rahm
DBS 2
1-12
Integritätsregeln (2)
„
B i i l Wartung
Beispiel:
W
der
d referentiellen
f
i ll Integrität
I
iä
– Deklarativ
CREATE TABLE PERS
(PNR INT PRIMARY KEY,
ANR INT FOREIGN KEY
REFERENCES ABT
ON DELETE CASCADE
... ));
– Durch Trigger
CREATE TRIGGER MITARBEITERLÖSCHEN
Ö
BEFORE DELETE ON ABT
REFERENCING OLD AS A
DELETE FROM PERS P
WHERE P.ANR = A.ANR;
SS08, © Prof. Dr. E. Rahm
DBS 2
1-13
Trigger
„
„
ausführbares,
füh b
benanntes
b
DB-Objekt,
DB Obj k das
d implizit
i li i durch
d h bestimmte
b i
Ereignisse (“triggering event”) aufgerufen werden kann
Ti
Triggerspezifikation
ifik ti besteht
b t ht aus
–
–
–
–
„
auslösendem Ereignis (Event)
Ausführungszeitpunkt
g
p
optionaler Zusatzbedingung
Aktion(en)
zahlreiche Einsatzmöglichkeiten
– Überwachung
g nahezu aller Integritätsbedingungen,
g
g g , inkl. dynamischer
y
Integritätsbedingungen
– Validierung von Eingabedaten
– automatische Erzeugung von Werten für neu eingefügten Satz
– Wartung replizierter Datenbestände
– Protokollieren von Änderungsbefehlen (Audit Trail)
•••
SS08, © Prof. Dr. E. Rahm
DBS 2
1-14
Trigger (2)
„
SQL99 S
SQL99-Syntax
CREATE TRIGGER <trigger name>
{BEFORE|AFTER}{INSERT|DELETE|
{
|
}{
|
|
UPDATE [OF <column list>]}
ON <table name>
[ORDER <order value>]
[REFERENCING <old or new alias list>]
[FOR EACH {ROW|STATEMENT}]
[WHEN (<search condition>)]
<triggered SQL statement>
<old
<
ld or new alias>
li > ::=
OLD [AS]<old values correlation
NEW [AS]<new values correlation
OLD_TABLE [AS]<old values table
NEW_TABLE [AS]<new values table
name>|
name>|
alias>|
alias>
– Trigger-Events: INSERT, DELETE, UPDATE
– Zeitpunkt: BEFORE oder AFTER
– mehrere Trigger pro Event/Zeitpunkt
E ent/Zeitp nkt möglich (benutzerdefinierte
(ben t erdefinierte
Aktivierungsreihenfolge)
– Bedingung: beliebiges SQL-Prädikat (z. B. mit komplexen Subqueries)
– Aktion: beliebige SQL-Anweisung (z. B. auch neue prozedurale Anweisungen)
– Trigger-Bedingung und -Aktion können sich sowohl auf alte als auch neue
Tupelwerte der betroffenen Tupel beziehen
– Trigger-Ausführung für jedes betroffene Tupel einzeln (FOR EACH ROW) oder
nur einmal für auslösende Anweisung (FOR EACH STATEMENT)
SS08, © Prof. Dr. E. Rahm
DBS 2
1-15
Trigger-Beispiele
„
R li i
Realisierung
einer
i
dynamischen
d
i h Integritätsbedingung
I
i ä b di
CREATE TRIGGER GEHALTSTEST
AFTER UPDATE OF GEHALT ON PERS
REFERENCING OLD AS AltesGehalt,
NEW AS NeuesGehalt
WHEN (NeuesGehalt < AltesGehalt)
ROLLBACK;
„
Wartung
g einer materialisierten Sicht ARME_PROGRAMMIERER
CREATE TRIGGER AP-INSERT
AFTER INSERT ON PERS
FOR EACH ROW
REFERENCING NEW AS N
WHEN N.BERUF = „Programmierer“ AND N.GEHALT < 30000
INSERT INTO ARME_PROGRAMMIERER
VALUES (N.PNR, N.NAME, N.BERUF, …)
SS08, © Prof. Dr. E. Rahm
DBS 2
1-16
Probleme von Triggern
„
„
„
„
„
teilweise
il i prozedurale
d l Semantik
S
ik (Zeitpunkte,
(Z i
k Verwendung
V
d
alter/neuer Werte, Aktionsteil im Detail festzulegen)
Ti
Trigger
derzeit
d
it beschränkt
b h ä kt auff Änderungsoperationen
Ä d
ti
einer
i
Tabelle (UPDATE, INSERT, DELETE)
derzeit i.
i a.
a keine verzögerte Auswertung von Triggern
Gefahr zyklischer, nicht-terminierender Aktivierungen
K
Korrektheit
kth it des
d DB-/Trigger-Entwurfes
DB /T i
E t
f (Regelabhängigkeiten,
(R l bhä i k it
parallele Regelausführung, ...)
Dennoch sind Trigger
gg sehr mächtiges
g und wertvolles Konstrukt,,
auch zur DBS-internen Nutzung
DBS 2
SS08, © Prof. Dr. E. Rahm
1-17
Zusammenfassung
„
D
Datenkontrolle
k
ll
–
–
–
–
–
„
Semantische Integritätskontrolle
Synchronisation (Ablaufintegrität)
Logging und Recovery (Voraussetzung für physische Datenkonsistenz)
Zugriffskontrolle
ACID Kl
ACID-Klammer
Integritätsbedingungen
– Klassifikation gemäß 4 Kriterien
– Umfassende Unterstützung in SQL92
„
Trigger
gg
– automatische Reaktion bei DB-Änderungen (-> „aktive DBS“)
– zahlreiche Anwendungsmöglichkeiten: Integritätskontrolle, materialisierte Sichten,
...
SS08, © Prof. Dr. E. Rahm
DBS 2
1-18
Herunterladen