Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Integritätserhaltung und - Überprüfung in deduktiven Datenbanken Martin Köhler 1.8.2003.

Ähnliche Präsentationen


Präsentation zum Thema: "Integritätserhaltung und - Überprüfung in deduktiven Datenbanken Martin Köhler 1.8.2003."—  Präsentation transkript:

1 Integritätserhaltung und - Überprüfung in deduktiven Datenbanken Martin Köhler

2 Gliederung Motivation Verfahren für nicht-rekursive Datenbanken Datenbank ohne Regeln Transaktionen und Regeln Verfahren für stratifizierbare Datenbanken Änderung des Datenbankzustands Integritätsüberprüfung Effizenzbetrachtungen Zusammenfassung

3 Motivation Warum Integritätsbedingung nicht einfach als Anfrage sehen: Integritätsbedingungen müssen immer erfüllt sein. Müssen nach nach jeder Änderung überprüft werden, als Anfrage stellen wäre zu aufwendig. Anfragen berücksichtigen nicht, das IB vorher erfüllt waren und nur durch die geänderten Fakten geändert werden können.

4 Verfahren für nicht-rekursive Datenbanken Algorithmus für nicht-rekursive Datenbanken Entwickelt aus Prolog Kontext, dass heißt Integritätsbedingungen sind Formeln, die auch Allquantoren enthalten können. Effiziente Auswertung von Integritäts- bedingungen nach Transaktionen

5 Eine Datenbank ist nicht-rekursiv, wenn es gibt für kein Fakt p(x) eine Ableitung der Form p(x) p(x) gibt. Es darf für jedes Fakt nur eine endliche Anzahl an Herleitungen geben. Verfahren für nicht-rekursive Datenbanken nicht-rekursiv - Erläuterung

6 Verfahren für nicht-rekursive Datenbanken Forme die Regeln so um, so dass sie effizient von Prolog auszuwerten sind. Erstelle für jede Integritätsbedingung eine Menge Regeln, die jeweils von einem Literal der Integritätsbedingung abhängen. Idee :

7 Bei einzelnen Einfügungen: Merke für jede Integritätsbedingung I Regeln folgender Form: insert L only_if r(F L ) (Wenn L positiv in I auftaucht) delete L only_if r(F L ) (Wenn L negativ I auftaucht) Verfahren für nicht-rekursive Datenbanken Ansatz bei Datenbanken ohne Regeln

8 Integritätsbedingung: F =  X(not employee(X)  not worker(X)  manager(X)  not manger(X)  worker(X)) Jeder Angestellte ist entweder ein Manager oder ein Arbeiter. Die sich daraus ergebenden Bedingungen: Verfahren für nicht-rekursive Datenbanken Beispiel

9 insert employee(X) only_if (not worker(X)  manager(X)  not manger(X)  worker(X)) insert worker(X) only_if (not employee(X)  not manager(X)) insert manager(X) only_if (not employee(X)  not worker(X)) delete worker(X) only_if (not employee(X)  manager(X)) delete manager(X) only_if (not employee(X)  worker(X)) Verfahren für nicht-rekursive Datenbanken Beispiel

10 Wenn nun eine einzelne Einfügung oder Löschung kommt: Durchsuche die Einfüge- (bzw Lösch-) Bedingungen und teste ob sie erfüllt sind. Dies ist einfach und effizient möglich, da man nur einzelne Regeln auswerten muss. Verfahren für nicht-rekursive Datenbanken Integritätsüberprüfung

11 Berechne neuen Datenbankzustand Für jedes geänderte Fakt verfahre wie bei einer einzelnen Änderung. (Werte es aber über dem neuen Zustand aus) Überprüfe aber auch jedes Fakt, das sich neu ableiten lässt bzw nicht mehr ableiten lässt. Verfahren für nicht-rekursive Datenbanken Ansatz bei Transaktionen und Regeln

12 Gegeben ein Literal L * (Einfügung): insert L only_if UC Wenn es eine Regel gibt: insert L only_if UC und es gibt eine konsistente Substitution für L bezüglich L *, werte sie aus und überprüfe die Integrität. Verfahren für nicht-rekursive Datenbanken Algorithmus (1) Beispiel: insert manager(X) only_if (not employee(X)  not worker(X)) Neues Literal: manager(Bob) Überprüfe: not employee(X)  not worker(X)

13 Gegeben ein Literal L * (Einfügung): Für alle Regeln in denen L positiv auftaucht: P L  B Berechne die Substitutionen für P und rufe damit den Algorithmus mit include(P) rekursiv auf. Verfahren für nicht-rekursive Datenbanken Algorithmus (2) Beispiel: p(x) q(x), r(x). Fakten: q(1). r(1). r(2). Neues Fakt: +q(2)! Rufe den Algorithmus mit +p(2)! auf.

14 Gegeben ein Literal L * (Einfügung): Für alle Regeln in denen L negativ auftaucht: P not L  B Berechne die Substitutionen für P und rufe damit den Algorithmus mit remove(P) rekursiv auf. Verfahren für nicht-rekursive Datenbanken Algorithmus (3) Beispiel: p(x) not q(x), r(x). Fakten: q(1). r(1). r(2). Neues Fakt: +q(2)! Rufe den Algorithmus mit -p(2)! auf.

