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

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmen und Datenstrukturen
Advertisements

Programmieren in Logik
Algorithmen für das Erfüllbarkeitsproblem SAT
Deduktive Datenbanken
Hier einige Hieroglyphen:
Definition [1]: Sei S eine endliche Menge und sei p eine Abbildung von S in die positiven reellen Zahlen Für einen Teilmenge ES von S sei p definiert.
Rekursion: Rekurrenz: Algorithmen rufen sich selbst (rekursiv) auf.
Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel durch eine Rekursionsformel (recurrence,
Eine dynamische Menge, die diese Operationen unterstützt,
6. Regelbasierte Systeme
Polynomial Root Isolation
Algebraische Zahlen: Exaktes Rechnen mit Wurzeln
Schnelle Matrizenoperationen von Christian Büttner
Zusatzthemen. Kapitel 5 © Beutelspacher Juni 2004 Seite 2 Inhalt Gleichungssysteme mit Parameter Wurzelgleichungen Irrationale Zahlen Induktion WGMS III.
Claudio Moraga; Gisbert Dittrich
TECHNISCHE UNIVERSITÄT DARMSTADT Naive Bayes for Ranking
Suche in Texten (Stringsuche )
Default Logiken Zhao Li
Synonyme: Stapel, Keller, LIFO-Liste usw.
Lösung 6.3 Denksportaufgabe
Objektrelationales Mapping mit JPA Working with Persistent Objects Jonas Bandi Simon Martinelli.
Sortierverfahren Richard Göbel.
FH-Hof Optimierungsverfahren für kombinatorische Probleme Richard Göbel.
REKURSION + ITERATION. Bemerkung: Die in den folgenden Folien angegebenen "Herleitungen" sind keine exakten Beweise, sondern Plausibilitätsbetrachtungen.
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. Th. Ottmann.
Bestimmung des Next-Arrays im KMP-Algorithmus
Das Maßproblem von Klee
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 - AVL-Bäume: Entfernen, Bruder-Bäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (20 - AVL-Bäume: Entfernen, Bruder-Bäume) Prof. Th. Ottmann.
Erweiterte Datenmodelle Referentin: Lena Becker HS: Datenbanken vs. Markup Datum:
Kapitel 5 Stetigkeit.
Semantik von Prolog & Unifikation
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Andreas Abecker Knowledge Management Research Group Beispiel für quantitative Repräsentation von Unsicherheit: Certainty Theorie in MYCIN – MYCIN ist ein.
Zahlen mit Zahlen ausmessen
Algorithmus zur Zerlegung in 3NF (1)
3.5.2 Fremdschlüssel/ Referentielle Integrität (6/9)
Zerlegung und Konstruktion Frage 2: Welche Zerlegungen sind korrekt? Zerlegung ersetzt Relationstyp R(A 1,...,A n ) und Menge von assoziierten Abhängigkeiten.
Maschinelles Lernen und automatische Textklassifikation
Maschinelles Lernen Bayessche Verfahren (Mitchell Kap. 6), Teil 1.
Integritätsbedingungen
11. Vorlesung: Dynamische Konzepte am Fallbeispiel
Effiziente Algorithmen
Effiziente Algorithmen
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Hartmut Klauck Universität Frankfurt WS 06/
Polynome und schnelle Fourier-Transformation
Strategie der Modellbildung
ENDLICHE KÖRPER RSA – VERFAHREN.
Arne Vater Wintersemester 2006/ Vorlesung
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Algorithmen für das Erfüllbarkeitsproblem SAT
SFZ FN Sj. 13/14 Python 3 Rekursion Inf K1/2 Sj 13/14
Structured Query Language
Integritätsbedingungen (Constraints)
7. Formale Sprachen und Grammatiken
Semantische Integritätsbedingungen  AIFB SS Überwachung von Integritätsbedingungen (1/3) Dem DBMS muß mitgeteilt werden, wann eine Integritätsbedingung.
Relationentheorie  AIFB SS Semantische Integritätsbedingungen (1|7) Eine „semantische Integritätsbedingung“ (sIB)  über der Attributmenge.
Inhalt Einordnung und Funktion der lexikalische Analyse Grundlagen
Constraint Delaunay Triangulations
Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar?
Der A*-Algorithmus.
Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.
Lineare Optimierung Nakkiye Günay, Jennifer Kalywas & Corina Unger Jetzt erkläre ich euch die einzelnen Schritte und gebe Tipps!
 Präsentation transkript:

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

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

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.

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

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.

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.

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)

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:

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

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.

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.

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)

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.

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.

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.

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.

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.

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

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}

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)

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‘‘

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

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}

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.

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.

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

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

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

Danke Noch Fragen?