11. Integrität und Trigger

Ähnliche Dokumente
11. Integrität und Trigger. Integritätssicherung durch Anwendung. Architekturen zur Integritätssicherung. Anwendung 1. Anwendung n Routinen.

Teil IX Transaktionen, Integrität und Trigger

Teil IX Transaktionen, Integrität und Trigger

Teil VIII Transaktionen, Integrität und Trigger

Die Anweisung create table

6. Trigger Charakterisierung von Triggern. 6. Trigger. Trigger definieren automatische Reaktionen auf Ereignisse, die durch Datenmanupilationen

4.14 Integrität und Trigger

Beispiel zur referentiellen Integrität

Datenintegrität. Arten von Integritätsbedingungen. Statische Integritätsbedingungen. Referentielle Integrität. Integritätsbedingungen in SQL.

Datenintegrität. Integitätsbedingungen Schlüssel Beziehungskardinalitäten Attributdomänen Inklusion bei Generalisierung

Datenbanksysteme I Integrität und Trigger Felix Naumann

Datenintegrität. Kapitel 5 1

Datenbanksysteme 2013

Datenintegrität. Kapitel 5 1

SQL. SQL: Structured Query Language. Früherer Name: SEQUEL. Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99

Datenbanken Unit 4: Das Relationale Modell & Datenintegrität

Transaktionsverwaltung

Grundlagen von Datenbanken. Referentielle Aktionen, Sichten, Serialisierbarkeit und Locking

Kapitel 2 Transaktionsverwaltung. Skript 2009 Matthias Schubert

Kapitel 7: Referentielle Integrität

Seminar 2. SQL - DML(Data Manipulation Language) und. DDL(Data Definition Language) Befehle.

Referentielle Integrität

Datenintegrität. Arten von Integritätsbedingungen. Statische Integritätsbedingungen. Referentielle Integrität. Integritätsbedingungen in SQL.

Kapitel 8: Datenintegrität

Übung Datenbanksysteme Updates, Integritätsbedingungen, funktionale Abhängigkeiten

1. Integritätsbedingungen und Trigger

6. Datenintegrität. Integritätsbedingungen

Referentielle Integrität

Beispielszenarien. 12. Transaktionen. ACID-Eigenschaften. Transaktion

Transaktionsverwaltung

Semantische Integrität (auch: Konsistenz) der in einer Datenbank gespeicherten Daten als wichtige Anforderung

Datenbanksysteme I WS 18/19 Teillösung Übungsblatt 4-6

Datenintegrität. Referentielle Integrität. Referentielle Integrität in SQL. Bisherige Integritätsbedingungen

Integrität in Datenbanken. Prof. Dr. T. Kudraß 1

VO Datenmodellierung. Katrin Seyr

6. Updates in SQL 6-1. Inhalt. 1. Update-Kommandos in SQL. 2. Transaktionen. 3. Gleichzeitige Zugriffe

Datenintegrität. Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen

Datenintegrität. Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen

Welche Kunden haben die gleiche Ware bestellt? select distinct a1.name, a2.name from Auftrag a1, Auftrag a2 where a1.ware = a2.ware.

Triggern. Change Data Capture

Praktische SQL-Befehle

Praktische SQL-Befehle 2

Datenbanken. Datenintegrität + Datenschutz. Tobias Galliat. Sommersemester 2012

Datenbanken SQL. Insert, Update, Delete, Drop. Krebs

Hochschule Karlsruhe Technik und Wirtschaft Fakultät für Informatik und Wirtschaftsinformatik

SQL: statische Integrität

Datenintegrität. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Wiederholung VU Datenmodellierung

Aufgabe 1: Integrität

SQL. DDL (Data Definition Language) Befehle und DML(Data Manipulation Language)

Datenbanken: Datenintegrität.

Wiederholung VU Datenmodellierung

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #5. SQL (Teil 3)

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.

12. Datenschutz: Zugriffsrechte in SQL Datenschutz: Zugriffsrechte in SQL

Datenintegrität. Bisherige Integritätsbedingungen

Datenbanken Unit 5: Datenintegrität und funktionale Abhängigkeit

Informatik für Ökonomen II: Datenintegrität. Prof. Dr. Carl-Christian Kanne

8. Tabellendefinition in SQL 8-1. Tabellendefinitionen

Schnellübersichten. SQL Grundlagen und Datenbankdesign

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr. Praktikum: Datenbanken Woche 7: Noch mehr SQL

Kapitel 10 Transaktionen Integrität