15 Wenn der Algorithmus eine Integritätsverletzung meldet, dann wird genau das Literal und die Stelle gemeldet, an der die Konsistenz verletzt wird. Verfahren für nicht-rekursive Datenbanken Integritätserhaltung

16 Der Algorithmus terminiert, wenn die Datenbank nicht rekursiv ist. Der Algorithmus ist nicht zielgerichtet, sondern wandert die Regeln bottom up durch und materialisiert alle Fakten, die neu sein könnten. Verfahren für nicht-rekursive Datenbanken Zusammenfassung

17 Verfahren für stratifizierbare Datenbanken Ausgehend von der Änderung der Datenbank, berechne welche Integritätsbedingungen betroffen sind. Stelle diese Integritätsbedingungen dann als Anfrage. Idee

18 Wenn für zwei Datenbanken D und D‘ gilt: D  D‘, dann kann man Mengen positiver und negativer Änderungen wie folgt definieren. pos 0 D,D‘ = {A: A <- W  D‘ \ D} (Neue Fakten) neg 0 D,D‘ = {} Verfahren für stratifizierbare Datenbanken Datenbankänderung (1)

19 pos n+1 D,D‘ = {A  : A W, B taucht positiv in W auf, C  pos n D,D‘ und  ist konsistente Substitution für B und C} + {A  : A W, B taucht negativ in W auf, C  neg n D,D‘ und  ist konsistente Substitution für B und C} neg n+1 D,D‘ = {A  : A W, B taucht positiv in W auf, C  neg n D,D‘ und  ist konsistente Substitution für B und C} + {A  : A W, B taucht negativ in W auf, C  pos n D,D‘ und  ist konsistente Substitution für B und C} Verfahren für stratifizierbare Datenbanken Datenbankänderung (2)

20 pos D,D‘ =   pos n D,D‘ neg D,D‘ =   neg n D,D‘ Verfahren für stratifizierbare Datenbanken Datenbankänderung (3) Nun hat man die Menge möglicher neuer Fakten und die Menge möglicher gelöschter Fakten. Diese Definition hat vorausgesetzt das D  D‘ gilt, das heißt D‘ enthält alle Fakten aus D. (Bis jetzt also noch keine echte Transaktion mit Löschungen und Einfügungen zusammen)

21 Teile eine Transaktion wie folgt auf: Zuerst werden Löschungen ausgeführt, die die Datenbank D nach D‘‘ überführen, danach Einfügungen die D‘‘ nach D‘ überführen. Damit gilt: D‘‘  D‘ und D  D‘‘ Verfahren für stratifizierbare Datenbanken Integritätsüberprüfung (1)

22 Betrache Integritätsbedingungen der Form: W =  x 1,...  x n W‘ Definiere Mengen konsistenter Substitutionen, die sich auf x 1 bis x n beschränken Verfahren für stratifizierbare Datenbanken Integritätsüberprüfung (2)

23  = {  :  ist konsistente Substitution von B positiv in W und C in neg D‘‘,D‘ oder  ist konsistente Substitution von B negativ in W und C in pos D‘‘,D‘ }  = {  :  ist konsistente Substitution von B positiv in W und C in pos D‘‘,D oder  ist konsistente Substitution von B negativ in W und C in neg D‘‘,D } Verfahren für stratifizierbare Datenbanken Integritätsüberprüfung (3)

24 Überprüfe nun für alle konsistenten Substitutionen  aus    ob W‘  erfüllt ist. Im schlimmsten Fall muss man die ganze Integritätsbedingung als Anfrage stellen, im Idealfall manche Integritätsbedingungen garnicht oder man hat schon Bindungen für manche Variablen. Verfahren für stratifizierbare Datenbanken Integritätsüberprüfung (4)

25 Die Effizienz des Verfahrens hängt davon ab, wie gut man die Menge pos und neg berechnen kann. Dabei gibt es 2 Möglichkeiten. Verfahren für stratifizierbare Datenbanken Effizienzbetrachtungen (1)

26 Die Menge bestehen nur aus Kopfliteralen der Regeln, ohne das dort für einzelne Variablen Werte eingesetzt sind. Verfahren für stratifizierbare Datenbanken Effizienzbetrachtungen (2) Regeln: p(x) q(x)Fakten: q(1). q(2). Änderung: +q(4)! pos = {q(x), p(x)} neg = {}

27 Man bezieht die Variablenbelegung mit rein. Dies liefert bessere Bindungen für die Variablen und effizientere Anfragen für die Integritätsbedingungen. Verfahren für stratifizierbare Datenbanken Effizienzbetrachtungen (3) Regeln: p(x) q(x)Fakten: q(1). q(2). Änderung: +q(4)! pos = {q(4), p(4)} neg = {}

28 Beide Verfahren sind nicht zielgerichtet, sondern wandern den Abhängigkeits- graphen bottom up durch. Sie bestimmen mehr Fakten als nötig. Zusammenfassung

29 Danke Noch Fragen?


Herunterladen ppt "Integritätserhaltung und - Überprüfung in deduktiven Datenbanken Martin Köhler 1.8.2003."

Ähnliche Präsentationen


Google-Anzeigen