Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Integritätserhaltung und -Überprüfung in deduktiven Datenbanken

Ähnliche Präsentationen


Präsentation zum Thema: "Integritätserhaltung und -Überprüfung in deduktiven Datenbanken"—  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 Verfahren für nicht-rekursive Datenbanken
nicht-rekursiv - Erläuterung 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.

6 Verfahren für nicht-rekursive Datenbanken
Idee: 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.

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

8 Verfahren für nicht-rekursive Datenbanken
Beispiel 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:

9 Verfahren für nicht-rekursive Datenbanken
Beispiel 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))

10 Verfahren für nicht-rekursive Datenbanken
Integritätsüberprüfung 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.

11 Verfahren für nicht-rekursive Datenbanken
Ansatz bei Transaktionen und Regeln 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.

12 Verfahren für nicht-rekursive Datenbanken
Algorithmus (1) Gegeben ein Literal L* (Einfügung): 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. 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 Verfahren für nicht-rekursive Datenbanken
Algorithmus (2) 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. 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 Verfahren für nicht-rekursive Datenbanken
Algorithmus (3) 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. 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 Verfahren für nicht-rekursive Datenbanken
Integritätserhaltung Wenn der Algorithmus eine Integritätsverletzung meldet, dann wird genau das Literal und die Stelle gemeldet, an der die Konsistenz verletzt wird.

16 Verfahren für nicht-rekursive Datenbanken
Zusammenfassung 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.

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

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

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

20 Verfahren für stratifizierbare Datenbanken
Datenbankänderung (3) posD,D‘ =  posnD,D‘ negD,D‘ =  negnD,D‘ 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 Verfahren für stratifizierbare Datenbanken
Integritätsüberprüfung (1) 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‘‘

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

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

24 Verfahren für stratifizierbare Datenbanken
Integritätsüberprüfung (4) Ü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.

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

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

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

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

29 Danke Noch Fragen?


Herunterladen ppt "Integritätserhaltung und -Überprüfung in deduktiven Datenbanken"

Ähnliche Präsentationen


Google-Anzeigen