Eigenschaften von TAs: ACID-Prinzip

Web Science & Technologies University of Koblenz Landau. Grundlagen der Datenbanken. Integrität. Dr. Jérôme Kunegis Wintersemester 2013/14

Logischer Entwurf. Stufen der Entwicklung einer Datenbank. Inhalt. Übersicht. 1. Datenbank - Entwurf ( ER - Diagramm)

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Finalklausur zur Vorlesung Datenbanksysteme I Wintersemester 2003/2004 Prüfer: Prof. R. Bayer, Ph.D. Datum: Zeit: 16.

Datenschutz: Zugriffsrechte in SQL

Wirtschaftsinformatik 7a: Datenbanken. Hochschule für Wirtschaft und Recht SS 16 Dozent: R. Witte

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

Datenintegrität. Daten. Dateneingabe. Datenverwendung. Datenkonsistenz? logisch. Datenschutz? juristisch. Transaktionen. Datensicherheit?

Grundlagen von SQL. Informatik 2, FS18. Dr. Hermann Lehner (Material von Dr. Markus Dahinden) Departement Informatik, ETH Zürich

Relationenmodell. Ziel:

5/14/18. Grundlagen von SQL. Grundlagen von SQL. Google, Facebook und Co. setzen auf SQL. Whatsapp

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II SS Transaktionen & ACID. Dr. Christian Senger Transaktionen & ACID 1

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

3.3. Implementierung in SQL DDL-Grundlagen Constraint-Verzögerung Implementierungs-Strategien

In diesem Abschnitt stehen Transaktionen im Mittelpunkt. Hierbei geht es darum, wie bei Mehrbenutzerbetrieb die Integrität von Datenbanken

7. Transaktionsverwaltung

Datenbanksysteme. Transaktionen. Burkhardt Renz. Sommersemester Fachbereich MNI Technische Hochschule Mittelhessen

DB I S. 1 Referentielle Aktionen [10 P.] Gegeben sei folgende Datendefinition:

UML/OCL für die Integritätssicherung in Datenbankanwendungen

Klausur PI Datenbanken II vom Name: Praktische Informatik (Krägeloh)

Datenbanken im WI-Unterricht mit

Als Datenbanksystem wird ein Datenbankverwaltungssystem zusammen mit einer oder mehrerer Datenbanken bezeichnet.

Kapitel 8: Zugriffskontrolle

Grundlagen von Datenbanken

Integritätsbedingungen für komplexe Objekte in objektrelationalen Datenbanksystemen

Übung ERM. Beispiel: Erstellung einer relationalen Datenbank

Semesterklausur. Hinweise:

Informations- und Wissensmanagement

Induktionsschluss: Sei Q RA eine Anfrage der Relationenalgebra mit n > 0 Operatoren.

Datenbanken (Übung 12)

Transkript:

11. Integrität und Trigger Grundlagen und Begriffe Transaktionen Integritätsbedingungen Integritätsregeln in SQL Trigger VL Datenbanken I 11 1 Grundlagen und Begriffe Integritätsbedingung (IB) = Bedingung für die Zulässigkeit ( Korrektheit ) betreffend (einzelne) Datenbankzustände σ, Zustandsübergänge σ alt, σ neu oder auch langfristige Datenbankentwicklungen Bezeichnungen: Bedingungsklasse zeitlicher Kontext statisch Datenbankzustand dynamisch transitional Zustandsübergang temporal Zustandsfolge VL Datenbanken I 11 2 Transaktion Eine Transaktion ist eine Folge von Operationen (Aktionen), die die Datenbank von einem konsistenten Zustand in einen konsistenten, eventuell veränderten, Zustand überführt, wobei das ACID-Prinzip eingehalten werden muß. Aspekte: Semantische Integrität: Korrekter (konsistenter) DB-Zustand nach Ende der Transaktion Ablaufintegrität: Fehler durch gleichzeitigen Zugriff mehrerer Benutzer auf dieselben Daten vermeiden VL Datenbanken I 11 3

