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

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

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

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

Integritätserhaltung und -Überprüfung in deduktiven

Datenbanken

Martin Köhler

1.8.2003

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

Gliederung

• Motivation• Verfahren für nicht-rekursive Datenbanken

Datenbank ohne RegelnTransaktionen und Regeln

• Verfahren für stratifizierbare DatenbankenÄnderung des DatenbankzustandsIntegritätsüberprüfungEffizenzbetrachtungen

• Zusammenfassung

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

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.

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

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

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

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

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

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:

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

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)

Verfahren für nicht-rekursive Datenbanken

Ansatz bei Datenbanken ohne Regeln

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

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

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

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

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

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

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

• 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

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

Gegeben ein Literal L* (Einfügung):

Wenn es eine Regel gibt:insert L only_if UCinsert 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)

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

Gegeben ein Literal L* (Einfügung):

Für alle Regeln in denen L positiv auftaucht: P L BBerechne 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.

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

Gegeben ein Literal L* (Einfügung):

Für alle Regeln in denen L negativ auftaucht:P not L BBerechne 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.

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

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

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

• 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

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

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

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

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‘ = {}

Verfahren für stratifizierbare Datenbanken

Datenbankänderung (1)

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

• 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}

Verfahren für stratifizierbare Datenbanken

Datenbankänderung (2)

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

• posD,D‘ = posnD,D‘

• negD,D‘ = negnD,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)

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

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)

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

• Betrache Integritätsbedingungen der Form:W =x1,...xn W‘

• Definiere Mengen konsistenter Substitutionen, die sich auf x1 bis xn beschränken

Verfahren für stratifizierbare Datenbanken

Integritätsüberprüfung (2)

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

= {: 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}

Verfahren für stratifizierbare Datenbanken

Integritätsüberprüfung (3)

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

• Ü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)

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

• 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)

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

• 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 = {}

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

• 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 = {}

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

• Beide Verfahren sind nicht zielgerichtet, sondern wandern den Abhängigkeits-graphen bottom up durch.

• Sie bestimmen mehr Fakten als nötig.

Zusammenfassung

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

DankeNoch Fragen?