die Arbeit - IDB - Universität Bonn

Werbung
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
Herunterladen