ACID-Eigenschaften Atomicity (Atomarität): Transaktion wird entweder ganz oder gar nicht ausgeführt Consistency (Konsistenz oder auch Integritätserhaltung): Datenbank ist vor Beginn und nach Beendigung einer Transaktion jeweils in einem konsistenten Zustand Isolation (Isolation): Nutzer, der mit einer Datenbank arbeitet, sollte den Eindruck haben, daß er mit dieser Datenbank alleine arbeitet Durability (Dauerhaftigkeit / Persistenz): nach erfolgreichem Abschluß einer Transaktion muß das Ergebnis dieser Transaktion dauerhaft in der Datenbank gespeichert werden VL Datenbanken I 11 4 Kommandos einer Transaktionssprache Beginn einer Transaktion: Begin-of-Transaction-Kommando BOT (in SQL implizit!) commit: die Transaktion soll erfolgreich beendet werden abort: die Transaktion soll abgebrochen werden VL Datenbanken I 11 5 Transaktion: Integritätsverletzung Beispiel: Übertragung eines Betrages B von einem Haushaltsposten K1 auf einen anderen Posten K2 Bedingung: Summe der Kontostände der Haushaltsposten bleibt konstant vereinfachte Notation Transfer = < K1:=K1-B; K2:=K2+B >; Realisierung in SQL: als Sequenz zweier elementarer Änderungen Bedingung ist zwischen den einzelnen Änderungsschritten nicht unbedingt erfüllt! VL Datenbanken I 11 6

Architekturen zur Integritätssicherung Anwendung 1 Anwendung n DBMS Datenbank Vereinfachte Datenbank-Anwendungsarchitektur VL Datenbanken I 11 7 Integritätssicherung durch Anwendung Anwendung 1 Routinen Anwendung n Routinen DBMS Datenbank VL Datenbanken I 11 8 Integritätsmonitor Anwendung 1 Anwendung n DBMS Monitor Datenbank VL Datenbanken I 11 9

Einkapselung Anwendung 1 Anwendung n Kapselung DBMS Datenbank VL Datenbanken I 11 10 Inhärente Integritätsbedingungen im RM 1. Typintegrität: SQL erlaubt Angabe von Wertebereichen zu Attributen Erlauben oder Verbieten von Nullwerten 2. Schlüsselintegrität: Angabe eines Schlüssels für eine Relation 3. Referentielle Integrität: die Angabe von Fremdschlüsseln VL Datenbanken I 11 11 Integritätsbedingungen in SQL-DDL not null: Nullwerte verboten default: Angabe von Default-Werten check ( search-condition ): Attributspezifische Bedingung (in der Regel Ein-Tupel-Integritätsbedingung) primary key: Angabe eines Primärschlüssel foreign key ( Attribut(e)) references Tabelle( Attribut(e) ): Angabe der referentiellen Integrität VL Datenbanken I 11 12

Erhaltung der referentiellen Integrität Überprüfung der Fremdschlüsselbedingungen nach Datenbankänderungen für π A (r 1 ) π K (r 2 ), z.b. π Verlagsname (Bücher) π Verlagsname (Verlage) Tupel t wird eingefügt in r 1 überprüfen, ob t r 2 existiert mit: t (K) = t(a), d.h. t(a) π K (r 2 ) falls nicht abweisen Tupel t wird aus r 2 gelöscht überprüfen, ob σ A=t (K)(r 1 ) = {}, d.h. kein Tupel aus r 1 refernziert t falls nicht leer abweisen oder Tupel aus r 1, die t referenzieren, löschen (bei kaskadierendem Löschen) VL Datenbanken I 11 13 Überprüfungsmodi von Bedingungen on update delete Angabe eines Auslöseereignisses, das die Überprüfung der Bedingung anstößt cascade set null set default no action Kaskadierung: Behandlung einiger Integritätsverletzungen pflanzt sich über mehrere Stufen fort, z.b. Löschen als Reaktion auf Verletzung der referentieller Integrität deferred immediate legt Überprüfungszeitpunkt für eine Bedingung fest deferred: Zurückstellen an das Ende der Transaktion immediate: sofortige Prüfung bei jeder relevanten Datenbankänderung VL Datenbanken I 11 14 Überprüfungsmodi: Beispiel Kaskadierendes Löschen create table Bücher ( ISBN char(10) not null, Titel varchar(200), Verlagsname varchar(30), primary key (ISBN), foreign key (Verlagsname) references Verlage (Verlagsname) on delete cascade ) VL Datenbanken I 11 15

