Rheinische Friedrich-Wilhelms-Universität Bonn Institut für Informatik III Diplomarbeit Analyse und Vergleich zweier Ansätze zur Lösung des Sichtenänderungsproblems für relationale Datenbanken von Samer Obeid Erstgutachter: Prof. Dr. R. Manthey Bonn, November 2007 Danksagung Bedanken möchte ich mich besonders bei Herrn Prof. Manthey für die Unterstützung und die zuverlässige Betreuung. 2 1 EINLEITUNG........................................................................................................... 5 2 GRUNDLAGEN ....................................................................................................... 7 2.1 Relationale Datenbanken 7 2.2 Relationale Algebra 8 2.3 Prädikatenlogik 10 2.4 SQL 11 2.5 Sichten 13 2.6 Das Sichtenänderungsproblem 14 3 DER ANSATZ VON MASUNAGA......................................................................... 19 3.1 Einführung 19 3.2 Terminologie 21 3.3 Übersetzung 23 3.4 Lokale Übersetzungsregeln 24 3.4.1 Vereinigung und Differenz 25 3.4.2 Projektion und Selektion 28 3.4.3 Produkt und Join 30 4 DER ANSATZ VON LARSON UND SHETH......................................................... 38 4.1 Terminologie 38 4.2 Übersetzung 39 4.3 Übersetzungsregeln 40 4.3.1 Vereinigung, Durchschnitt und Differenz 40 4.3.2 Selektion und Projektion 42 4.3.3 Join 44 4.4 Mehrdeutigkeiten 49 3 5 VERGLEICH DER ANSÄTZE ............................................................................... 51 5.1 Voraussetzungen und Notation 51 5.2 Methodik 53 5.2.1 Änderungsoperatoren 53 5.2.2 Übersetzungen 54 5.2.3 Syntaktisches und semantisches Wissen 56 5.3 Übersetzungsregeln 56 5.3.1 Vereinigung und Differenz 57 5.3.2 Projektion und Selektion 57 5.3.3 Join und Produkt 58 6 ZUSAMMENFASSUNG ........................................................................................ 67 Literaturverzeichnis 69 ERKLÄRUNG........................................................................................................... 70 4 1 Einleitung Die Basisrelationen einer Datenbank beinhalten Informationen, die einen Ausschnitt der Realität repräsentieren. Diese Daten sind physisch in der Datenbank gespeichert. Dazu werden Sichten definiert, die die Realität von einer bestimmten Perspektive aus betrachten. Sie sind virtuell; gespeichert sind sie als Sichtdefinition, welche beim Zugriff ausgewertet wird. Beide Arten von Relationen, zusammen mit den Integritätsbedingungen und anderen Metainformationen, werden von einem Datenbankmanagementsystem verwaltet. Dieses besitzt auch eine Schnittstelle zum Benutzer, mit der er die Datenbank abfragen und verändern kann. Es gibt die Möglichkeiten, dass sich die Realität ändert, oder dass man wünscht, die Realität zu ändern. In dieser Arbeit gehen wir auf die zweite Problematik ein, das sogenannte Sichtenänderungsproblem, bei dem für die Änderung einer Sicht eine Übersetzung in Änderungen der Basisrelationen gefunden werden muss. Hierbei entstehen mehrere Teilprobleme: Für den Sichtänderungswunsch eine Übersetzung zu finden, die die Sichtdefinitionen und Integritätsbedingungen nicht verletzt; vermeiden unerwünschter Seiteneffekte der Übersetzung; Auflösung von Mehrdeutigkeiten. In dieser Arbeit wollen wir zwei Ansätze, die Lösungen für die genannten Teilprobleme vorstellen, vergleichen und darauf aufbauend einen erweiterten Lösungsansatz herausarbeiten. Die Ansätze zeichnen sich dadurch aus, dass sie über rein syntaktische Ansätze hinausgehen. Der Ansatz von Larson und Sheth [LS91] geht vor allem auf die Nutzung von Schlüsselbedingungen ein. Masunaga [Mas84] dagegen behandelt keine Integritätsbedingungen, so dass sein Ansatz mehr Übersetzungen erlaubt. In Kapitel 2 gehen wir auf die Themen ein, die zum Verständnis der weiteren Kapitel notwendig sind. Wir klären die Grundbegriffe relationaler Datenbanken und der Relationalalgebra, gehen kurz auf Prädikatenlogik und die Abfragesprache SQL ein und formalisieren Sichten und das Sichtenänderungsproblem. In Kapitel 3 bzw. Kapitel 4 beschreiben wir den Ansatz 5 von Masunaga bzw. Larson und Sheth und arbeiten ihre Grenzen und Vorzüge aus. Kapitel 5 vergleicht beide Ansätze und diskutiert Bereiche, die ähnlich bzw. unterschiedlich gelöst werden. Kapitel 6 gibt noch einmal eine Zusammenfassung. 6 2 Grundlagen Im ersten Abschnitt dieses Kapitels wird Grundwissen über relationale Datenbanken, die relationale Algebra, die Prädikatenlogik, die Anfragesprache SQL, den Domänenkalkül und über Sichten eingeführt. Wir lehnen die Terminologie an die Vorlesung „Informationssysteme“ von Manthey [Man03] und an das Buch „Datenbanksysteme“ von Kemper und Eickler [KE01] an. 2.1 Relationale Datenbanken Eine relationale Datenbank besteht aus einer oder mehreren Relationen. Sie wird durch ein Datenbankmanagementsystem (DBMS) verwaltet. Dieses stellt den Benutzern verschiedene Dienste zur Verfügung. Es organisiert die Speicherung der Daten, stellt eine Abfragesprache zur Verfügung, die den Zugriff auf die Datenbank ermöglicht, es koordiniert den Zugriff mehrer Benutzer, es stellt sicher, dass bestimmte Bedingungen an den Zustand der Datenbank eingehalten werden, und es verwaltet Transaktionen. Eine Domäne, die auch Wertebereich genannt wird, ist eine Menge von gleichartigen Elementen. Wenn D1, …, Dn (nicht notwendig verschiedene) Domänen sind, dann ist D1 ×…× Dn eine Menge von Tupeln. Jede endliche Teilmenge einer Tupelmenge ist eine Relation. Die Elemente ai, die innerhalb der Tupel an der Stelle i vorkommen, werden Werte genannt. Das Schema einer Relation legt die Struktur der Relation fest und ist durch die zugrundeliegenden Domänen geprägt. Das Schema ordnet der Relation einen Namen zu. Außerdem wird auch jeder Spalte ein Name zugeordnet, den wir Attribut nennen, und einen Domäne, aus der die Werte dieser Spalte stammen. Weiterhin enthält das Schema auch Integritätsbedingungen. Diese sind Forderungen, als boolesche Ausdrücke formuliert, die von jedem Zustand der Datenbank erfüllt sein müssen. Die Integritätsbedingungen können an Spalten, an ganze Relationen, oder sogar an die gesamte Datenbank gebunden sein. In Bezug auf die Transaktionen, werden die Integritätsbedingungen auf die Transaktion als ganzes angewandt. Man spricht von dem Zustand einer Relation, wenn man über die Menge aller in der Relation enthaltenen Tupel zu einem bestimmten Zeitpunkt redet. 7 2.2 Relationale Algebra Eine Algebra besteht aus einer Menge von Operatoren und einer Basismenge, die unter diesen Operatoren auf sich selbst abgebildet wird. Im Fall der relationalen Algebra (RA) besteht diese Basismenge aus Relationen. Die relationale Algebra dient dazu, Informationen aus relationalen Datenbanken zu extrahieren. Die Basisoperatoren sind Selektion, Projektion, Vereinigung, Differenz, Produkt und Umbenennung von Attributen und Relationen. Allerdings kann man daraus noch weitere Operatoren ableiten, die es in manchen Situationen ermöglichen, Ausdrücke leichter zu formulieren. Es ist darauf hinzuweisen, dass die RA in gewisser Weise eine eingeschränkte Algebra ist, weil bestimmte Bedingungen an die Operanden gestellt werden, damit der Operator wirklich abgeschlossen ist. Darauf werden wir im Folgenden noch genauer eingehen. Die Selektion, bezeichnet mit σF(U), wählt gemäß einer Selektionsbedingung aus einer Relation einige Tupel aus und verwirft andere. U bezeichnet die Argumentrelation und F eine aussagenlogische Formel mit Vergleichsoperatoren (=, <, >, ≤, ≥, ≠), deren Atome Attributnamen der Relation U oder Konstanten sind. Die Selektion übernimmt nur die Tupel, für die die Selektionsbedingung wahr ist. Bei der Projektion werden Tupel auf eine Teilmenge ihrer Attribute beschränkt. Wir schreiben πA(U). Hierbei ist U die Argumentrelation und A eine Menge von Attributnamen {A1,…,An}, deren Attributwerte in die neuen Tupel übernommen werden. Die Tupel werden also in der Regel kürzer durch die Projektion. Häufig werden die Mengenklammern bei der Notation weggelassen: π A1,Κ ,An (U) Es ist wichtig zu beachten, dass es durch die Projektion zu Duplikaten kommen kann, die allerdings durch die Projektion eliminiert werden. Die Vereinigung in der relationalen Algebra entspricht im Wesentlichen der Vereinigung in der Mengenlehre. Wir notieren sie als U ∪ W. Es werden also Tupel übernommen, die in U oder in W vorkommen. Zu beachten ist allerdings, dass die beiden Argumentrelationen vereinigungsverträglich sein müssen. Vereinigungsverträglichkeit bedeutet, dass beide Relationen 8 dieselben Attribute und übereinstimmende Wertebereiche haben. Dies ist einer der Fälle, in dem der Operator nur eingeschränkt abgeschlossen ist. Ähnlich der Vereinigung entspricht die Differenz der relationalen Algebra der der Mengenlehre, wobei auch hier die Vereinigungsverträglichkeit vorausgesetzt wird. Wir schreiben U − W. Es werden in die Ergebnisrelation nur die Tupel übernommen, die in U aber nicht in W vorkommen. Anders als beim Kreuzprodukt der Mengenlehre, wird bei der relationalen Algebra nicht ein Tupel aus Tupeln gebildet, sondern die beiden Tupel werden zu einem Tupel zusammengesetzt. Das Kreuzprodukt notieren wir U × W. Hierbei ist wichtig, dass auch die Schemata der Argumentrelationen kombiniert werden, indem die Mengen der Attribute vereinigt werden. Falls es in U bzw. W Attribute mit gleichem Namen geben sollte, werden den Attributnamen die Relationsnamen und ein Punkt vorangestellt. Die Umbenennung des Relationsnamen notieren wir durch ρ U’(U). Die Relation U wird in diesem Fall in U’ umbenannt. Bei der Umbenennung der Attributnamen notieren wir ρA’←A(U). Hierbei ist A der alte und A’ der neue Attributname in der Argumentrelation U. In vielen Texten wird auf die Umbenennung nicht ausdrücklich eingegangen, sondern es wird vorausgesetzt, dass alle Namen schon eindeutig gewählt sind bzw. dass keine besonderen Probleme durch Umbenennungen auftreten. Aus diesen sechs Basisoperationen können weitere Operatoren abgeleitet werden. Es gibt viele verschiedene Join-Arten. Wir erklären hier nur den Natural Join U ⋈ W. Hierbei werden zwei Relationen auf besondere Art zu einer einzigen verbunden. Ein Tupel aus der einen Relation wird mit einem Tupel aus der anderen Relation verknüpft, falls die Werte bei den gleichnamigen Attributen beider Tupel übereinstimmen. Man kann den Natural Join als eine Verkettung von Kreuzprodukt, Selektion und Projektion sehen. Die Selektionsbedingung stellt hierbei sicher, dass in den gleichnamigen Attributen gleiche Werte vorkommen und die Projektion, dass die gemeinsamen Attribute nur einmal in der Ergebnisrelation vorkommen. Da der Join-Operator den Kreuzproduktoperator implizit beinhaltet, wird er in der Forschung oft statt diesem benutzt: 9 U ⋈ W = π A1 ,Κ , Am ,U .B1 ,Κ ,U .Bk , C1 ,Κ , C n (σU .B1 =W .B1 ∧Κ ∧U .Bk =W .Bk (U × W )) Beim Durchschnitt werden die Tupel übernommen, die sowohl in der einen, als auch in der anderen Argumentrelation vorkommen. Diese müssen natürlich vereinigungsverträglich sein. Der Durchschnitt lässt sich mit Hilfe der Mengenlehre aus der Differenz wie folgt herleiten: U ∩ W = U − (U − W ) . Die Division ist ein Operator, der zur Allquantifizierung benutzt wird. Die Notation ist R ÷ S. Es werden nur die Tupel aus R übernommen, die in Kombination mit allen Tupel aus S vorkommen. Das Schema der Ergebnisrelation ist att(R)−att(S). Man kann die Division wie folgt herleiten: U ÷ W = π att (U ) − att (W ) (U ) − π att (U ) − att (W ) ((π att (U ) − att (W ) (U ) × W ) − U ) 2.3 Prädikatenlogik Die Prädikatenlogik basiert auf der Aussagenlogik. Die Formeln der Aussagenlogik, die Aus- sagen, sind Ausdrücke, von denen man sagen kann, dass sie wahr oder falsch sind, z. B.: „5 ist Element der Menge D“. Die Aussagen werden mit Hilfe der Junktoren (∧, ∨, ¬) zu komplexen Aussagen zusammengefügt. Die Bedeutung der Junktoren kann mit Hilfe von Wahrheitstafeln angegeben werden. Die Prädikatenlogik erweitert die Aussagenlogik um parametrisierte Aussagen, wie z. B.: „t ist Element der Menge D“. Hier muss die Variable t erst mit einem Wert belegt werden, bevor man den Wahrheitsgehalt der Aussage feststellen kann. Die Grundlage in der Prädikatenlogik sind mehrstellige Prädikate, die wie Relationen Beziehungen zwischen Werten ausdrücken: ist_element_von(t, D). Diese können mit den aus der Aussagenlogik bekannten Junktoren zu komplexen Formeln zusammengefasst werden. Außerdem gibt es in der Prädikatenlogik Quantoren, das sind Operatoren, die Aussagen über Elemente einer Menge darstellen. Der 10 Allquantor (∀) macht eine Aussage über alle Objekte einer Menge, der Existenzquantor (∃) über mindestens eines der Elemente, z. B.: ∀t ∈ T : t ∈ S ∧ t ∈ W . 2.4 SQL Die Abfragesprache SQL (Structured Query Language) ist die von den meisten RDBMS implementierte Abfragesprache auf der Benutzerebene. Sie basiert sowohl auf der relationalen Algebra, als auch auf dem Tupelkalkül. Die relationale Algebra gibt im Gegensatz zum Tupelkalkül die Abarbeitungsreihenfolge der Operationen vor. Eine Anfrage im Tupelkalkül (TRC, tuple relational calculus) hat die Form {v | F } , oder die Form {[t1, Κ , t n ] | G} , wobei folgende Notation verwendet wurde v eine Tupelvariable, F eine TRC-Formel mit freier Variable v, t1,…,tn TRC-Terme und G eine TRC-Formel mit den gleichen freien Variablen wie in den Termen t1,…,tn. TRC-Terme sind Konstanten, Variablen und Attributterme der Form v.A (v Variable, A Attribut, Postfixform). TRC-Formeln haben folgende Form: • Typformeln der Form R(v) (v Variable, R Relationsname) • Vergleichsformeln der Form t1 Θ t2 (t1, t2 TRC-Terme, Θ Vergleichsoperator) • Wenn F Formel ist, dann sind auch ¬F, (F), ∃ v : (F), ∀ v : (F) Formeln. • Wenn F1 und F2 Formeln sind, dann sind auch (F1 ∧ F2), (F1 ∨ F2), (F1 ⇒ F2) Formeln. Ein Beispiel für einen TRC-Ausdruck ist {[ s.Name] | Studenten( s ) ∧ s.Semester > 9} . Hierbei ist zu beachten, dass SQL sich auf den Sprachumfang des sicheren Tupelkalküls beschränkt, also auf die entscheidbare Teilsprache, für die die Berechnung für jede Anfrage terminiert. Das liegt daran, dass SQL die Relationen syntaktisch absichert: SELECT … FROM Rel1, …, Reln WHERE …. 11 Unsichere Anfragen können also gar nicht formuliert werden (¬ Stadt(v), Fluss(f) ∨ Stadt(s)). Die Mächtigkeit der beiden Sprachen (die ja gleich mächtig sind) wird allerdings erweitert. SQL stellt Aggregatfunktionen (wie MIN, MAX, COUNT) und arithmetische Operationen zur Verfügung. Außerdem können durch Sichten Ausdrücke benannt werden, und in neueren Spezifikationen von SQL, erlaubt dies rekursive Anfragen zu stellen. Ein wichtiger Unterschied zwischen SQL und Relationenalgebra bzw. Tupelkalkül ist, dass SQL nicht mit dem theoretischen Relationenbegriff arbeitet, sondern mit der Tabelle als Grundstruktur. Der Unterschied ist nun, dass der Tabelle prinzipiell eine Ordnung zugrunde liegt und dass die Duplikatfreiheit nicht gewährleistet ist, was sie vom theoretischen Mengenbegriff unterscheidet. SQL versteckt diese Eigenschaften – aus Gründen der Effizienz – nicht, sondern bietet ein besonderes Schlüsselwort an, falls die Duplikatfreiheit speziell gefordert wird (DISTINCT). Hinzuweisen ist darauf, dass im Zusammenhang mit SQL oft eine besondere Terminologie benutzt wird: auf Tabelle und Relation sind wir schon eingegangen; der Begriff „Spalte“ wird für Attributname benutzt; „Zeile“ bezeichnet die Tupel der Relation; „Domäne“ ist das Wort für Wertebereich. Man kann die Befehle von SQL in zwei Gruppen einteilen: die Data Definition Language (DDL) und die Data Manipulation Language (DML). Die DDL enthält Befehle zum Erzeugen und Verändern der Schemata der Datenbank und die DML enthält Befehle zum Abfragen und Modifizieren des Zustands der Datenbank. Die Abfragebefehle der DML sind der Teil der Sprache, die mit der Relationalalgebra zu vergleichen ist. Man kann als Grundstruktur einer SQL-Anfrage den SELECT-FROM-WHERE Block sehen. SELECT xi1.A1, …, xim.Am FROM R1 x1, …, Rn xn WHERE Cond ↨ π A1 ,Κ , Am (σ Cond ( R1 ×Κ × Rn )) 12 Auffällig ist hierbei, dass die SQL-Begriffe sprachlich nicht zu den Operatoren der Relationalengebra passen: SELECT ist die Projektion, und WHERE ist die Selektion. Der SELECTFROM-WHERE Block drückt somit Produkt, Selektion, Projektion und auch Join aus. Vereinigung, Durchschnitt und Mengendifferenz werden explizit ausgedrückt: ∪ ≈ UNION ∩ ≈ INTERSECT − ≈ MINUS Die Operanden dieser drei Operanden können wieder andere SQL-Ausdrücke sein. Umbenennungen können an einigen Stellen mit Hilfe des Schlüsselworts AS ausgedrückt werden. Man sieht also, dass es sich bei SQL um eine relational vollständige Sprache handelt. Die Informationen, die mit Hilfe der DDL bearbeitet werden, sind Tabellennamen, Spaltennamen und Domänen der Spalte und Integritätsbedingungen. Bei den Integritätsbedingungen werden uns später vor allem die Primärschlüssel- und Fremdschlüssel-Eigenschaften interessieren. Der Primärschlüssel ist eine Spalte, oder eine Menge von Spalten, die eine Zeile eindeutig identifizieren. Ein Fremdschlüssel ist die Bedingung an eine Spalte (oder mehrere Spalten), dass sie nur Werte eines bestimmten Primärschlüssels einer anderen Tabelle enthält. Es lässt sich auch ein Name mit einer Sicht verknüpfen, die durch einen DML-Ausdruck beschrieben wird. 2.5 Sichten Physisch gespeicherte Relationen nennt man Basisrelationen. Eine Sicht ist eine virtuelle Relation, die von anderen Relationen abgeleitet ist. Die Tupel einer Sicht sind i. a. nicht explizit in der Datenbank gespeichert. Im DBMS ist die Sichtdefinition als Regel gespeichert, die angewendet wird, falls auf die Sicht zugegriffen wird. Da eine Sicht auch von anderen Sichten gebildet werden darf, passiert es manchmal, dass die Beziehung zwischen einer Sicht und ihren Basisrelationen durch mehrere Sichten durch geht. Man kann dann den Operatorenbaum bilden, der als Knoten Operationen hat. Die Struktur des Baumes drückt die Schachtelung der Definition aus. Nun können die Sichten nach der Wurzel des Baumes benannt werden, wie z. B. Union-Sicht oder Join-Sicht. Abbildung 2.2 zeigt ein Beispiel eines Operato13 renbaums zu einer Produktsicht, die auf zwei Basisrelationen B1 bzw. B2 basiert und durch die Formel π(U) × (U ∩ W) beschrieben ist. × π ∩ U W (Abbildung 2.2) Die mathematische Definition einer Sicht ist: Sei U eine Relation U(u1, u2, …, un) mit den Attributen u1, u2, …, un, die auf den Domänen dom(u1), dom(u2), …, dom(un) definiert ist. Sei W eine Relation W(w1, w2, …, wn) mit den Attributen w1, w2, …, wn, die auf den Domänen dom(w1), dom(w2), …, dom(wn) definiert ist. Dann ist V(v1, v2, …, vn) eine Sichtrelation durch f(U, W) definiert, wobei f eine relationalengebraische Operation ist. 2.6 Das Sichtenänderungsproblem Da die Sichten nur virtuelle Relationen sind, ist es nicht möglich, direkt auf sie zuzugreifen oder sie direkt zu verändern. Man muss daher die Änderung auf den Basisrelationen durchführen, um den Änderungswunsch bei der Sicht zu erreichen. Dies wird gewährleistet durch eine Übersetzung; sie besteht aus einer Reihe von Änderungen auf den Basisrelationen, die, zusammen durchgeführt, die gewünschte Änderung der Sichten leistet. Hierbei ist es wichtig festzustellen, dass nur drei Änderungsoperationen, nämlich ‚Löschung‘, ‚Einfügung‘ und ‚Modifikation‘ zur Verfügung stehen. Zudem ist es möglich, dass mehrere Änderungsoperationen nur zusammen durchgeführt werden können (ein möglicher Grund besteht zum Beispiel in der Notwendigkeit eine Prüfung der Integritätsbedingung nach jeder Änderung zu vermeiden (siehe auch Larson und Sheth), weshalb sie in einer Transaktion 14 zusammengefasst werden und somit vom DBMS als nur eine Operation betrachtet und auf diese Weise entweder vollständig oder überhaupt nicht durchgeführt werden. Abbildung 2.3 verdeutlicht den Zusammenhang zwischen Sicht, geänderter Sicht, Basisrelationen und geänderten Basisrelationen. +− Sicht Sichtebene geänderte Sicht Übersetzung Übersetzungsebene geänderte Basisrelationen Basisrelationen Basisebene (Abbildung 2.3) Wir führen ein Beispiel ein, um die Probleme klarer darzustellen. A: B: C = A ⋈ B: M N N K a 1 2 f b 2 3 h a 3 3 d 5 j M N N K b 2 2 f a 3 3 h a 3 3 d 15 D=πM, K(C): E=σN≤2(A): M K M N b f a 1 a h b 2 a d Hierbei sind A und B Relationen, C eine Joinsicht, D eine Projektionssicht und E eine Selektionssicht. Wir nehmen auch an, dass das Attribut N in der Relation A ein Schlüsselattribut ist. Liegt ein Änderungswunsch vor, so stellt sich die Frage, durch welche Übersetzung diese Änderung realisiert werden kann; dies nennt man das Sichtenänderungsproblem. Hierbei sind prinzipiell vier Möglichkeiten vorstellbar: 1) Es gibt keine mögliche Übersetzung, z. B. wenn die Änderung zu Definitionsverletzungen führt. Ein Beispiel dazu wäre, wenn wir das Tupel (m, 1) in die Sicht E einfügen wollen, die Lösung werde dann die Einfügung von (m, 1) in A. Das ist allerdings nicht akzeptabel, weil in dem Schlüsselattribut N der Wert 1 schon enthalten ist und das Tupel wegen der Verletzung der Integritätsbedingung nicht eingefügt werden darf. 2) Eine Änderung kann zu so genannten Seiteneffekten führen. Dies sind ungewünschte (manchmal aber auch gewünschte) Veränderungen auf der gerade aktuellen Sicht selbst oder auf derzeit unbeteiligten Sichten, die allerdings von denselben Basisrelationen abgeleitet werden. Ein Beispiel dazu wäre, wenn wir das Tupel (a, 5, 5, k) in die Joinsicht C einfügen wollen. Dann ist die Übersetzung das Einfügen von (a, 5) in A und von (5, k) in B. Das führt aber zum Erscheinen des Tupel (a, 5, 5, j) zusammen mit dem gewünschten Tupel in der Sicht C, was ein Seiteneffekt innerhalb der Sicht werde. 3) Es gibt mehrere Übersetzungskandidaten und man weiß nicht, welcher die Lösung ist; dies nennt man das Mehrdeutigkeitsproblem. In diesem Fall wird in der Regel die Übersetzung gewählt, die die wenigsten Seiteneffekte verursacht und/oder keine überflüssigen Änderungsschritte durchführt. Bei der Anwendung dieser beiden Kriterien, sowie bei der Lösung des Mehrdeutigkeitsproblems überhaupt finden sich je nach Ansatz deutlich 16 unterschiedliche Vorgehensweisen: So versuchen beispielsweise manche Ansätze, die Nebeneffekte zu reduzieren, während andere eine minimale Anzahl an Änderungsschritten anstreben. Ein Beispiel für das Mehrdeutigkeitsproblem wäre das Löschen des Tupel (b, 2, 2, f) aus der Sicht C, weil drei Möglichkeiten als Übersetzung in Betracht kommen: a) Lösche (b, 2) aus A b) Lösche (2, f) aus B c) Lösche (b, 2) aus A und lösche (2, f) aus B Alle drei Möglichkeiten sind akzeptabel und verursachen keine Seiteneffekte. 4) Im Fall von unbekannten Werten, wie sie beim Einfügen in eine Projektion auftreten, wenn es Elemente gibt, von denen das System nicht weiß, wie es sie belegen soll. Hierbei können semantische Zusatzinformationen, Angaben des Benutzers, oder Nullwerte benutzt werden. Ein Beispiel dazu wäre die Einfügen von (c, h) in die Sicht D; die Übersetzung ist dann das Einfügen dieses Tupels in die Sicht C. Es ist aber unbekannt, welchen Wert es in der Spalte des Attributs N hat. Wir werden jetzt die Sichtänderungen formalisieren: Sei D eine gegebene Datenbank mit Menge von Relationsnamen R, Menge von Wertebereichen W und Menge von Attributen A. Bezüglich dieser Datenbank definieren wir folgende Funktionen. Die Funktion attr : R → A* ordnet Relationsnamen Attributlisten zu: attr(r) = (a1, …, an) für r∈R. Die Funktion domattr : A → W ordnet den Attributen ihre Wertebereiche zu. Nun sei die Domäne einer Relation durch folgende Funktion dom : R → W* gegeben, die für r∈R mit dom(r) =def domattr(a1)×… ×domattr(an) definiert ist. wobei DomD = def P(∪x∈R dom(x)) Den Zustand einer Relation formalisieren wir mit Hilfe der Funktion state : R → DomD, so dass state(r) ⊆ dom(r) ∀r∈R . Der Zustand einer Relation ist also eine Teilmenge der Domäne. 17 Da beide Ansätze, wie wir später sehen werden, nur Einfügen und Löschen als Änderungsoperationen benutzen, werden wir diese beiden formalisieren. Der Einfügeoperator sei gegeben durch eine Funktion ins : R × DomD → DomD, welche wie folgt definiert ist: ins(r, I) = def state(r) ∪ I. Entsprechend der Löschoperator del : R × DomD → DomD, mit Definition del(r, D) = def state(r) − D. Wir werden später Übersetzungsregeln in der Form τ Operation → Menge von Operationen angeben, d. h. die links-stehende Operation, muss in diesem Fall durch die rechts-stehenden ersetzt werden. Diese Übersetzungsregeln müssen natürlich solange angewandt werden, bis die Operationen sich nur noch auf Basisrelationen beziehen. 18 3 Der Ansatz von Masunaga In diesem Kapitel wird der Ansatz zum Lösen des Sichtenänderungsproblems von Yoshifumi Masunaga beschrieben, wie er in seinem Aufsatz „A relational database view update translation mechanism“ [Mas84] dargestellt wird. 3.1 Einführung In seinem Text versucht der Autor, Sichtenänderungsprobleme mit Hilfe eines Übersetzers zu lösen. Dieser Übersetzer besteht aus einem Übersetzerrumpf (translation body), in dem sich die Übersetzungsregeln befinden, und vier Mehrdeutigkeitsproblemlösern (ambiguity solver), die über Schnittstellen mit dem Körper verbunden sind. Ein Übersetzungsproblem wird auf eine Übersetzung prädikatenlogischer Ausdrücke reduziert: die Bedeutungen der Sichten werden in je einem prädikatenlogischen Ausdruck formalisiert, welcher wiederum in einen anderen prädikatenlogischen Ausdruck umgeformt wird, der dann in die gewünschte Sicht übersetzt wird (siehe Abbildung 3.1). Ausgehend von einer Sichtdefinition, die mit dem aktuellen Zustand der Basistabellen einen Zustand der Sicht beschreibt, formt Masunaga nun diese in eine prädikatenlogische Formel, die die Bedeutung der Sicht darstellt. Diese Formel werde nun umgeformt, so dass sie die Bedeutung der durch die Änderungsoperation geänderten Sicht ausdrückt. Darauf werden wir in einem folgenden Abschnitt eingehen. Aus dieser geänderten Formel wird die Übersetzungsregel gebildet. Wenn man diese Übersetzungsregel auf die Basisrelationen anwendet, ergeben sich die gewünschten Änderungen in der betrachteten Sicht. 19 Sicht +− geänderte Sicht Sichtdefinition Übersetzungsregeln Relationenebene prädikatenlogische Formulierung Entwurf der Übersetzungsregeln Prädikatenlogische Ebene Umformung der prädikatenlogischen Formel Bedeutung der Sicht als Bedeutung der prädikatenlogische Formel geänderten Sicht (Abbildung 3.1) In den meisten syntaktisch motivierten Ansätzen müssen die Übersetzungen die drei folgenden Kriterien erfüllen: • Bei der Übersetzung darf es nicht zu Seiteneffekten kommen, also die durch Änderungen an den Basisrelationen in der abgeleiteten Sicht erzeugten Tupel dürfen nicht mehr und nicht weniger sein als die vom Benutzer durch die Sichtänderung geforderten. • Die Übersetzung darf nicht zu überflüssigen Schritten führen. Was also durch die Änderung eines Tupels erreicht werden kann, soll nicht durch die Änderung mehrerer durchgeführt werden. • Sie muss eindeutig sein, also syntaktisch gesehen darf es nur einen Weg geben, die gewünschte Änderung zu erhalten. Bei Masunagas semantischem Ansatz werden jedoch nur die ersten beiden Kriterien strikt befolgt Verstöße gegen das dritte Kriterium werden toleriert, wenn dies notwendig sein sollte, weil er das dritte Kriterium semantisch auslegt. Wenn also bei einer Mehrdeutigkeit semantische Mittel benutzt werden können, um diese aufzulösen, dann soll die Änderung gestattet werden. 20 3.2 Terminologie Masunaga benutzt die Induktionsmethode, um Sichten als virtuelle Relationen zu definieren. Hierzu definiert er Basisrelationen am Anfang ebenfalls formal als Sichten. Somit ist jede Relation, die durch die Benutzung von fünf relationalengebraischen Operatoren (Projektion, Θ-Restriktion, Produkt, Vereinigung und Differenz) entsteht, auch eine Sicht. Es ergibt sich, dass aus den so entstandenen Sichten weitere Sichten abgeleitet werden können, so dass also jede mögliche Sicht auf die Basisrelationen zurückgeführt werden kann. Die Beziehung zwischen einer Sicht und den ihr zugrunde liegenden Basisrelationen stellt Masunaga durch einen Operatorenbaum dar. Von den fünf Basisoperationen der Relationalalgebra benutzt Masunaga nur vier, und ersetzt den Selektionsoperator durch die Θ-Restriktion. Hierbei sind X und Y Teilmengen von att(V), die Θ-kompatibel sind, d. h. X = { Ai1 ,..., Ai p } und Y = { A j1 ,..., A j p )} Ai k und A j k sind einzelne Attribute für jedes k=1, 2, …, p, Θ ist ein Vergleichsoperator. Die Θ-Restriktion ist bei Masunaga durch die Verwendung von Mengen als „Operanden“ unsauber. Es müssten eigentlich Sequenzen angegeben werden, da jeweils die k-ten Elemente verglichen werden: V [ XΘY ] = V [( Ai1 ,..., Ai p )Θ( A j1 ,..., A j p )] = σ Ai 1 ΘA j1 ∧ ...∧ Ai p ΘA j p (V ) Offensichtlich ist die Θ-Restriktion von Masunaga weniger mächtig als die übliche Selektion in der Form σF(R). Hierbei ist F eine aussagenlogische Formel mit Vergleichsoperatoren (=, ≠, ≤, ≥, <, >), bei der die Atome Attributnamen der Relation R oder Konstanten sind. In der Θ-Restriktion wird jeweils nur ein Vergleichsoperator angewandt, es gibt eine implizite UND-Verknüpfung und es gibt keine Konstanten. Wir wollen nun zeigen, dass sich eine Selektion mit Formel durch eine Verkettung von Θ-Restriktionen und anderen Operatoren ausdrücken lässt. Es gibt dabei folgende Probleme: 21 • Es gibt keine Konstanten bei der Θ-Restriktion. • Wie geht man mit der Negation um? • Wie geht man mit mehreren Vergleichsoperatoren um? • Wie drückt man Oder-Verknüpfungen aus? Um Konstanten verwenden zu können, kann man den „Trick“ benutzen, für jede Konstante eine Relation einzuführen, die nur ein Attribut hat, welches dem Wertebereich der Konstante entspricht, und ein einzelnes Tupel enthält mit der Konstante als Wert. Diese Relation kann dann mit einem direkten Produkt quasi in die ursprüngliche Relation „eingefügt“ werden: σ Z >10 (V ) = σ Z > K 10 (V × R10) Eine Negation in einer Formel lässt sich mit Hilfe der De’Morgan-Regel auflösen, da es zu allen Vergleichsoperatoren eine negierte Form gibt, z. B.: σ ¬( A > B ∨ C < D ) (V ) = σ A≤ B ∧ C ≥ D (V ) Falls mehrere unterschiedliche Vergleichsoperatoren in einer Formel vorkommen, kann man die Selektion in mehrere Selektionen aufteilen, z. B.: σ A > B ∧ C < D (V ) = σ C ≥ D (σ A > B (V )) = (V [( A) > ( B)])[(C ) < ( D )] Oder-Verknüpfungen kann man als Vereinigung von zwei Teilselektionen durchführen, da die Teilselektionen vereinigungsverträglich sind, z. B.: σ A > B ∨ C < D (V ) = σ C ≥ D (V ) ∪ σ A > B (V ) = V [( A) > ( B)] ∪ V [(C ) < ( D )] Somit haben wir gezeigt, dass es ist möglich ist, Selektion durch Θ-Restriktion zu ersetzen. Die Produkt-, Vereinigungs- und Differenzoperatoren bei Masunaga sind genauso wie die im zweiten Kapitel präsentierten Operatoren notiert und genauso mächtig. Lediglich der Projektionsoperator unterscheidet sich, bei gleicher Mächtigkeit, in der Notation. 22 Masunaga benutzt nur zwei der drei Änderungsoperatoren, nämlich Löschen und Einfügen. Der dritte Operator, Modifizieren, wird durch Löschen und Einfügen ersetzt. Er formalisiert die Änderungsoperatoren nicht und klärt auch nicht ihren Zusammenhang mit Transaktionen. Wie oben beschrieben, reduziert Masunaga Übersetzungsprobleme auf prädikatenlogische Ausdrücke. Hierzu wird die Bedeutung jeder Sicht in einen prädikatenlogischen Ausdruck umgeformt. Beispielhaft sei dies hier für die Differenzsicht dargestellt. Diese drückt Masunaga wie folgt aus: V = U − W ⇒ (∀t ∈ dom(V ))(M_of_V(t ) = (M_of_U(t ) ∧ ¬M_of_W(t ))) Der Ausdruck M_of_V(t) ist wahr, wenn t ein Tupel von V ist. Ansonsten ist t zwar Tupel der Domäne von V, ist aber nicht in V selbst enthalten, das heißt „t ist Element von V dann und nur dann, wenn t in U aber nicht in W ist“ Dasselbe Ergebnis kann aber auch anders, nämlich mit Hilfe der mathematischen Definition der Differenz von Mengen, erzielt werden: ∀t ∈ V ⇔ t ∈ U ∧ t ∉ W 3.3 Übersetzung Da sich die Beziehung zwischen einer Sicht und den zugrunde liegenden Basisrelationen in einem Operatorbaum darstellen lässt, wird die Übersetzung eines Sichtänderungswunsches bei Masunaga in die abgeleiteten Relationen entlang des Baumes zerlegt, bis man auf der Ebene der Basisrelationen angekommen ist, wie in Abbildung 3.2 beispielhaft dargestellt. Die Definition der im Beispiel beschriebenen Sicht ist: V = π (σ ( B1 )) ∪ (( B1 ∪ B2 ) ⋈ ( B2 − B3 )) 23 Vereinigungssicht Projektionssicht Schicht 0 Join-Sicht Schicht 1 Restriktionssicht Vereinigungssicht Differenzsicht Schicht 2 Basisrelation 1 Basisrelation 2 Basisrelation 3 Schicht 3 (Abbildung 3.2) Wenn hierbei auf einer beliebigen Ebene des Baumes keine Übersetzung gefunden werden kann, wird die gesamte Übersetzung abgebrochen und der Sichtänderungswunsch als unübersetzbar bezeichnet, mit einer bestimmten Ausnahme, die wir im letzten Abschnitt diskutieren werden. 3.4 Lokale Übersetzungsregeln Die Übersetzung eines Sichtänderungswunsches läuft den gesamten Operatorenbaum entlang. Bei der Übersetzung kommen an jedem Knoten des Baums eine von zehn möglichen lokalen Übersetzungsregeln zur Anwendung. Jeder dieser Regeln ist als ‚Wenn‘-‚Dann‘-Verknüpfung formuliert, wobei der Bedingungsteil eine in Prädikatenlogik formulierte Aussage darstellt, die im Fall WAHR die Umsetzung einer Anweisung zur Folge hat. Diese zehn Übersetzungsregeln unterteilen sich in fünf Löschungsregeln und fünf Einfügungsregeln, jeweils für die fünf Typen von Sichten. 24 3.4.1 Vereinigung und Differenz Die Bedeutung einer Vereinigungssicht wird durch den folgenden prädikatenlogischen Ausdruck dargestellt: (∀t ∈ dom(V ))(M_of_V(t ) = (M_of_U(t ) ∨ M_of_W(t ))), das heißt, ein Tupel t ist ein Element der Vereinigungssicht V, wenn es ein Element von U oder von W ist. Bei einer ODER-Verknüpfung reicht ein WAHR in einem Verknüpfungsoperanden aus, damit der gesamte Ausdruck WAHR wird. Die Aussage wird dann FALSCH, wenn beide Teile der Verknüpfung FALSCH sind. Daraus ergibt, dass beim Löschen einer Menge von Tupel D aus einer Vereinigungssicht beide Teile der Verknüpfung auf FALSCH gesetzt werden müssen. Das heißt die Menge D muss aus beiden Verknüpfungsoperanden gelöscht werden. Die Regel zum Löschen aus einer Vereinigungssicht kann folgendermaßen formuliert werden, wobei V=U ∪ W für die Sicht und D für die zu löschende Menge steht. τ MAS del (U ∪ W , D) →{del (U , D), del (W , D)} Um eine gewünschte Menge I in eine Vereinigungssicht einzufügen, muss einer der beiden Verknüpfungsoperanden WAHR werden. Dies kann erreicht werden, indem der erste, der zweite oder beide Verknüpfungsoperanden WAHR werden. Auf der Ebene der Sichten bedeutet dies, dass entweder die Menge I in U, in W oder in beide eingefügt wird. Offensichtlich liegt hier ein Mehrdeutigkeitsproblem vor, das als SAP2 (semantic ambiguity problem 2) bezeichnet wird. Die Regel zum Einfügen in eine Vereinigungssicht kann folgendermaßen formuliert werden, wobei V=U ∪ W für die Sicht und I für die einzufügende Menge steht. τ MAS ins (U ∪ W , I ) → SAP2 (P ({ins (U , I ), ins (W , I )})) , wobei SAP2 : P(DomD) → DomD 25 Das Einfügen bei Vereinigungssichten soll an folgendem Beispiel erläutert werden. Lehrkörper: Verwaltung: Mitglieder_der_Uni: ID Name Gehalt ID Name Gehalt ID Name Gehalt 11 M 200 5 A 100 11 M 200 12 L 220 16 B 130 12 L 220 31 N 200 7 C 180 31 N 200 5 A 100 16 B 130 7 C 180 Mitglieder_der_Uni = Lehrkörper ∪ Verwaltung Wir wollen zur Sicht Mitglieder_der_Uni das Tupel (55, M, 190) hinzufügen. Dabei tritt das Problem auf, dass wir nicht wissen, in welche der beiden Operandensichten das Tupel eingefügt werden soll. Entscheidend ist hier die Bedeutung des Tupels; entweder ist die Person aus dem Lehrkörper, oder sie ist aus der Verwaltung. Wie sich an diesem Beispiel zeigt, ist die Lösung des SAP2 an die Semantik des Änderungswunsches gebunden. Eine Entscheidung kann daher nur auf der Grundlage von menschlichem Wissen gefällt werden, der Benutzer muss also gefragt werden. Die Bedeutung einer Differenzsicht wird durch den folgenden prädikatenlogischen Ausdruck dargestellt: (∀t ∈ dom(V ))(M_of_V(t ) = (M_of_U(t ) ∧ ¬M_of_W(t ))) Die Regel zum Löschen aus einer Differenzsicht kann folgendermaßen formuliert werden, wobei V=U−W für die Sicht und D für die zu löschende Menge steht: τ MAS del (U − W , D) → SAP1 (P ({del (U , D), ins (W , D)})) , wobei SAP1 : P(DomD) → DomD 26 Für das Löschen einer Teilmenge D ergibt sich also, dass für jedes Element dieser Menge der obige Ausdruck FALSCH werden muss. Aus der UND-Verknüpfung ergibt sich aber, dass der gesamte Ausdruck dann FALSCH wird, wenn mindestens einer der Verknüpfungsoperanden FALSCH wird. Es ergeben sich also wieder drei Möglichkeiten, nämlich der erste, der zweite oder beide Verknüpfungsoperanden werden FALSCH. Das bedeutet also, dass t aus U gelöscht wird, dass t in W eingefügt, oder dass t aus U gelöscht und t in W eingefügt wird. Wie schon beim Löschen aus einer Vereinigungssicht gibt es also auch hier ein Mehrdeutigkeitsproblem, das Masunaga als SAP1 bezeichnet. Das untenstehende Beispiel erläutert das Löschen bei Differenzsichten. Professoren: Sonstige_Mitarbeiter: Mitglieder_der_Uni: ID Name Gehalt ID Name Gehalt ID Name Gehalt 11 M 200 5 A 100 11 M 200 12 L 220 16 B 130 12 L 220 5 A 100 16 B 130 Professore n = Mitglieder _der_Uni − Sonstige_M itarbeiter Das Löschen eines Tupels aus der Professoren-Sicht ist offensichtlich nur möglich als Löschung aus der Relation Mitglieder_der_Uni. Abteilung_A: Abteilung_B: Mitarbeiter: ID Name Gehalt ID Name Gehalt ID Name Gehalt 11 M 200 5 A 100 11 M 200 12 L 220 16 B 130 12 L 220 5 A 100 16 B 130 Abteilung_ B = Mitarbeite r − Abteilung_ A Das Löschen eines Tupels von Abteilung_B bedeutet nicht unbedingt, dass der Mitarbeiter die Firma verlassen hat, sondern kann auch bedeuten, dass er in Abteilung A gewechselt ist. Die 27 Lösung ist also entweder das Löschen aus Mitarbeiter oder das Einfügen in Abteilung_A. Wie auch im Beispiel zum Einfügen bei Vereinigungssichten zeigt sich die starke Bindung des SAP1 an die Semantik des Änderungswunsches. Eine Auflösung der Mehrdeutigkeit kann daher wiederum nur auf der Grundlage von menschlichem Wissen herbeigeführt werden. Für das Einfügen einer Teilmenge I in der Sicht V muss der erste Verknüpfungsoperand WAHR werden, I muss also in U eingefügt werden. Der zweite Verknüpfungsoperand muss FALSCH werden, I muss also aus W gelöscht werden. Die Regel zum Einfügen in eine Differenzsicht kann folgendermaßen formuliert werden, wobei V=U−W für die Sicht und I für die einzufügende Menge steht: τ MAS ins (U − W , I ) →{ins(U , I ), del (W , I )} 3.4.2 Projektion und Selektion Masunaga definiert die Bedeutung einer Projektionssicht folgendermaßen: V = U[X ] ⇒ (∀t ∈ dom (V ))( M_of_V (t ) = (∃u ∈ dom(U ))(u[ X ] = t ∧ M_of_U (u ) = true )), d. h. damit ein Tupel t aus der Domäne von V in V enthalten ist, muss es mindestens ein Tupel u aus der Domäne von U geben, dessen Projektion auf die Attributmenge X gleich t ist und das in der Relation U enthalten ist. Um nun ein beliebiges Tupel t aus der Sicht V zu löschen, müssen alle möglichen u aus der Relation U, deren Projektion auf X gleich t ist, falsch werden, d. h. alle Tupel u müssen aus U gelöscht werden. Sei nun V die Sicht und D die Menge der zu löschenden Tupel. Masunaga gibt die Regel zur Löschung von D aus V=U[X] so an: τ MAS del (U [ X ], D ) →{del (U ,{u ∈U | ∃t ∈ D, u[ X ] = t}} 28 Beim Einfügen von Tupeln in Projektionssichten treten besondere Probleme auf. Nach der Projektion haben die Tupel weniger Attributwerte gegenüber denen der Operandenrelation. Das größte Problem beim Einfügen besteht darin, die Attributwerte zu finden, die an den nicht-projizierten Elementen des Tupel in der Operandenrelation stehen sollen. Es müssen also die restlichen Attributwerte bestimmt werden, was Masunaga das Problem SAP3 nennt, wobei er darauf hinweist, dass man für jedes eingefügte t aus I ein eigenes, eindeutig erweitertes Tupel u finden soll, um keine semantischen Mehrdeutigkeiten zu verursachen. Nun ist die Frage, ob sich SAP3 auch ohne menschlichen Eingriff lösen lässt. Masunaga nennt einige Sonderfälle, in denen das möglich ist, verweist aber darauf, dass es im Allgemeinen nicht möglich ist, sondern der Benutzer die Daten nachtragen muss. Als Alternative schlägt er vor, die Elemente mit Nullwerten aufzufüllen, falls die Integritätsbedingungen das zulassen, warnt aber davor, dass hierbei die üblichen semantischen Mehrdeutigkeitsprobleme im Zusammenhang mit Nullwerten auftreten können. Als Sonderfall für das automatische Einfügen von tatsächlichen Werten nennt er die Möglichkeit, Informationen aus den Integritätsbedingungen des Schemas zu nutzen, wie zum Beispiel eine geforderte Gleichheit zweier Attributwerte des Tupeln. Autor_von: Autor Buch: Buch Schöning Theoretische Autor_verkaufte_Exemplare: Name Exemplare Schöning 432 Autor Buch Exemplare Schöning Theoretische 432 Informatik Informatik Autor_verk aufte_Exem plare = σ Autor , Buch , Exemplare ( Autor_von × Buch ) Wenn nun das Tupel (Kemper/Eickler, Datenbanksysteme, 321) eingefügt wird, können Autor_von.Buch und Buch.Name den Wert ‚Datenbanksysteme‘ erhalten. Masunaga gibt die Regel zum Einfügen von I in V=U[X] so an: τ MAS ins (U [ X ], I ) → SAP3 (U , X , I ) , wobei SAP3 : R × P(A) × DomD → DomD Als nächstes beschäftigen wir uns mit der Selektion, die Masunaga Θ-Restriktion nennt. Die Bedeutung definiert er folgenderweise: 29 V = U [ XΘY ] ⇒ (∀t ∈ dom(V ))( M_of_V (t ) = ( M_of_U (t ) ∧ t[ X ]Θt[Y ])), wobei Θ der Vergleichsoperator der Restriktion ist und X und Y die beiden Attributlisten, die verglichen werden. Das heißt t erfüllt die Bedeutung von V genau dann, wenn es die Bedeutung von U und die Restriktionsbedingung erfüllt. Um eine Tupelmenge D aus V zu löschen, müssen alle Tupel von D entweder nicht mehr in U enthalten sein, oder sie dürfen die Restriktionsbedingung nicht mehr erfüllen. Da wir die Restriktionsbedingung als Bestandteil der Definition der Sicht nicht verändern dürfen, bleibt uns nur übrig, die Tupel aus U zu löschen. Als Regel für V=U[XΘY] legt Masunaga also fest. τ MAS del (U [ XΘY ], D) →{del (U , D)} Beim Einfügen in eine Restriktionssicht müssen alle Tupel der einzufügenden Menge I die Restriktionsbedingung erfüllen. Wenn einige sie verletzen, sollen nach Masunaga alle Tupel der Menge verworfen werden: {ins(U , I )}, ∀t ∈ I : t[ X ]Θt[Y ] = true τ MAS ins(U [ XΘY ], I ) → {}, sonst 3.4.3 Produkt und Join Masunaga präsentiert die Bedeutung von Produktsichten durch den folgenden prädikatenlogischen Ausdruck: V = U ×W ⇒ (∀t ∈ dom(V ))(M_of_V(t ) = (M_of_U(t[att (U )]) ∧ M_of_W(t[att (W )]))) 30 Das heißt, um ein Tupel t in der Produktsicht V erscheinen zu lassen, muss eine Projektion von t auf die Attributmenge von U in U existieren und eine Projektion von t auf die Attributmenge von W in W. Um also das Tupel aus der Sicht V zu löschen, reicht es aus, die Projektion des Tupels aus einer der beiden Attributmengen zu löschen. Das Problem beim Löschen einer Projektion eines Tupel liegt darin, dass alle Tupel gelöscht werden, die die gleiche Projektion auf die Attributmenge der betroffenen Operandenrelation haben wie das zu löschende Tupel. Es werden also alle Kombinationen der Projektion mit allen Tupel der anderen Operandenrelation gelöscht. Dadurch können unerwünschte Seiteneffekte entstehen. Das folgende Beispiel erläutert das Löschen bei Produktsichten. Nehmen wir an wir haben die Relation Mitglieder mit den Attributen ID und Name sowie die Relation Gruppen mit dem Attribut Gruppe. Die Sicht Plan ist das Kreuzprodukt beider Relationen. Möchte man aus der Sicht das Tupel (12, L, 5) löschen, so ist dies möglich, indem man das Tupel (12, L) aus Mitglieder oder das Tupel (5) aus Gruppen löscht. Im ersten Fall würde neben dem gewünschten Tupel (12, L, 5) auch das Tupel (12, L, 16) aus der Sicht gelöscht; im zweiten Fall würde zusätzlich zum gewünschten Tupel auch das Tupel (11, M, 5) gelöscht. Mitglieder: Gruppen: Plan: ID Name Gruppe ID Name Gruppen 11 M 5 11 M 5 12 L 16 11 M 16 12 L 5 12 L 16 Plan = Mitglieder × Gruppen Wenn wir eine Menge D aus der Sicht V=U×W löschen wollen, geschieht dies dadurch, dass eine Menge D1 aus U und eine Menge D2 aus W gelöscht wird. Diese Löschung muss aber nach Masunaga dergestalt sein, dass die Sicht V−D immer noch eine Produktsicht ist – es muss also gelten, damit alle Kombinationen der Tupel berücksichtigt werden: V − D = (U − D1 ) × (W − D 2 ) Aus der obigen Formel können wir D1 und D2 berechnen als 31 D1 = (U − (V − D)[att (U )]) und D2 = (W − (V − D)[att (W )]) . Aufgrund der obigen Bedingung kann es aber vorkommen, dass D1 oder D2 leer sind. Das heißt also, dass bestimmte Sichtänderungswünsche mit einer Produktsicht nicht vereinbar sind. Um sicher zu stellen, dass die Sicht V−D auch weiterhin eine Produktsicht bleibt, führt Masunaga die so genannte „Kreuzreferenzbedingung“ ein. Hierbei wird für alle möglichen Kombinationen von t und t’ die Sicht V−D geprüft, ob das Produkt der Projektion von t auf U mit der Projektion von t’ auf W und das Produkt der Projektion von t’ auf U mit der Projektion von t auf W in der Sicht V−D vorhanden sind. KRBL = DEF (∀t , t '∈ dom(V ))(t , t '∈ V − D ⇒ t[ att (U )] t '[att (W )] ∈ V − D ) Eine Übersetzung eines Löschens einer Menge D aus V=U×W wird nur dann akzeptiert, wenn die Kreuzreferenzbedingung den Wert WAHR liefert; ansonsten wird die Übersetzung verworfen: {del (U , D1 ), del (W , D2 )}, falls KRBL = true τ MAS del (U × W , D) → {}, sonst Wenn wir eine Menge I in die Sicht V=U×W einfügen wollen, geschieht dies dadurch, dass eine Menge I1 in U und eine Menge I2 in W eingefügt wird. Diese Einfügung muss aber dergestalt sein, dass die Sicht V∪I immer noch eine Produktsicht ist – es muss also gelten: V ∪ I = (U ∪ I1 ) × (W ∪ I 2 ) Wir bestimmen die beiden Mengen I1 und I2: I1 = I [ att (U )] − U und I 2 = I [ att (W )] − W 32 Um die einzelnen Mengen aus I zu bekommen, müssen die Tupel auf die Attribute von U bzw. W projiziert werden, und es müssen davon die Tupel herausgenommen werden, die schon in U bzw. W enthalten sind, um das schon erwähnte zweite Kriterium für Umformungen zu erfüllen. Um sicher zu stellen, dass die Sicht V∪I auch weiterhin eine Produktsicht bleibt, muss wie auch bei der Löschung die „Kreuzreferenzbedingung“ erfüllt sein. KRBE = DEF (∀t , t '∈ dom(V ))(t , t '∈ V ∪ I ⇒ t[att (U )] t '[att (W )] ∈ V ∪ I ) Eine Übersetzung eines Einfügens einer Menge I in V=U×W wird nur dann akzeptiert, wenn die Kreuzreferenzbedingung den Wert WAHR liefert; ansonsten wird die Übersetzung verworfen: {ins(U , I1 ), ins(W , I 2 )}, falls KRBE = true τ MAS ins (U × W , I ) → {}, sonst Es gibt einen besonderen Fall, in dem Masunaga von seinem üblichen Vorgehen, dass eine Übersetzung in einer Ebene nur dann betrachtet wird, wenn die Übersetzung in der Ebene darüber erfolgreich war, abweicht. Und zwar muss in Schicht i eine Θ-Restriktion-Sicht vorkommen und in Schicht i+1 eine Produktsicht, also im Grunde ein Join. 33 Sicht 0 V i P i+1 W U i+2 Basisrelationen (Abbildung 3.3) In diesem Fall ist V = σC(P) und P = U × W. V ist also in der Schicht i und P in der Schicht i+1, man kann daher die Schichten i und i+1 zusammen als Join betrachten. Der Benutzer wünscht, die Menge D aus V zu Löschen. Da bei der Θ-Restriktion die Übersetzung eigentlich nur im Weiterreichen der Löschung von D an das Produkt in der darunterliegenden Sicht besteht, kommt es fast immer zu einer Verletzung der Kreuzreferenzbedingung. Als Lösung dieses Problems schlägt Masunaga vor, die Menge D in eine Menge D’ zu modifizieren, in der die Tupel ergänzt werden, die minimal nötig sind, um die Kreuzreferenzbedingung wahr zu machen. An D’ stellt er folgende Bedingungen: Bed. 1: Die Menge D’ darf keinen veränderten Einfluss auf V haben: D ∩ V = D '∩ V Bed. 2: Nur die Tupel in D’−D, die eine Projektion auf die Attribute von U bzw. W haben, die gleich sind wie die Projektion von Tupel aus D auf dieselben Attributmengen, werden übernommen. 34 ( ∀ t ∈ D ' − D )( t [ att (U )] ∈ D [ att (U )] ∨ t [ att (W )] ∈ D [ att (W )]) Es handelt sich also um die Tupel, die es nicht „durch die Selektionsbeschränkung geschafft haben“, welche aber Anteil an den Tupel in D haben. Bed. 3: Die Menge (P−D’) erfüllt die Kreuzreferenzbedingung. Es folgt ein Beispiel: V: P: Int Stri Stro 1 a r 2 b r 2 b s 5 c s U: W: Int Stri Stro Int Stri Stro 1 a r 1 a r 1 a s 2 b s 2 b r 5 c 2 b s 5 c r 5 c s Wir wollen die Menge D={(1, a, r)} aus V löschen. Übersetzt wird das in das Löschen von (1,a,r) aus P. Da es nicht möglich ist, dass das Tupel aus der Produktsicht gelöscht wird, wird unter den bekannten Bedingungen die Menge D zu einer Menge D’ geändert. Wir suchen jetzt Tupel von P, deren Projektion auf die Attribute von U (1, a) ist oder deren Projektion auf die Attribute von W (r) ist. Hierbei tritt ein Mehrdeutigkeitsproblem auf: wir können nämlich die Menge {(1, a, s)}, oder die Menge {(5, c, r), (2, b, r)}, oder beide einfügen. Auf dieses Problem werden wir später im letzten Abschnitt eingehen. Nehmen wir an wir haben (1, a, s) dazugenommen, dann ist die erste Bedingung erfüllt. Die zweite Bedingung ist auch erfüllt, wegen dem Tupel (1, a). Die dritte Bedingung ist auch erfüllt, also ist die Menge {(1, a, s), (1, a, r)} die Lösung. Durch die erste Bedingung, D’ darf keinen anderen Einfluss auf V haben als D, sehen wir auch, dass dieser Sonderfall nur in der Kombination Θ-Restriktion/Produkt und nicht in den Kombinationen Vereinigung/Produkt, Differenz/Produkt und Projektion/Produkt auftreten kann. Im Gegensatz zur Θ-Restriktion treten die Änderungen von D’ nämlich bei den anderen Möglichkeiten in V auf. 35 Als Formel für das Löschen geben wir {del (U , D1 ), del (W , D2 )}, falls KRBL = true τ MAS del ((U × W )[ X ], D ) → sonst {del (U × W , D' )}, an, wobei D’={t | t ∈ (U−D1) × (W−D2), t[att(U)] ∈ D[att(U)] ∨ t[att(W)] ∈ D[att(W)]} . Betrachten wir nun das Einfügen. Die in V einzufügende Menge sei I. Wie auch bei der Löschung gibt es keine eigentliche Übersetzung, sondern I wird in P eingefügt. Wieder kommt es zu einer Verletzung der Kreuzreferenzbedingung. Wir modifizieren wieder die Menge I in eine Menge I’, in der die Tupel ergänzt werden, die minimal nötig sind, um die Kreuzreferenzbedingung wahr zu machen, und fast die selben Bedingungen werden an I’ gestellt. Bed. 1: Die Menge I’ darf keinen verändernden Einfluss auf V haben: I ∩ V = I '∩ V Bed. 2: Nur die Tupel in I’−I, die eine Projektion auf die Attribute von U bzw. W haben, die gleich sind wie die Projektion von Tupel aus I auf dieselben Attributmengen, werden übernommen: ( ∀ t ∈ I ' − I )( t [ att (U )] ∈ I [ att (U )] ∨ t [ att (W )] ∈ I [ att (W )]) Bed. 3: Die Menge (P∪I’) erfüllt die Kreuzreferenzbedingung. Als Formel für das Einfügen geben wir {ins(U , I1 ), ins(W , I 2 )}, falls KRBE = true τ MAS ins ((U × W )[ X ], I ) → sonst {ins(U × W , I ' )}, an, wobei I’={t | t ∈ (U∪I1) × (W∪I2), t[att(U)] ∈ I[att(U)] ∨ t[att(W)] ∈ I[att(W)]}. 36 Wie oben im Beispiel geklärt, gibt es oft mehrere mögliche Kandidaten für die erweiterte Menge, deren Auswahl die Übersetzung auf den nächsten Schichten signifikant beeinflusst. Deshalb darf man den Kandidaten nicht willkürlich wählen, sondern die Wahl ist abhängig von der Semantik der Änderung. Deswegen muss der Benutzer gefragt werden, welcher Kandidat gewählt werden soll. Wenn dieser eine klare Antwort bzw. Lösung hat, kann die Übersetzung durchgeführt werden, ansonsten wird sie verworfen. In einigen Fällen kann das System auch durch semantische Zusatzinformationen zu einer Lösung kommen. Masunaga weist aber darauf hin, dass der Entwurf der Mehrdeutigkeitslöser ein offenes Problem ist, welches noch bearbeitet werden muss. 37 4 Der Ansatz von Larson und Sheth In diesem Kapitel beschäftigen wir uns mit der Arbeit „Updating Relational Views Using Knowledge at View Definition and View Update Time“ von Larson und Sheth aus dem Jahr 1990 [LS91]. 4.1 Terminologie In der Arbeit von Larson und Sheth werden Sichten durch relationenalgebraische Ausdrücke definiert, deren Operanden Basisrelationen, andere Sichten oder wieder relationalalgebraische Teilausdrücke sind. Ein solcher Ausdruck hat also eine Schachtelungsstruktur, die durch einen Baum ausgedrückt werden kann, dessen Blätter Basisrelationen und Sichten und dessen innere Knoten Operanden der Relationalalgebra sind. Wir werden im Folgenden eine Sicht durch den Operator charakterisieren, mit dem die Wurzel dieses Baumes beschriftet ist (also z. B. Vereinigungssicht für den Ausdruck ( B1 ∩ S ) ∪ B2 ). Im Ansatz von Larson und Sheth werden Vereinigungs-, Differenz-, Projektions- und Selektionssichten behandelt, aber auf Produktsichten verzichtet. Zusätzlich werden Joinsichten und Durchschnitt-Sichten behandelt, obwohl sich der Join auch durch Produkt, Selektion und Projektion und der Durchschnittsoperator durch den Differenzoperator ausdrücken lässt und daher eigentlich auf sie verzichtet werden könnte. Es wird nicht erklärt, warum Larson und Sheth so vorgehen; man kann aber vermuten, dass auf diese Weise der Ansatz praxisnäher gemacht werden soll. Larson und Sheth erlauben als Sichtenänderungsbefehle ebenfalls nur Löschungen und Einfügungen. Dabei wird jedes Mal nur die Bearbeitung eines einzigen Tupel erlaubt. Der Grund für diese Beschränkung ist die Wahl der Änderungsregeln, weil die Existenz des Tupel in den abgeleiteten Relationen die Wahl der Übersetzungsregeln beeinflusst. Darauf gehen wir im nächsten Abschnitt ein. 38 Modifikationen von Attributwerten sind Operationen, die aus zwei Teilen bestehen und zwar aus Löschen und anschließendem Einfügen. Hierbei kann es aber zu Problemen kommen, wenn eine der beiden Teiloperationen für sich alleine nicht ausgeführt werden kann, obwohl die Modifikation als solche ausführbar wäre. Ein mögliches Problem dieser Art wäre zum Beispiel, dass das Löschen eines Tupel eine Integritätsbedingung verletzt, die Modifikation selbst (also Löschen und anschließendes Einfügen) aber nicht zu einer solchen Verletzung führen werden. Aus diesem Grund wird jede Modifikation als eine Transaktion ausgeführt, die aus Löschen mit anschließendem Einfügen besteht. Das Sichtenänderungsproblem wird von Larson und Sheth in drei Schritten (die Übersetzungssuche, das Mehrdeutigkeitproblem und das Problem der unbekannten Werte) behandelt, die separat diskutiert werden. 4.2 Übersetzung Bei der Suche einer Übersetzung für die Änderung einer Sicht in Änderungen der Basisrelationen benutzen Larson und Sheth Übersetzungsregeln, die die Übersetzungen in Zwischenschritten festlegen. Die Übersetzungsregeln beschreiben für jede mögliche Änderung auf der Sicht die nötigen Änderungen auf den Operanden. Es werden sechs verschiedene Typen von Sichten behandelt, die wiederum durch zwei verschiedene Operationen Löschen und Einfügen geändert werden können. Allerdings ist das nicht spezifisch genug für die Regeln, deshalb führen Larson und Sheth ein weiteres Kriterium ein, nämlich die Existenz von Tupeln in Operandenrelationen. Das Tupel könnte allerdings in beiden, in einer oder in keiner der Relationen existieren. Es gibt auch weitere Kriterien, wie die Selektionsbedingung bei der Selektionssicht. Alle diese Möglichkeiten ergeben insgesamt 42 verschiedene Fälle. Für jeden davon gibt es eine Regel. Bei einem Änderungswunsch stellt sich die Frage, welche der 42 Regeln gerade einsetzbar ist. Um diese Frage zu beantworten, benutzen die Autoren das vorher gesammelte Wissen. Das Wissen, das von der Änderungsoperation gesammelt wird, reduziert die möglichen Regeln. Im nächsten Schritt wird das syntaktische Wissen, welches Informationen über die Erzeugung der Sicht aus Basisrelationen bzw. anderen Sichten sind, eingesetzt, deshalb müssen diese gesammelt werden, wenn die Sicht definiert wird. Dabei wird hier gespeichert, welche relationenalgebraische Operation benutzt wird und welche Relationen beteiligt waren. Es blei39 ben weiterhin mehrere mögliche Regeln. Eine von ihnen wird mit Hilfe des gesammelten semantischen Wissen gewählt, und zwar den so genannten Extensionalbedingungen (existential conditions), die Informationen über jedes Tupel der Relation und seiner Elemente sind, und welche beim Eintragen der Daten in die Datenbank gesammelt werden. Dies entscheidet endlich, welche Regel eingesetzt wird. 4.3 Übersetzungsregeln Wir werden nun die Regeln zu Gruppen, nach der Art des Problems, zusammenfassen. 4.3.1 Vereinigung, Durchschnitt und Differenz Larson und Sheth formulieren die Übersetzungsregeln für die Vereinigung in folgender Tabelle: V=U∪W Einfügen von v Löschen von v v∈ ∈U v∈ ∈W keine Übersetzung Lösche v aus U, Lösche v aus W v∉ ∉U v∈ ∈W keine Übersetzung Lösche v aus W v∈ ∈U v∉ ∉W keine Übersetzung Lösche v aus U v∉ ∉U v∉ ∉W SAP-UNION keine Übersetzung Der mehrdeutige Fall SAP-UNION entsteht beim Einfügen, weil man das Tupel in U, in W, oder in beide einfügen könnte. In den Fällen, in denen es beim Einfügen keine Übersetzung gibt, liegt das daran, dass das Tupel schon in der Sicht enthalten ist. Wir wollen nun das Einfügen als Funktion darstellen: τ LS SAP − UNION ( P ({ins (U , {v}), ins (W , {v})}), falls v ∉ U ∧ v ∉ W ins (U ∪ W , {v}) → , {}, sonst wobei SAP-UNION : P(DomD) → DomD. 40 Das Tupel ist nur dann aus V gelöscht, wenn es in beiden Operandenrelationen nicht mehr vorkommt; deshalb muss das Tupel sowohl in U als auch in W gelöscht werden, wenn es dort enthalten ist. {del (U , {v}), del (W , {v})}, {del (W ,{v}}, τ LS del (U ∪ W , {v}) → {del (U , {v})}, {}, falls v ∈ A ∧ v ∈ B falls v ∉ A ∧ v ∈ B falls v ∈ A ∧ v ∉ B falls v ∉ A ∧ v ∉ B Wenden wir uns nun den Differenzsichten zu. Die Lösung für dieses Problem gibt uns auch eine Lösung für Durchschnittssichten vor, weil diese sich mit Hilfe von Differenzsichten darstellen lassen: U ∩ W = U − (U − W ) Larson und Sheth drücken die Regeln für die Differenzsichten in Form einer Tabelle aus: v∈ ∈U v∈ ∈W V=U−W v∉ ∉U v∈ ∈W Einfügen von v Löschen v aus W Einfügen von v keine in U und zung Löschen von v aus W Löschen von v keine zung Überset- keine zung v∈ ∈U v∉ ∉W v∉ ∉U v∉ ∉W Überset- Einfügen von v in U Überset- Löschen von v keine Übersetzung aus U, Löschen von v aus W Oder Löschen aus beiden (SAP-DIFF) Die Autoren geben auch eine Tabelle für Durchschnittssichten an, welche sich aber durch die Verschiebung von Spalten aus der oben gezeigten Tabelle mit Hilfe der Ableitungsregel für den Durchschnitt herleiten lässt. Ein Mehrdeutigkeitsproblem tritt bei jeder dieser Operationen nur an einer Stelle auf. Beim Durchschnitt im Fall des Löschen eines Tupel, wenn das Tupel in beiden Relationen existiert, beim Löschen aus einer Differenz , wenn das Tupel in U, 41 aber nicht in W vorkommt, was der Definition der Differenz entspricht. Beim Einfügen werden alle vier Fälle diskutiert, was wir in folgender Funktion ausdrücken: {del (W , {v})}, {ins(U , {v}), del (W , {v})}, τ LS ins (U − W , {v}) → {}, {ins(U , {v})}, falls v ∈ U ∧ v ∈ W falls v ∉ U ∧ v ∈ W falls v ∈ U ∧ v ∉ W falls v ∉ U ∧ v ∉ W Wir wollen nun das Löschen als Funktion darstellen: τ LS SAP-DIFF ( P (ins (U , {v}), del (W , {v}))), falls v ∈ U ∧ v ∉ W del (U − W , {v}) → , {}, sonst wobei SAP-DIFF : P(DomD) → DomD. 4.3.2 Selektion und Projektion Die Regeln für Selektionssichten drücken Larson und Sheth in folgender Tabelle aus. Das einzufügende Tupel ist v, U ist die Operandenrelation und f ist die Funktion, die die Selektionsbedingung beinhaltet: V = U[v|f(v)] Einfügen von v Löschen von v v∈ ∈U f(v) keine Übersetzung v∉ ∉U v∉ ∉U ¬ f(v) Ändere v so, dass Einfügen von v in U f(v) wahr werde SAP-SEL: Löschen keine Übersetzung von v aus U, oder ändere v so, dass ¬ f(v) wahr werde keine Übersetzung Die Autoren erlauben die Änderung des Tupel v, so dass das zu löschende Tupel die Selektionsbedingung nicht mehr erfüllen kann. Dies verursacht allerdings ein Mehrdeutigkeitsproblem, weil zwei Möglichkeiten zum Löschen dieses Tupel in Betracht kommen, und zwar das Löschen des Tupel oder die Änderung des Tupel. Ausgedrückt ist dies in folgender Regel: 42 SAP − SEL(U , f ,{v}), falls v ∈U ∧ f (v) τ LS del (U [v | f (v)],{v}) → , wobei {}, sonst SAP-SEL : R × (∪x∈R dom(x) → {TRUE, FALSE}) × DomD → DomD Das Einfügen eines Tupel ist im Fall, dass es nicht in der Relation existiert, logischerweise nur durch das Einfügen des Tupel erreichbar. Nur im Fall, dass das Tupel in der Relation schon existiert, aber wegen der Selektionsbedingung nicht in der Sicht vorkommen kann, erlauben die Autoren eine Änderung des Tupel, so dass es dort erscheinen kann. Dazu stellen wir folgende Regel auf: {}, falls v ∈ U ∧ f (v) ins (U [v | f (v)],{v}) →ändere v, so dass f(v), falls v ∈ U ∧ ¬f (v) ins (U , v), falls v ∉ U τ LS Die Autoren präsentieren die Regeln für die Projektionssicht in folgender Tabelle: V=U[v1, …, vn] v ∈ U[v1, …, vn] v ∉ U[v1, …, vn] Einfügen von v Keine Übersetzung SAP-PROJ Löschen von v Lösche (v1, …, vn, x1, …, xm) Keine Übersetzung aus U(xi beliebig) Das Problem bei Projektionssichten stellt beim Einfügen eines Tupel immer die Belegung der unbekannten Attributwerte dar. Dieses Problem nennen Larson und Sheth SAP-PROJ. Sie geben für den Fall, dass das Tupel schon in der Sicht erscheint, keine Übersetzung an. Folgende Regel drückt dies aus: SAP − PROJ (U ,{a1 ,..., an },{v}), falls v ∉ U [a1 ,..., an ] τ LS ins(U [a1 ,..., a n ],{v}) → , {}, sonst wobei SAP-PROJ : R × P(A) × DomD → DomD. 43 Das Löschen eines Tupel v aus der Sicht wird durch das Löschen aller Tupel der Relation erreicht, die v als Projektion von sich auf die Attributwerte von V haben, egal wie sie weiter belegt sind: τ LS del (U , {(v1 ,..., v n , x1 ,..., x n ) | x1 ,..., x n beliebig}), falls v ∈ U [ a1 ,..., a n ] del (U [a1 ,..., a n ],{v}) → {}, sonst es wird immer auf eine Menge von Attributen projiziert, die die Schlüsselattribute beinhaltet, weil die Projektion auf Mengen, die keine Schlüsselattribute beinhalten, oft Duplikate verursacht. Die Autoren beschreiben, dass beim Einfügen von Tupeln, die die Schlüsselattribute U nicht beinhalten, die Schwierigkeit ist, eindeutige Werte für die entsprechenden Schlüsselattribute zu finden. Sie geben zu Bedenken, ob sich der Aufwand der Implementierung im Verhältnis zur gewonnenen Funktionalität lohnt. Die Autoren beschränken die Arbeit auf die ersten n Attribute, dies ist allerdings akzeptabel, weil die Reihenfolge der Attribute unwichtig ist und man diese Reihenfolge durch die Benutzung des Projektionsoperators ändern kann. Als Lösungen für SAP-PROJ geben Larson und Sheth das Belegen der Attributwerte mit Defaultwerten oder mit semantisch von v1, …, vn abgeleiteten Werten an. Vom Belegen mit Nullwerten raten sie, auf Grund der damit verbundenen Mehrdeutigkeitsprobleme, ab. 4.3.3 Join Einer der Grundoperatoren beim Join ist das Produkt, das an sich Probleme verursacht, weil alle möglichen Kombinationen der Tupel der Basisrelationen erzeugt werden. Die die Joinbedingung nicht erfüllenden Tupel werden jedoch durch die Selektion eliminiert. Es kann aber sein, dass Tupel die Joinbedingung erfüllen, aber im Sichtänderungswunsch nicht enthalten sind. Diese Tupel nennt man Seiteneffekte. Sei nun V die Joinsicht und U und W seine Operandenrelationen. Um das Tupel v = (u1, u2, …, ui, wj, wj-1, …, w1) einzufügen, muss seine Projektion auf die Attributmenge von U, also das Tupel (u1, u2, …, ui) in U, existieren und genauso das Tupel (wj, wj-1, …, w1) in W existieren. Das garantiert aber nur, dass das Tupel in der Sicht erscheint. Wenn ein Projektionstupel in seiner Operandenrelation nicht existiert, 44 dann muss es eingefügt werden. Das garantiert aber nur das Erscheinen des Tupel in der Sicht, es kann aber sein, dass noch weitere Tupel, die die Joinbedingung erfüllen, mit in die Sicht dazukommen, ohne dass der Änderungswunsch sie beinhaltet hätte. Im Folgenden gehen wir davon aus, dass die Joinattribute ui∈attr(U) und wj∈attr(W) sind, also ui = wj ist. Die Autoren geben zur Beschreibung der Lösung des Problems folgende Tabelle an: u∈ ∈U w∈ ∈W V=U⋈W ui = wj Einfügen Keine Übersetzung von v u∉ ∉U w∈ ∈W u∈ ∈U w∉ ∉W u∉ ∉U w∉ ∉W Bedingung 1: wenn Bedingung 2: wenn Bedingung 3: wenn ((ui = Schlüssel(U) ((wj = Schlüssel(W) (ui = Schlüssel(U) oder count oder oder count (U[ui=k])=0) (U[ui=k])=1) count(W[wj=k])=1) und (wj = Schlüssel(W) und und oder count W[wj=k])=0) count (W[wj=k])=0) count (U[ui=k])=0) Dann {füge w in W Dann {füge w in W Dann {füge u in U ein} und u in U ein} ein} sonst keine Überset- sonst keine Übersetzung sonst keine Überset- zung zung Löschen Bedingung 4: wenn von v ((ui = Schlüssel(U) Keine Übersetzung Keine Übersetzung Keine Übersetzung oder count (U[ui =k])=1) und wenn ((wj = Schlüssel(W) oder count (W[wj =k])=1) dann SAP-JOIN sonst wenn (wj = Schlüssel(W) oder count (W[wj =k])=1) dann {lösche u von U} sonst wenn (ui = Schlüssel(U) oder count (U[ui =k])=1) dann {lösche w von W} sonst keine Übersetzung 45 Wegen der Schwierigkeit des Problems der Joinsichten betrachten wir zuerst ein Beispiel. U: W: V = U ⋈ W: M N N K a 1 2 l b 2 3 h a 3 3 d 5 j M N N K b 2 2 l a 3 3 h a 3 3 d Wir wollen nun die Tabelle von Larson und Sheth diskutieren. Wir nehmen an, dass das Tupel u in U nicht existiert, aber w schon in W. Allerdings gibt in W ein beliebiges Tupel k = (kj, kj1, …, k1), dessen Attributswert kj = wj ist. Beim Einfügen von u in U erscheinen andere Tupel, in der Form (u1, u2, …, ui, kj, kj-1, …, k1) als Seiteneffekte in V. Larson und Sheth lassen Seiteneffekte in keiner Form zu. Dafür stellen sie beim Einfügen eines in V fehlenden Tupel v sicher, dass seine beiden Projektionen u und w in ihren Relationen U bzw. W die einzigen sind, die einen bestimmten Wert in der Spalte des Joinattributs haben. Aus der Definition von Schlüsselattributen folgt die Garantie, dass alle Attributswerte eindeutig zu verschiedenen Tupel zugeordnet werden können. Die Schlüsselattributseigenschaft zählen die Autoren zu den Strukturrandbedingungen, welche während des Datenbankentwurfs gesammelt werden und die Semantik der Datenbank genannt werden. Wenn das Attribut nicht Schlüsselattribut ist, muss festgestellt werden, wie oft jeder Attributwert vorkommt. Dafür benutzen die Autoren von den extensionalen Informationen, also den Informationen über jedes Tupel der Relationen und seine Elemente, das so genannte „count“-Wissen, also wie viele Tupel es gibt, die einen bestimmten Attributwert ui haben. Es entstehen also jetzt vier Fälle: 1. Beide Projektionen sind schon in den Operandenrelationen enthalten, d. h. das Tupel erscheint schon in der Sicht. Dann geben Larson und Sheth keine Übersetzung an. Das entspricht dem Fall u ∈ U, w ∈ W. Bezüglich unseres Beispiels das Tupel (a, 3, 3, h), also (a, 3) aus U und (3, h) aus W, deshalb erscheint das Tupel in der Sicht und es kann nicht mehr eingefügt werden. 46 2. Im Fall u ∈ U und w ∉ W ist zuerst zu prüfen, ob ui Schlüsselattribut ist, oder der Count-Wert von ui gleich 1 ist. In beiden Situationen gibt es nur das Tupel u, welches in Spalte i diesen Wert hat. Nun ist zu prüfen, ob der Count-Wert von wj den Wert 0 hat. Nur unter diesen Bedingungen, die die Schlüsseleigenschaft garantiert, besagt die Regel, dass w in W eingefügt wird. Ein Beispiel wäre, das Einfügen des Tupels (a, 1, 1, c). Wir merken, dass (a, 1) schon in U existiert. Der Wert 1 kommt in der Spalte nur einmal vor. Das Tupel (1, c) existiert nicht in W, und der Wert 1 kommt in der Spalte N nicht vor. 3. Dieser Fall ist symmetrisch zum zweiten Fall, nur das u ∉ U und w ∈ W ist. Auch hier darf wj nur einmal vorkommen, und ui darf nicht vorkommen. Die Übersetzung ist das Einfügen von u in U. In unserem Beispiel wollen wir das Tupel (a, 5, 5, j) einfügen. Wir merken, dass (a, 5) nicht in U existiert und der Attributwert 5 nicht in N vorkommt. Das Tupel (5, j) ist schon in W, und der Wert 5 kommt in der Spalte N nur einmal vor. Deshalb können wir (a, 5) in U einfügen. 4. In diesem Fall ist weder u ∈ U noch w ∈ W. Die Autoren fordern, dass die Werte von ui und wj nicht in den entsprechenden Spalten vorkommen dürfen, bzw. alternativ dass ui oder wj Schlüssel ihrer Relation sind. Falls diese Bedingung erfüllt ist, geben sie als Übersetzungsregel das Einfügen von u in U und w in W an. Es ist aber fraglich, ob das im Fall, dass einer der beiden Joinattribute (z. B. ui) Schlüsselattribut ist, richtig ist, weil es sein könnte, dass der Wert von ui schon der Schlüsselwert eines anderen Tupel aus U ist. In unserem Beispiel: nehmen wir an das Spalte N Schlüssel ist, dann wollen wir das Tupel (c, 1, 1, m) in V einfügen, dann erfüllt (c, 1) wegen der Schlüsselbedingung die Voraussetzung von Larson und Sheth und das Tupel (1, m) erfüllt sie wegen dem Count-Wert von 0. In diesem Fall geben die Autoren als Übersetzung das Einfügen von (c, 1) in U und von (1, m) in W an. Wir merken hier, dass ein Tupel mit dem Wert (a, 1, 1, m) in der Sicht als Seiteneffekt erscheint. Die Autoren schließen alle Fälle aus, in denen einer der beiden Werte ui bzw. wj in seiner Spalte mehr als einmal vorkommt. Meiner Meinung nach gibt es allerdings noch weitere Möglichkeiten in den beiden Fällen (u ∉ U, w ∈ W) und (u ∈ U, w ∉ W) das Tupel einzufügen, ohne Seiteneffekte zu verursachen und sogar ohne die Schlüsselbedingung zu verletzten. Als Beispiel hierfür betrachten wir das Einfügen der Tupel (b, 2, 2, n), (c, 2, 2, l), oder (a, 3, 3, m). In diesen Fällen sind die Tupel, die man als Seiteneffekte vermeiden möchte, schon in 47 der Sicht enthalten. Wir werden uns diesem Problem später im Vergleich der verschiedenen Ansätze noch einmal zuwenden. Hier formulieren wir die Übersetzungsregel in diesem Fall: {ins (W , {w})}, {ins (U , {u})}, τ LS íns (UjoinW , {v}) → {ins (U , {u}), ins (W , {w})}, {}, falls (u ∈ U ∧ w ∉ W ) ∧ (COUNT (U [u i = k ]) = 1 ∧ COUNT (W [ w j = k ]) = 0) falls (u ∉ U ∧ w ∈ W) ∧ (COUNT (U [u i = k ]) = 0 ∧ COUNT (W [ w j = k ]) = 1) falls (u ∉ U ∧ w ∉ W) ∧ (COUNT (U [u i = k ]) = 0 ∧ COUNT (W [ w j = k ]) = 0) sonst Betrachten wir nun das Löschen des Tupel v = (u1, u2, …, ui, wj, wj-1, …, w1) aus der Sicht V, allerdings nur in dem Fall, dass dieses Tupel schon in der Sicht enthalten ist. Das heißt u ist in U und w in W enthalten. In Hinsicht darauf, ob die Werte von ui bzw. wj ein- oder mehrmals in ihrer Spalte vorkommen, ergeben sich nun drei Fälle: 1. Die Werte von ui und wj kommen nur einmal vor, d. h. u und w sind keine Projektionen auf die Attributmenge von U bzw. W. Beim Löschen von z. B. u aus U verliert w seinen einzigen Joinpartner. Das gilt allerdings auch symmetrisch für w. Als Beispiel: Löschen von (b, 2, 2, l) aus V. Wir können (b, 2) aus U löschen, (2, 1) aus W, bzw. beide Tupel. Das nennen die Autoren SAP-JOIN. Die Übersetzung in diesem Fall ist die Lösung dieses Problems. 2. Das Attribut wj ist Schlüsselattribut, oder sein Count-Wert ist 1. Dann kommt der Wert von ui mehr als einmal in seiner Spalte vor, weil sonst Fall 1 angewandt werden würde. Als Übersetzung geben die Autoren das Löschen u aus U an. 3. Das Attribut ui ist Schlüsselattribut, oder sein Count-Wert ist 1. Dann kommt der Wert von wj mehr als einmal in seiner Spalte vor, weil sonst Fall 1 angewandt werden würde. Als Übersetzung geben die Autoren das Löschen w aus W an. Ein Beispiel wäre: (a, 3, 3, h). 48 Wir formalisieren die Übersetzung eines Einfügens eines Tupel in eine Joinsicht bei Larson und Sheth folgendermaßen: SAP − JOIN (P ({del (U , {u}), del (W , {w})})), {del (U , {u})}, τ LS del (UjoinW , {v}) → {del (W , {w})}, {}, falls (u ∈ U ∧ w ∈ W) ∧ (COUNT (U [u i = k ]) = 1 ∧ COUNT (W [ w j = k ]) = 1) falls (u ∈ U ∧ w ∈ W) ∧ (COUNT (U [u i = k ]) > 1 ∧ COUNT (W [ w j = k ]) = 1) falls (u ∈ U ∧ w ∈ W) ∧ (COUNT (U [u i = k ]) = 1 ∧ COUNT (W [ w j = k ]) > 1) sonst wobei SAP-JOIN : P(DomD) → DomD. 4.4 Mehrdeutigkeiten Der Ansatz von Larson und Sheth behandelt Mechanismen zur Lösung der Mehrdeutigkeitsprobleme konkreter als Masunaga. Wir erwähnen diese hier kurz, beschäftigen uns aber im Vergleich nicht weiter mit ihnen. Die Autoren geben fünf Integritätsbedingungen an, welche entscheiden können, ob ein Lösungskandidat in bestimmten Fällen überhaupt betrachtet werden soll. Hierdurch kann es sein, dass man eine eindeutige Übersetzung finden kann. Die fünf Integritätsbedingungen sind: 1. Teilmengen-Abhängigkeit: Sei eine Tupelmenge x ∈ dom(U) (bzw. dom(W)) gegeben, dann enthält U[x] W[x] , dann wenn die Menge der auf die Tupel aus x reduzierten Tupel aus U eine Obermenge der auf die Tupel aus x reduzierten Tupel aus W ist. Dies kann z. B. bei SAP-UNION genutzt werden: Die drei Kandidaten sind 1. {ins(U, {v})}, 2. {ins(W, {v})} und 3. {ins(U, {v}), ins(W, {v})}. Nun kann man diese reduzieren: wenn U W beinhaltet, dann kommen nur Kandidat 1 oder 2 in Frage − weil die Elemente von W schon in U sind −, wenn W Obermenge von U ist nur 2 und 3 − da die Elemente von U schon in W sind. 49 , 2. Disjunktheits-Abhängigkeit: Sei eine Tupelmenge x ∈ dom(U) (bzw. dom(W)) gegeben. Dann U [x] ist disjunkt von W [x], wenn die auf die Tupel aus x reduzierten Tupel aus U geschnitten mit den auf die Tupel aus x reduzierten Tupel aus W gleich der leeren Menge sind. Dies kann z. B. bei SAP-DIFF genutzt werden: Die drei Kandidaten sind 1. {ins(W, {v}}, 2. {del(U, {v})} und 3. {ins(W, {v}), del(U, {v})}. Wenn U und W disjunkt sind, dann kann man die Kandidaten auf 2 und 3 reduzieren, weil sonst die Disjunktionseigenschaft verletzt werden würde. 3. Funktionale Abhängigkeiten: Zwei Attribute ui und uj sind funktional abhängig voneinander, wenn für alle Tupel u, u’ ∈ U aus gleichen Werten in ui gleiche Werte in uj folgen. Dies kann z. B. bei der Belegung der unbekannten Werte bei SAP-PROJ benutzt werden. Durch eine funktionale Abhängigkeit kennen wir schon die einzusetzenden Werte. 4. Schlüsselbeschränkungen: Die normalen Schlüsseleigenschaften sind Eindeutigkeit und Verzicht auf Nullwerte. Diese Eigenschaften haben wir schon bei der Übersetzung von Joinsichten besprochen. 5. Kardinalitätsbeschränkung: Diese Integritätsbedingungen setzen Unter- und Obergrenzen für die Anzahl der Tupel, die in einer Relation vorkommen dürfen. Diese Bedingung kann man z. B. beim Lösen von SAP-UNION benutzen: wenn die Anzahl der Tupel in U schon die maximale Kardinalität erreicht hat, dann sollen wir nicht mehr in diese Relation einfügen. Dadurch wird die Übersetzung eindeutig, da zwei Fälle wegfallen. Weiterhin besprechen Larson und Sheth noch die Anwendungssemantik als Mittel der Auflösung von Mehrdeutigkeiten. Dies entspricht dem Ansatz von Masunaga darin, dass diese Anwendungssemantik vom Benutzer angegeben werden muss. 50 5 Vergleich der Ansätze In diesem Kapitel werden die beiden Arbeiten von Larson und Sheth und von Masunaga zum Lösen des Sichtenänderungsproblems diskutiert und verglichen. Obwohl beide Arbeiten von denselben Prinzipien ausgehen und dieselben Ziele erreichen wollen, gehen sie auf verschiedene Weise mit dem Problem um. Masunaga konzentriert sich auf die Bedeutung der Sicht, die er mit Hilfe der Prädikatenlogik formalisiert, um mit deren Hilfe die Übersetzungsregeln zu formulieren. Im Gegensatz dazu analysieren Larson und Sheth die Syntax der Sicht und fordern die Speicherung verschiedener Informationen – syntaktischer, semantischer und extensionaler Informationen, die während der Schemadefinition und später während der Anfragebearbeitung gesammelt werden –, auf denen die Übersetzungsregeln arbeiten können. Wir wollen in diesem Kapitel allerdings nicht nur die Resultate der beiden Arbeiten diskutieren, sondern auch auf die Methodik eingehen, nach der die Autoren vorgehen. 5.1 Voraussetzungen und Notation Die beiden Arbeiten definieren Sichten als virtuelle Relationen, die von einer Menge von Basisrelationen und auch von anderen Sichten durch eine Menge von Operatoren abgeleitet werden. Die Autoren gehen dabei auf unterschiedliche Art vor. Larson und Sheth wählen die Mengenlehre als Grundlage der Definition, Masunaga gibt eine induktive Definition an. Masunaga visualisiert explizit die Schachtelung als Baumstruktur. Larson und Sheth beziehen sich bei ihrem Ansatz auf die abgeschlossene Struktur der Algebra. Bemerkenswert ist die Wahl der jeweiligen Operatorenmenge, die die beiden Arbeiten betrachten. Von den Grundoperatoren der Relationenalgebra wählen beide Arbeiten folgende vier: Differenz, Projektion, Selektion und Vereinigung. Beide verzichten auf die beiden Umbenennungsoperatoren, welche auch eigentlich ein technisches und kein theoretisches Problem darstellen, was Masunaga auch ausdrücklich betont. Larson und Sheth behandeln den 51 Durchschnittsoperator gesondert, obwohl er bekannterweise von den anderen Operatoren abgeleitet werden kann. Eine Erklärung dafür könnte sein, dass die Autoren ihren Ansatz praxisorientierter darstellen wollen, da der Durchschnittsoperator in der Praxis häufig von Systemen zur Verfügung gestellt wird. Masunaga geht auf das Produkt gesondert ein und behandelt den Join mit Hilfe zusätzlicher Regeln. Im Gegensatz dazu behandeln Larson und Sheth nur den Join und das Produkt dadurch nur implizit; das entspricht auch dem Vorgehen in der Praxis, wo auch meist der Join als Grundlage verwendet wird. Dieser zweite Ansatz, den expliziten Join zu betrachten, hat auch den Vorteil, dass es keine spezielle Ausnahmeregelung, für die Verkettung von Selektion und Produkt geben muss, wie sie bei Masunaga notwendig ist. Die folgende Tabelle stellt die Unterschiede in den verschiedenen Notationen dar. Larson und Sheth Masunaga Übliche Notation Differenz U–W U-W U–W Vereinigung U∪W UuW U∪W Durchschnitt U∩W Projektion U [v1, …, vm] U [X] πX(U) Selektion U [v|f(v)] (Θ-Restriktion) σCOND(U) — U∩W U [XΘY] Join U join W where ui=wj (Produkt) U⋈W UxW Zu Masunagas Notation ist zu sagen, dass seine Arbeit in den frühen 1980er Jahren entstanden ist. Da damals nicht die heutigen Mittel zum Formelsatz zur Verfügung standen, wurden die Formeln mit der Schreibmaschine erstellt und von Hand ergänzt, so dass z. B. der Einfachheit halber „u“ statt „∪“ verwendet wurde. Die Notation von Larson und Sheth ist an die Notation der Mengenlehre angelehnt, wie man bei der Notation der Selektion sehen kann. Die Mächtigkeit der Operatoren wird dadurch aber nicht beeinflusst. Anders verhält es sich bei der Θ-Restriktion von Masunaga. Wie wir in Kapitel 3 schon beschrieben haben, muss dort die Selektion als Verkettung von Θ-Restriktionen und anderen Operatoren simuliert werden. Der Projektionsoperator unterscheidet sich in allen drei Notationen nur in der Form, er ist aber überall gleich mächtig. Kommen wir nun zum Joinoperator. Bei Larson und Sheth unterscheidet er sich nur in der Notation, aber nicht in der Mächtigkeit. Masunaga behandelt ihn nicht direkt, sondern zerlegt ihn prinzipiell in seine Bestandteile. 52 5.2 Methodik 5.2.1 Änderungsoperatoren Wenden wir uns zuerst den Änderungsoperatoren zu. Von den drei möglichen Änderungsoperatoren – Einfügung, Löschung, Modifikation – bearbeiten die beiden Ansätze nur die Löschung und die Einfügung von Tupeln. Die Modifikation lässt sich als Transaktion mit Löschung und anschließender Einfügung realisieren. Der Transaktionsansatz hat den Vorteil, dass sie als Ganzes gelingt oder fehlschlägt. Dadurch wird die Modifikation vollständig simuliert. Larson und Sheth erwähnen das ausdrücklich, aber Masunaga spricht nur von einem „Paar“ aus Löschung und Einfügung, obwohl er sie auch theoretisch einführen könnte. Die beiden Ansätze unterscheiden sich auch darin, ob nur ein einzelnes Tupel bearbeitet wird, wie bei Larson und Sheth, oder eine Tupelmenge, wie bei Masunaga. Als Grund für diese Beschränkung bei Larson und Sheth nennen die Autoren die Bestimmung der Übersetzungsregel, da die Existenz des Tupel in einer der Operandenrelationen eine entscheidende Rolle spielt. Nehmen wir an, dass eine Menge D mit zwei Tupeln erlaubt wäre. Dann kommt es vor, dass bei Vereinigungs-, Differenz- und Joinsichten eines der beiden Tupel in einer der Operandenrelationen, das andere aber in der anderen Operandenrelation vorkommt. Das verursacht Probleme beim Formulieren der Voraussetzungen der Übersetzungsregeln. Bei der Selektion entsteht ein ähnliches Problem, so dass die Tupel unterschiedlich behandelt werden müssten. Bei der Projektion entsteht das Problem nicht, weil alle Tupel von der Projektion gleich behandelt werden. 53 5.2.2 Übersetzungen Wenn die Änderungsoperatoren auf eine Sicht angewandt werden, dann müssen diese Änderungen in angepasster Form an die Basisrelationen weitergegeben werden, so dass diese bei erneutem Abruf der Sicht die gewünschten Änderungen enthält. Masunaga arbeitet hierbei auf dem Operatorbaum und benutzt in jedem Knoten eine lokale Übersetzung, die an dieser Stelle jeweils auch gültig sein muss. Es gibt aber auch Ausnahmen, die von der Lokalität der Regeln abweichen. Die gesamte Übersetzung ist nur dann gültig, wenn alle Übersetzungen bis zu den Basisrelationen hin gültig gewesen sind. Larson und Sheth erzeugen mehrere mögliche Übersetzungen, aus denen eine richtige Übersetzung gewählt und durchgeführt wird. Wir gehen nun darauf ein welche Übersetzungen als gültig anerkannt werden. Beide Ansätze geben Kriterien an, welche in so einem Fall erfüllt sein müssen. Es gibt drei gemeinsame Kriterien: 1. Bei einer gültigen Übersetzung sind keine Seiteneffekte erlaubt. 2. Bei einer gültigen Übersetzung gibt es keine überflüssigen Schritte. 3. Die Übersetzung muss eindeutig sein. Beide tolerieren das Nichteinhalten von Kriterium 3 wegen des Mehrdeutigkeitsproblems, solange noch keine Lösung gefunden wurde. Ein Beispiel wäre das Einfügen in eine Vereinigungssicht, wobei es drei Möglichkeiten gibt, von denen eine gewählt werden muss. Seiteneffekte erlauben Larson und Sheth nur beim Join. Masunaga toleriert Seiteneffekte überhaupt nicht, obwohl sie manchmal semantisch angemessen wären. Es könnte allerdings sein, dass er davon ausgegangen ist, dass die Änderungswünsche semantisch und syntaktisch vollständig sind. Kriterium 3 tolerieren nur Larson und Sheth, Masunaga lässt keine überflüssigen Schritte zu. Es ist allerdings manchmal sinnvoll, syntaktisch überflüssige Schritte zuzulassen bzw. zu leisten, um eine Übersetzung zu erreichen. Im folgenden Beispiel sind Professoren und Vorlesungen Relationen und Professor_hält der Natural Join der beiden anderen Relationen. 54 Professoren: Vorlesungen: Professor_hält: Name VorlesungsNr VorlesungsNr Name P.Name Nr V.Name M 2 1 I.S. M 2 T.I. L 1 2 T.I. L 1 I.S. K 3 3 S.T. K 3 S.T. Das Löschen von (L, 1, „I.S.“) kann durch das Löschen von (1, „I.S.“) aus Professoren, das Löschen von (L, 1) aus Vorlesungen, bzw. das Löschen von beiden realisiert werden. Syntaktisch gesehen ist das Löschen beider Tupel ein überflüssiger Schritt. Nur semantisch muss man wissen, ob 1. die Vorlesung gestrichen wurde, aber der Professor weiterhin an der Uni ist, dann löscht man (1, „I.S.“). 2. der Professor hat die Uni verlas, aber die Vorlesung von jemandem anderem gehalten wird. Dieser Fall setzt voraus, dass (L, 1) gelöscht wird. 3. weder der Professor noch an der Uni ist, noch die Vorlesung angeboten wird. In diesem Fall müssten beide Tupel gelöscht werden, obwohl hier ein syntaktisch überflüssiger Schritt enthalten ist. Larson und Sheth nennen noch drei weitere Kriterien: 1. Die Übersetzung muss gültig sein, also die Sichtänderung soll wie angegeben durchgeführt werden. 2. Die Übersetzung darf die Integritätsbedingungen nicht verletzen. 3. Die Übersetzung muss auf die Basisrelationen denselben Änderungsoperator anwenden, welcher im Änderungswunsch enthalten ist. Die ersten beiden Kriterien sind eigentlich selbstverständlich und sollten kein theoretisches Problem sein. Die Verletzung des dritten Kriteriums tolerieren die Autoren, weil es Situationen gibt, in denen das semantisch sinnvoll ist (zum Beispiel bei Differenzsichten). 55 5.2.3 Syntaktisches und semantisches Wissen Masunagas Ansatz basiert auf der Prädikatenlogik. Die Sichtdefinitionen werden in prädikatenlogische Formeln umgeformt, um die Übersetzungsregeln abzuleiten. Wir versuchen jetzt anhand eines Beispiels, die Gemeinsamkeiten bzw. Unterschiede mit dem syntaktischen und semantischen Wissen, auf das Larson und Sheth zurückgreifen, zu betrachten. (∀t ∈ dom(V ))(M_of_V(t ) = (M_of_U(t ) ∨ M_of_W(t ))) Masunaga benutzt diese Formel, um zu bestimmen, was eine Vereinigungssicht bedeutet. Die Übersetzungsregel wird mit Hilfe der Veränderung dieser Formel entworfen, aber ein System, welches Masunagas Ansatz implementiert, würde nicht auf die Prädikatenlogik zurückgreifen. Bei Larson und Sheth geht es darum, dass verschiedenes semantisches und syntaktisches Wissen gespeichert wird, auf das das System zugreifen kann. Dieser Ansatz ist also praxisorientierter als der von Masunaga. Beide Ansätze schlagen zur Bestimmung der Semantik der Anfrage, die Kommunikation mit dem Benutzer vor. 5.3 Übersetzungsregeln Die beiden Ansätze geben Übersetzungen für fast dieselben Sichten; während Larson und Sheth Übersetzungsregeln für Durchschnittssichten angeben, gibt Masunaga die Übersetzung für die Produktsicht an. 56 5.3.1 Vereinigung und Differenz Beide Ansätze kommen beim Einfügen in Vereinigungssichten zu ähnlichen Ergebnissen: und zwar die Lösung durch Klärung des Mehrdeutigkeitsproblems, welches Masunaga SAP2 und welches Larson und Sheth als SAP-UNION bezeichnen. Aufgrund der verwendeten Methodik geben Larson und Sheth Regeln an, die die Fälle, in denen das Tupel nicht in der Sicht erscheint, gesondert betrachten. Masunaga braucht das nicht, weil seine Methodik davon ausgeht, dass das Löschen von nicht vorhandenen Tupel kein Fehler ist. Auch beim Löschen achtet Masunaga nicht darauf, ob das Tupel überhaupt vorhanden ist, achtet also auf keine Details. Im Gegensatz dazu geben Larson und Sheth ausführlich die verschiedenen Fälle an und bestimmen, was in jedem Fall zu tun ist. Beim Löschen aus Differenzsichten stimmen beide Ansätze darin überein, dass es zu einem Mehrdeutigkeitsproblem kommt. Masunaga nennt es SAP1 und Larson und Sheth nennen es SAP-DIFF. Die Lösung dieses Problems ist die einzige Übersetzung. Masunaga geht davon aus, dass die einzufügende Menge nicht bereits in der Sicht enthalten ist; deshalb gibt er für diese Fälle keine Regeln an. Larson und Sheth geben keine Übersetzung an für den Fall, dass das Tupel in U existiert, in W aber nicht. 5.3.2 Projektion und Selektion Bei Projektionssichten stimmen beide Ansätze in ihren Übersetzungen überein. In beiden Fällen muss das Problem der unbekannten Werte beim Einfügen gelöst werden. Beim Löschen muss meistens eine Menge von Tupel gelöscht werden, die eine gemeinsame Projektion besitzen. Larson und Sheth fordern allerdings, dass die Attribute, auf die projiziert wird, die Schlüsselattribute beinhalten, damit es nicht zu Duplikaten kommen kann. Masunaga geht auf dieses Problem nicht weiter ein. Die Selektion und Masunagas Θ-Restriktion werden wir hier als gleichmächtig ansehen; auf die Besonderheit der Θ-Restriktion sind wir schon in Kapitel 3 eingegangen. Bei Larson und Sheth kommt es beim Löschen eines Tupels aus einer Selektionssicht zu einem Mehrdeutigkeitproblem, welches als Alternativen das Löschen des Tupels aus der Operandensicht oder 57 das Verändern des Tupels, so dass es die Selektionsbedingung nicht mehr erfüllt ist, hat. Beim Einfügen eines Tupels, welches die Selektionsbedingung verletzt, kann man nach Larson und Sheth nur das Tupel verändern, so dass es sie nicht mehr verletzt. Auf diese Problematik geht Masunaga gar nicht ein, er erlaubt in solchen Fällen das Verändern eines geforderten Tupels nicht. Meiner Meinung nach ist dieses Vorgehen schon so etwas wie eine Modifikation und sollte so nicht durchgeführt werden. Falls man nur einzelne Tupel einfügt, beeinflussen sich die Tupel nicht gegenseitig. Bei Masunaga ist es so, dass er eine Tupelmenge entweder als ganze akzeptiert, oder sie als ganze ablehnt. Beim Ansatz von Larson und Sheth müsste man eine solche Funktion mit Hilfe von Transaktionen umsetzen, wozu man aber nicht verpflichtet ist. Ein Beispiel für dieses Problem ist: Selektionssicht (Nr > 2): Nr Name 1 aa Nr Name 2 bb 5 ab 5 ab 3 aa 3 aa Wenn man nun die Menge {(1, bb), (2, cc), (4, kk)} einfügt, dann gibt es bei Masunaga keine Übersetzung ( (1, bb) und (2, cc) können nicht eingefügt werden), bei Larson wird nur (4, kk) eingefügt, für die anderen Tupel gibt es keine Übersetzungen. 5.3.3 Join und Produkt Masunaga nennt den Joinoperator nicht, sondern gibt nur einen Sonderfall von Produkt und Selektion an, welcher aber dem Joinoperator entspricht. Er geht anders mit der Situation um als Larson und Sheth. Masunaga erlaubt das Bearbeiten einer Menge von Tupel und Larson und Sheth nur von einem einzigen. Zum Vergleich der beiden Ansätze beschränken wir uns auch bei Masunagas Verfahren auf eine Menge mit genau einem Tupel. Um die Effekte der relationalen Ausdrücke zu vergleichen, bilden wir parallel sowohl Join wie bei Larson und Sheth, als auch Produkt und Selektion wie bei Masunaga. Wir werden uns aber beim Vergleich an Larson und Sheth orientieren und vergleichen alle ihre Fälle mit dem Ansatz von Masunaga. Wir verdeutlichen den Sachverhalt nun an einem Beispiel, wobei U und W Operandenrelationen sind. Darauf bilden wir sowohl die Joinsicht V mit dem Joinattribut F, 58 als auch die Produktsicht P, aus der die Joinsicht V durch eine Selektion mit der Bedingung U.F=W.F gebildet wird. P = U ×W V = U ⋈ W = σ U .F =W .F ( P ) Masunaga fordert keine bestimmte Bedingung für die Selektion, deshalb ist es möglich, viele Arten von Joins zu bilden. Wir beschränken uns hier allerdings auf die Joinbedingung von Larson und Sheth, damit wir den Vergleich durchführen können. W: U: P: V: K F F L K F F L K F F L a 1 2 m a 1 2 m b 2 2 m b 2 3 n b 2 2 m a 2 2 m a 2 a 2 2 m a 1 3 n b 2 3 n a 2 3 n Wir behandeln nun das Einfügen. Im Folgenden sei v das in V einzufügende Tupel und ui bzw. wj die Joinattribute in V. Bei Masunaga sei I={v} die einzufügende Menge. Dann sind die Tupel u und w die Projektionen von v auf die Attributmengen von U bzw. W. Daraus folgt das I1={u} und I2={w}. Dadurch dass Larson und Sheth ihren Ansatz von der Existenz von u und w in den Operandenrelationen ableiten, geben sie Regeln für vier Fälle an. Masunaga strukturiert seinen Ansatz anders: die Menge I ergänzt er mit weiteren Tupel, die nicht in der Joinsicht erscheinen, so dass die Kreuzreferenzbedingung für das Produkt erfüllt ist. 1. u ∈ U, w ∈ W In diesem Fall ist das Tupel schon in der Sicht. Larson und Sheth geben hier keine Übersetzung (keine Änderung) an. Masunaga setzt für eine Übersetzung voraus, dass 59 die Menge I nicht in der Sicht enthalten ist, deshalb braucht man hier keine Änderung durchzuführen. In diesem Fall gehen die beiden Ansätze gleich mit der Situation um. 2. u ∈ U, w ∉ W Larson und Sheth geben in diesem Fall für das Einfügen eine Bedingung an: (ui = Schlüssel(U) ∨ COUNT(U[ui=k])=1) ∧ COUNT(W[wj=k])=0, Das Tupel u muss nicht nur in U enthalten sein, sondern auch sein Joinattributwert darf nur ein Mal in der Joinspalte vorkommen (COUNT(U[ui=k])=1). Beim Tupel w ist die Situation anders; es reicht nicht, dass es nicht in W enthalten ist, sondern auch sein Joinattributwert darf nicht in der Joinspalte vorkommen (COUNT(W[wj=k])=0). Nur bei der Erfüllung der Bedingung geben Larson und Sheth eine Übersetzung an: „Füge w in W ein“. Wir werden den Ansatz von Masunaga in allen vier verschiedenen Fällen der Bedingung diskutieren und auch feststellen, dass Masunaga in einem weiteren Fall, außer dem Fall, wo die beiden Ansätze eine Übersetzung angeben, eine mögliche Übersetzung gibt. a) COUNT(U[ui=k])=1 und COUNT(W[wj=k])=0 Nur in diesem Fall, wenn der Joinattributwert von u nur einmal und der von w keinmal jeweils in seiner Joinspalte vorkommt, liefern Larson und Sheth eine Übersetzung. Um Masunagas Ansatz zu vergleichen, nehmen wir an, dass wir die Menge I={(a, 1, 1, f)} einfügen wollen, wobei (a, 1) in U enthalten ist, der Joinattributwert 1 nur einmal in der Spalte F von U vorkommt, das Tupel (1,f) aber nicht in W enthalten ist und der Joinattributwert 1 auch nicht in der Spalte F von W enthalten ist. In das Produkt wird die Menge I’={(a,1,1,f), (b,2,1,f), (a,2,1,f)} eingefügt. Die beiden ergänzten Tupel erreichen die Sicht V durch die Selektionsbedingung nicht. Die Übersetzung ist dann das Einfügen von (1,f) in W. Masunaga gibt also dieselbe Übersetzung für diesen Fall an wie auch Larson und Sheth, bespricht die Schlüsseleigenschaft wie Larson und Sheth aber nicht; in diesem Fall wird sie aber auch nicht verletzt, da 1 noch nicht in F von W vorkam. 60 b) COUNT(U[ui=k])=1 und COUNT(W[wj=k])>0 In diesem Fall existiert der Joinattributwert von w in der Joinspalte mindestens einmal, deshalb müssen wir unser Beispiel erweitern, so dass der Wert 1 in der Spalte F von W mindestens einmal vorkommt. Sei das Tupel (1,f) schon in W enthalten, d.h. das Tupel (a,1,1,f) ist schon in der Sicht V enthalten und die Tupel {(a,1,1,f), (b,2,1,f), (a,2,1,f)} sind in P. Wir wollen jetzt die Menge I={(a,1,1,h)} in V einfügen. Wir merken, dass (a,1) in U existiert und (1,h) nicht in W existiert, während der Wert 1 nur einmal in der Joinspalte F von U und W vorkommt. In das Produkt wird die Menge I’={(a,1,1,h), (b,2,1,h), (a,2,1,h)} eingefügt. Die beiden ergänzten Tupel erreichen die Sicht V durch die Selektionsbedingung nicht und die Kreuzreferenzbedingung ist für das Produkt erfüllt. Masunaga gibt dann eine Übersetzung an, und zwar „füge (1,h) in W ein“. Wir stellen fest, dass die Anzahl der Tupel in W, die den Joinattributwert 1 haben, keine Rolle bei Masunaga spielt, weil das keine Seiteneffekte in der Sicht verursacht. Larson und Sheth erlauben wegen der Schlüsseleigenschaft diese Übersetzung überhaupt nicht, allerdings verletzt Masunagas Übersetzung die Schlüsseleigenschaft nur im Fall, dass wj ein Schlüsselattributwert ist und nicht im Fall, dass nur ui ein Schlüsselattributwert ist. Wenn F Schlüsselattribut von W ist, dann wurde die Schlüsseleigenschaft durch die weitere 1 verletzt. c) COUNT(U[ui=k])>1 und COUNT(W[wj=k])= 0 In diesem Fall existiert der Joinattributwert von u mehr als einmal und der von w keinmal jeweils in seiner Joinspalte, deshalb müssen wir unser Beispiel wieder erweitern. Sei das Tupel (c,1) schon in U enthalten, dann sind die Tupel {(c,1,2,m), (c,1,3,n)} in P enthalten. Wir wollen jetzt die Menge I={(a,1,1,f)} in V einfügen. Die Kreuzreferenzbedingung ist nicht erfüllt, weil in der Produktsicht das Tupel (c,1,1,f) nicht enthalten ist und die Menge I’ darf es nicht enthalten, weil die Bedingung I’ ∪ V = I ∪ V sonst verletzt wäre. Deshalb gibt auch Masunaga so wie Larson und Sheth keine Übersetzung für diesen Fall an. d) COUNT(U[ui=k])>1 und COUNT(W[wj=k])> 0 In diesem Fall ist der Wert von ui mehr als einmal in F von U und der Wert von wj mindestens einmal in F von W enthalten. Wir wollen jetzt die Menge I={(b,2,2,h)}, die diese Bedingung erfüllt, in V einfügen. Die 61 Kreuzreferenzbedingung ist nicht erfüllt, weil in der Produktsicht das Tupel (a,2,2,h) nicht enthalten ist. Die Menge I’ darf es nicht enthalten, weil sonst die Bedingung I’ ∪ V = I ∪ V verletzt wird. Deshalb gibt auch Masunaga keine Übersetzung für diesen Fall an. 3. u ∉ U, w ∈ W Dieser Fall ist symmetrisch zum zweiten Fall. Für das Einfügen geben Larson und Sheth diese Bedingung an: (wj = Schlüssel(W) ∨ COUNT(W[wj=k])=1) ∧ COUNT(U[ui=k])=0. Sie geben als Übersetzung „Füge u in U ein“ an. Auch hier gibt es wieder vier verschiedene Fälle. Larson und Sheth geben nur in einem Fall eine Übersetzung an, Masunaga noch in einem weiteren: COUNT(W[wj=k])=1 ∧ COUNT(U[ui=k])>0. In diesem Fall erlauben Larson und Sheth wegen der Schlüsseleigenschaft diese Übersetzung nicht, allerdings verletzt diese Übersetzung die Schlüsseleigenschaft nur im Fall, dass ui ein Schlüsselattributwert ist und nicht im Fall, dass nur wj ein Schlüsselattributwert ist. 4. u ∉ U, w ∉ W In diesem Fall geben Larson und Sheth eine Übersetzung an. Die Bedingung ist COUNT(U[ui=k])=0) ∧ COUNT(W[wj=k])=0. Da Masunaga die Schlüsselattribute nicht beachtet, gehen wir jetzt im Vergleich nicht auf sie ein. Es gibt vier Möglichkeiten, die von der Existenz von ui und wj abhängen. a) COUNT(U[ui=k])=0 und COUNT(W[wj=k])=0 Nur in diesem Fall geben Larson und Sheth eine Übersetzung an, wie auch Masunaga. Wenn wir nun die Menge I={(a,4,4,k)} in die Sicht V einfügen wollen, wird Menge I’={(a,4,4,k), (a,1,4,k), (b,2,4,k), (a,2,4,k), (a,4,2,m), (a,4,3,n)} eingefügt. Die vier ergänzten Tupel erreichen die Sicht V durch die Selektionsbedingung nicht. Die Übersetzung ist dann das Einfügen von (a,4) in U und (4,k) in W. b) COUNT(U[ui=k])>0 und COUNT(W[wj=k])=0 Sei das Tupel (b,4) schon in U enthalten, dann sind die Tupel {(b,4,2,m), (b,4,3,n)} in P enthalten. Wir wollen jetzt die Menge I={(k,4,4,h)} in V einfügen. Die Kreuzreferenzbedingung ist nicht erfüllt, weil in der Produktsicht das Tupel (b,4,4,h) nicht enthalten ist und die Menge I’ darf es nicht enthalten, weil die Bedingung I’ ∪ V = I ∪ V sonst verletzt wäre. Deshalb gibt auch Masunaga keine Übersetzung für diesen Fall an. 62 c) COUNT(U[ui=k])=0 und COUNT(W[wj=k])>0 Wir wollen jetzt die Menge I={(f,3,3,h)} in V einfügen. Die Kreuzreferenzbedingung ist nicht erfüllt, weil in der Produktsicht das Tupel (f,3,3,n) nicht enthalten ist und die Menge I’ darf es nicht enthalten, weil die Bedingung I’ ∪ V = I ∪ V sonst verletzt wäre. Deshalb gibt auch Masunaga keine Übersetzung für diesen Fall an. d) COUNT(U[ui=k])>0 und COUNT(W[wj=k])>0 Sei das Tupel (1,f) schon in W enthalten, dann sind die Tupel {(a,1,1,f), (b,2,1,f), (a,2,1,f)} in P enthalten und das Tupel (a,1,1,f) schon in der Sicht V enthalten. Wir wollen jetzt die Menge I={(h,1,1,k)} in V einfügen. Die Kreuzreferenzbedingung ist nicht erfüllt, weil in der Produktsicht die Tupel (a,1,1,k) und (h,1,1,f) nicht enthalten sind und die Menge I’ darf sie nicht enthalten, weil die Bedingung I’ ∪ V = I ∪ V sonst verletzt wäre. Deshalb gibt auch Masunaga keine Übersetzung für diesen Fall an. Wir wollen nun die Ergebnisse zur besseren Übersicht noch einmal in Form einer Tabelle präsentieren: 63 u∈ ∈U∧ ∧w∈ ∈W COUNT(U[ui=k])=1 COUNT(W[wj=k])=0 × COUNT(U[ui=k])=1 COUNT(W[wj=k])>1 u∈ ∈U∧ ∧w∉ ∉W L/S & M: ins(W,{w}) u∉ ∉U∧ ∧w∈ ∈W u∉ ∉U∧ ∧w∉ ∉W × − − − L/S: keine ° Übersetzung M: ins(W,{w}) COUNT(U[ui=k])>1 COUNT(W[wj=k])=0 COUNT(U[ui=k])>1 COUNT(W[wj=k])>1 COUNT(U[ui=k])=0 COUNT(W[wj=k])=1 COUNT(U[ui=k])=0 COUNT(W[wj=k])>1 × − × − ° − − − × × L/S & M: ins(U,{u}) − × × − L/S: keine COUNT(U[ui=k])>1 COUNT(W[wj=k])=1 − ° − Übersetzung − M: ins(U,{u}) COUNT(U[ui=k])=1 COUNT(W[wj=k])=1 COUNT(U[ui=k])=0 COUNT(W[wj=k])=0 ° × L/S: keine L/S: keine Übersetzung Übersetzung M: ins(W,{w}) M: ins(U,{u}) × × − L/S & M: ins(U,{u}) und ins(W,{w}) − Beide erlauben keine Übersetzung × kein möglicher Fall ° Tupel ist schon in der Sicht 64 Kommen wir nun zum Löschen. Im Folgenden sei v das aus V zu löschende Tupel und ui bzw. wj die Joinattribute in V. Bei Masunaga sei D={v} die zu löschende Menge. Dann sind die Tupel u und w die Projektionen von v auf die Attributmengen von U bzw. W. Daraus folgt das D1={u} und D2={w} ist. Larson und Sheth überprüfen, wie viele ui bzw. wj es in den jeweiligen Spalten gibt und vergeben nach diesem Kriterium Übersetzungsregeln. Masunaga erlaubt nach dem Kriterium D’ − V = D − V die Vergrößerung von D, so dass die Kreuzreferenzbedingung erfüllt werden kann, sonst gibt er keine Übersetzung an. Beide Ansätze behandeln nur den Fall, dass das zu löschende Tupel auch in der Sicht enthalten ist. Es gibt in diesem Fall aber vier Situationen: 1. COUNT(U[ui=k])=1 und COUNT(W[wj=k])=1 In diesem Fall entsteht ein Mehrdeutigkeitsproblem, das Larson und Sheth SAP-JOIN und Masunaga SAP4 nennen. Man kann nun das Tupel u aus U, oder das Tupel w aus W löschen, oder beide. In allen drei Fällen erreicht man denselben Effekt in der Sicht. Sei das Tupel (1,f) schon in W enthalten, dann sind die Tupel {(a,1,1,f), (b,2,1,f), (a,2,1,f)} in P enthalten und das Tupel (a,1,1,f) schon in der Sicht V enthalten. Wir wollen jetzt die Menge D={(a,1,1,f)} in V löschen. Dann kann man (a,1) aus U löschen, (1,f) aus W, oder beide aus U und W. 2. COUNT(U[ui=k])=1 und COUNT(W[wj=k])>1 Seien die Tupel (1,f) und (1,h) schon in W enthalten, dann sind die Tupel {(a,1,1,f), (b,2,1,f), (a,2,1,f), (a,1,1,h), (b,2,1,h), (a,2,1,h)} in P enthalten und die Tupel (a,1,1,h) und (a,1,1,f) schon in der Sicht V enthalten. Wir wollen jetzt die Menge D={(a,1,1,h)} in V löschen. Dann geben Larson und Sheth eine Übersetzung an: das Löschen von (1,h) aus W. Bei Masunaga muss {(a,1,1,h)} ∪ {(b,2,1,h), (a,2,1,h)} gelöscht werden. Dann ist die Übersetzung „Lösche aus (1,h) von W“. 3. COUNT(U[ui=k])>1 und COUNT(W[wj=k])=1 Dieser Fall ist symmetrisch zu Fall 2. 4. COUNT(U[ui=k])>1 und COUNT(W[wj=k])>1 Sei (2,n) ein Tupel aus U. Dann sind (a,1,2,n), (b,2,2,n) und (a,2,2,n) Elemente von P und die beiden Tupel (b,2,2,n), (a,2,2,n) erscheinen schon in der Sicht. Wir wollen jetzt das Tupel (a,2,2,n) löschen. Larson und Sheth erlauben dies nicht. Bei Masunaga muss entweder das Tupel (b,2,2,n), oder das Tupel (a,2,2,m) mitgelöscht werden, um 65 die Kreuzreferenzbedingung zu erfüllen. Das widerspricht der Regel D’ − V = D − V. Deshalb gibt es keine Übersetzung. Wir können hier feststellen, dass beide Ansätze unter denselben Bedingungen dieselben Resultate liefern: entweder geben beide eine Übersetzung an, oder keiner von beiden. 66 6 Zusammenfassung In der vorliegenden Arbeit wurden der Masunagas Ansatz und die Arbeit von Larson und Sheth zur Lösung des Sichtenänderungsproblems analysiert und verglichen. Offensichtlich hatten beide Ansätze dasselbe Ziel verfolgt. Allerdings hat jede von den beiden Ansätzen seine eigene Methodik, die trotz ihrer weit entfernten Arten keine Unterschiede in den Leistungen der Ansätze verursacht. Während Masunaga die Prädikatenlogik zur Formulierung der Übersetzungsregeln eingesetzt hat, haben Larson und Sheth das syntaktische Wissen zum Suchen und Formulieren der Regeln verwendet. Bei der Suche nach einer Übersetzung hat Masunaga die Seiteneffekten nicht erlaubt, ebenfalls ist dieser Vorgang auch bei Larson und Sheth zu sehen. Dazu haben sie noch die Schlüsseleigenschaften von der Integritätsbedingung verwendet, um eine erlaubte Übersetzung zu finden. Obwohl jeder Ansatz seine eigene Methodik und Voraussetzungen hatte, haben beide fast dasselbe Resultat erreicht, was man vor dem Vergleich nicht ahnen könnte. es wird wieder die relevanten Unterschiede zusammengefasst: • Larson und Sheth erlauben in ihrem Ansatz die Bearbeitung jeweils von einem Tupel. Masunaga beschränkt nicht die Anzahl der Tupeln, so dass eine Menge von Tupeln zur Bearbeitung steht. Wir haben allerdings gesehen, dass die Erlaubnis für eine Menge von Tupeln Probleme bei der Selektion erzeugt hat. Ferner hat die Verwendung von einem Tupel das Löschen von der Projektion beschränkt. • Bei der Joinsichten beschränken sich Larson und Sheth auf die Joinbedingung A.F = B.F. Masunaga beschränkt nicht die Bedingung der Selektion in seiner Joinsicht. Dadurch ergeben sich viele mögliche Joinarten, die von Larson und Sheth nicht berücksichtigt sind. • Larson und Sheth erlauben nicht das Einfügen in die Joinsicht, wenn die Projektion des Tupels auf die Attributmenge der Operandenmenge U in U enthalten, aber die Projektion auf die Attributmenge von W nicht in W. Der Joinattributwert der Projektion 67 auf W ist jedoch mehr als einmal in der Jointspalte enthalten. Eine Übersetzung ist möglich und verletzt die vorhandenen Schlüsseleigenschaften nicht. Dies erlaubt Masunaga, obwohl er die Schlüsseleigenschaften nicht berücksichtigt. • Larson und Sheth erlauben bei der Selektion das Modifizieren des Tupels, so dass es die Selektionsbedingung erfüllt oder nicht mehr erfüllt, damit das Tupel eingefügt bzw. gelöscht werden. so eine Modifizierung betrachte ich als Bearbeitung des Änderungswunsches, so dass der Änderungswunsch abgelehnt wurde und einen neuen vorgeschlagen wurde. • Masunaga schlägt für die Lösung des Mehrdeutigkeitproblems nur das Menschenwissen vor. Larson und Sheth verwenden dazu die Integritätsbedingungen auch. Eine komplette Lösung erreichen die beiden Ansätze allerdings nicht. Wir müssen allerdings feststellen, dass es auf das immer noch geforscht wird. Das Sichtenänderungsproblem ohne das Menschenwissen zu lösen, betrachte ich momentan als unmöglich. Viele Übersetzungen sind möglich nur, wenn man dazu weitere Effekten toleriert. Dazu reicht oft das im System gespeicherte syntaktische und semantische Wissen. 68 Literaturverzeichnis [KE01] A. Kemper, A. Eickler. Datenbanksysteme. Oldenbourg Verlag München, Wien, 4. Auflage, 2001. [Man03] Rainer Manthey. Vorlesung „Informationssysteme“. Rheinische FriedrichWilhelms-Universität Bonn, Wintersemester 2003/2004. [Man04] Rainer Manthey. Vorlesung „Deduktive Datenbanken“. Rheinische FriedrichWilhelms-Universität Bonn, Sommersemester 2004. [Mas84] Y. Masunaga. A Relational Database View Update Translation Mechanism. Proc. VLDB 1984, pages 309-320. [LS91] James A. Larson, Amit P. Sheth. Updating Relational Views Using Knowledge at View Definition and View Update Time. Information Systems Vol. 16, No. 2, pp 145-168, 1991. [LS88] James A. Larson, Amit P. Sheth. TAILOR, A Tool for Updating Views. Computer Science; Vol. 303; pp 190 - 213, 1988 69 Erklärung Hiermit erkläre ich, dass ich die vorstehende Arbeit selbständig verfasst und keine anderen als die angegebene Quellen und Hilfsmittel benutzt sowie Zitate kenntlich gemacht habe Bonn, den 21 November 07 Samer Obeid 70