Die assertion-klausel Assertion: Prädikat, das eine Bedingung ausdrückt, die von der Datenbank immer erfüllt sein muß Syntax (SQL:1999) create assertion name check ( prädikat ) Beispiele: create assertion Preise check ( ( select sum (Preis) from Buch) < 10000 ) create assertion Preise2 check ( not exists ( select Preis from Buch ) > 200 ) VL Datenbanken I 11 16 Beispiele für Integritätsbedingungen 1. Das Konto von Weiß darf nicht überzogen werden. 2. Kein Kundenkonto darf unter -100 absinken. 3. Kunden sind durch ihre Namen identifiziert, d.h., kein Kundenname darf mehrfach vorkommen. 4. Der Durchschnittspreis für Karotten muß unter dem für Spargel liegen. 5. Nur solche Waren dürfen bestellt werden, für die es mindestens einen Lieferanten gibt. VL Datenbanken I 11 17 Beispiele für Integritätsbedingungen (II) 6. Der Brotpreis darf nicht erhöht werden. 7. Kunden dürfen nur gelöscht werden, wenn sie keine Waren mehr bestellt haben. 8. Der Preis eines Grundnahrungsmittels darf innerhalb von drei Jahren höchstens um 15% steigen. 9. Kunden müssen gelöscht werden, wenn sie keine Waren mehr bestellt haben. VL Datenbanken I 11 18

Mögliche Klassifikationen Kriterium Granularität Ausdrucksfähigkeit Klassen Attribut Tupel Relation Datenbank elementare Prädikate Relationale Algebra SQL SQL + transitive Hülle berechnungsvollständig VL Datenbanken I 11 19 Mögliche Klassifikationen (II) Kriterium zeitlicher Kontext Überprüfungszeitpunkt Reaktion Klassen statisch transitional temporal Einzeländerung Operationsende Transaktionsende Zurückweisung (reject) Korrektur (repair) VL Datenbanken I 11 20 Integritätsregeln IR = B, O, A, R B O A R Integritätsbedingung Menge von Datenbankobjekten, auf die sich B bezieht Auslöser, wann B zu überprüfen ist Reaktionen, falls B verletzt ist VL Datenbanken I 11 21

Integritätsregeln (II) im usprünglichen SQL-Sprachvorschlag assert <Regelname> [immediate deferred] [ on <Op> ] (A) [for <Rel>] : (O) <Bedingung wie in where-klausel> (O, B) [else ( <Folge von SQL-Anweisungen> )] (R) wobei <Op> ::= { insertion deletion } of <Rel> update of <Rel> [ (<Attribut>)] <Rel> ::= <Relationsname> [ <Variablenname> ] VL Datenbanken I 11 22 Integritätsregeln in SQL: Beispiel I Kunden sind durch ihre Namen eindeutig identifiziert: assert IR1 for KUNDE K1, KUNDE K2: not( K1.KName = K2.KName ) or (K1.KAdr = K2.KAdr and K1.Kto = K2.Kto) VL Datenbanken I 11 23 Integritätsregeln in SQL: Beispiel II Kein Kundenkonto darf unter -100 absinken: assert IR2 for KUNDE : Kto >= -100 bzw. inklusive Angabe von Operationen: assert IR2 on insertion of KUNDE, update of KUNDE for KUNDE : Kto >= -100 VL Datenbanken I 11 24

Integritätsregeln in SQL: Beispiel III Das Konto von Weiß darf nicht überzogen werden: assert IR3 for KUNDE : not KName = Weiß or Kto >= 0 VL Datenbanken I 11 25 Integritätsregeln in SQL: Beispiel IV Der Durchschnittspreis für Karotten muß unter dem für Spargel liegen: assert IR4 deferred ( select avg (Preis) from LIEFERANT where Ware = Karotten ) <= (select avg (Preis) from LIEFERANT where Ware = Spargel ) VL Datenbanken I 11 26 Integritätsregeln in SQL: Beispiel V Nur solche Waren dürfen bestellt werden, für die es mindestens einen Lieferanten gibt: assert IR5 for AUFTRAG A: exists (select * from LIEFERANT where Ware = A.Ware) VL Datenbanken I 11 27

Integritätsregeln in SQL: Beispiel VI Der Brotpreis darf nicht erhöht werden: assert IR6 (on update of LIEFERANT (Preis)) for LIEFERANT: not Ware = Brot or new Preis <= old Preis VL Datenbanken I 11 28 Integritätsregeln in SQL: Beispiel VII Kunden dürfen nur gelöscht werden, wenn sie keine Waren mehr bestellt haben: assert IR7 deferred on deletion of KUNDE for KUNDE K: not exists (select * from AUFTRAG where KName = old K.KName) VL Datenbanken I 11 29 Integritätsregeln in SQL: Beispiel VIII Der Preis eines Grundnahrungsmittels darf innerhalb von drei Jahren höchstens um 15% steigen. kann in diesem Sprachvorschlag nicht ausgedrückt werden! VL Datenbanken I 11 30

Integritätsregeln in SQL: Beispiel IX Kunden müssen gelöscht werden, wenn sie keine Waren mehr bestellt haben: assert IR9 on deletion of AUFTRAG for AUFTRAG A1: exists (select * from AUFTRAG A2 where A2.KName = old A1.KName) else ( delete KUNDE K where K.KName = old A1.KName ); VL Datenbanken I 11 31 Trigger Trigger: Anweisung/Prozedur, die bei Eintreten eines bestimmten Ereignisses automatisch vom DBMS ausgeführt wird Anwendung: Erzwingen von Integritätsbedingungen ( Implementierung von Integritätsregeln) Auditing von DB-Aktionen Propagierung von DB-Änderungen VL Datenbanken I 11 32 Trigger (II) create trigger... after <Operation> <Anweisungen> entspricht einer speziellen Integritätsregel: assert...on <Operation> : false else ( <Anweisungen> ) VL Datenbanken I 11 33

Trigger: Entwurf und Implementierung Spezifikation von Ereignis und Bedingung für Aktivierung des Triggers Aktion(en) zur Ausführung Syntax in SQL:1999 festgelegt verfügbar in den meisten kommerziellen Systemen (aber mit anderer Syntax) VL Datenbanken I 11 34 SQL:1999-Trigger Syntax: create trigger <Name> after before <Ereignis> on <Relation> [ when <Bedingung> ] begin atomic < SQL-Anweisungen > end Ereignis: insert update [ of <Liste von Attributen> ] delete VL Datenbanken I 11 35 Weitere Angaben bei Triggern for each row bzw. for each statement: Aktivierung des Triggers für jede Einzeländerungen einer mengenwertigen Änderung oder nur einmal für die gesamte Änderung before bzw. after: Aktivierung vor oder nach der Änderung referencing new as bzw. referencing old as: Binden einer Tupelvariable an die neu eingefügten bzw. gerade gelöschten ( alten ) Tupel einer Relation Tupel der Differenzrelationen VL Datenbanken I 11 36

Beispiel für Trigger (I) Kein Kundenkonto darf unter -100 absinken: create trigger bad_account after update of Kto on KUNDE referencing new as INSERTED when (exists (select * from INSERTED where Kto < -100) ) begin atomic rollback; end ähnlicher Trigger für insert VL Datenbanken I 11 37 Beispiel für Trigger (II) Nur solche Waren dürfen bestellt werden, für die es mindestens einen Lieferanten gibt: create trigger bad_order after insert on AUFTRAG referencing new as INSERTED when (exists ( select * from INSERTED I where not exists ( select * from LIEFERANT where Ware = I.Ware)) begin atomic rollback; end VL Datenbanken I 11 38 Beispiel für Trigger (III) Kunden müssen gelöscht werden, wenn sie keine Waren mehr bestellt haben: create trigger bad_customer delete on AUFTRAG referencing old as O for each row when (not exists (select * from AUFTRAG A where A.KName = O.KName)) begin atomic delete from KUNDE where KName = O.KName; end VL Datenbanken I 11 39

Methoden der Integritätssicherung Integritätssicherung durch Änderungstransformationen transformiert Änderungsanweisungen in einer Hochsprache wie SQL so, daß das Ergebnis der Transformation integritätsrespektierend ist Integritätsbedingungen werden in Änderungen hineinkompiliert Generierung von Triggern bzw. ECA-Regeln aus deskriptiven Integritätsbedingungen VL Datenbanken I 11 40 Integritätssicherung durch Trigger 1. Bestimme Objekt o i, für das die Bedingung φ überwacht werden soll i.d.r. mehrere o i betrachten, wenn Bedingung relationsübergreifend ist Kandidaten für o i sind Tupel der Relationsnamen, die in φ auftauchen 2. Bestimme die elementaren Datenbankänderungen u ij auf Objekten o i, die φ verletzen können Regeln: z.b. Existenzforderungen beim Löschen und Ändern prüfen, jedoch nicht beim Einfügen etc. VL Datenbanken I 11 41 Integritätssicherung durch Trigger (II) 4. Bestimme je nach Anwendung die Reaktion r i auf Integritätsverletzung Rücksetzen der Transaktion (rollback) korrigierende Datenbankänderungen 5. Formuliere folgende Trigger: create trigger t-phi-ij after u ij when φ begin r i end 6. Wenn möglich, vereinfache entstandenen Trigger on o i VL Datenbanken I 11 42