Der Begriff der änderbaren Join-View-Tabelle spielt eine wichtige Rolle. Daher soll an dieser Stelle neben der bereits bekannten allgemeinen Definition einer änderbaren Join-View-Tabelle eventuell notwendiges Detailwissen dargestellt werden.
Siehe auch:
CREATE VIEW-Anweisung (create_view_statement)
Es wird ohne Beschränkung der Allgemeinheit davon ausgegangen, dass die Definition der Join-View-Tabelle V in der FROM-Klausel die Basistabellen T1,...,Tn (n>1) enthält.
●
Seien Ti und Tj zwei von V selektierte
Basistabellen.
Rij sei eine referentielle
CONSTRAINT-Definition von Ti und Tj, in der Ti die referenzierende Tabelle
und Tj die referenzierte Tabelle (referenced_table)
ist.
PKj1,...,PKjm seien die Schlüsselspalten von Tj.
FKi1,...,FKim seien die korrespondierenden Fremdschlüsselspalten von Ti.
Die referentielle CONSTRAINT-Definition ist für V relevant, wenn das JOIN-Prädikat
(PKj1=FKi1 AND ... AND PKjm=FKjm) Teil der Suchbedingung von
V ist.
●
Seien Ti und Tj zwei von V selektierte
Basistabellen und Rij eine für V relevante referentielle CONSTRAINT-Definition
von Ti und Tj.
Ti ist Vorgänger von Tj (Ti<Tj),
wenn Rij die einzige für V relevante referentielle CONSTRAINT-Definition von
Ti und Tj ist.
●
Sei Rij eine für V relevante
referentielle CONSTRAINT-Definition.
Rij definiert eine 1:1 Beziehung
zwischen Ti und Tj, wenn die Fremdschlüsselspalten von Rij die
Schlüsselspalten von Ti bilden.
●
Sei Rij eine für V relevante
referentielle CONSTRAINT-Definition und s eine Schlüsselspalte von Tj oder
eine Fremdschlüsselspalte dieser referentiellen CONSTRAINT-Definition von Ti.
Die Spalte s lässt sich aus V
ableiten, wenn genau eine der folgenden Bedingungen zutrifft:
- s ist eine selektierte Spalte
von V.
- Es existiert eine Schlüsselspalte oder eine Fremdschlüsselspalte s' einer
für V relevanten referentiellen CONSTRAINT-Definition, die sich aus V ableiten
lässt, und das JOIN-Prädikat s=s' ist Teil der Suchbedingung von V.
●
Eine Spalte v von V korrespondiert mit einer Spalte s einer
zugrundeliegenden Basistabelle T, wenn eine der folgenden Bedingungen erfüllt
ist
- v ist i-te Spalte von V und s ist i-te selektierte Spalte von V
- v korrespondiert mit einer Schlüsselspalte PK von Tj einer für V relevanten
referentiellen CONSTRAINT-Definition Rij und s ist die PK zugeordnete
Fremdschlüsselspalte von Ti
- v korrespondiert mit einer Fremdschlüsselspalte FK von Ti einer für V
relevanten referentiellen CONSTRAINT-Bedingung Rij und s ist die FK
zugeordnete Schlüsselspalte von Tj.
Eine Join-View-Tabelle V ist änderbar, wenn die folgenden Bedingungen erfüllt sind:
● Jede Basistabelle Ti (1 <= i <= n) besitzt einen vom Benutzer definierten Schlüssel.
● Das Datenbanksystem muss in der Lage sein, eine Abarbeitungsreihenfolge der zugrundeliegenden Basistabellen zu bestimmen, d.h., es muss eine Anordnung Ti1,...,Tin der Tabellen T1,...,Tn existieren, so dass aus Tij<Tik folgt, dass j < k ist. Die Spalten von V, aus denen sich die Schlüsselspalten von Ti1 ableiten lassen, bilden den Schlüssel von V. Ti1 heißt Schlüsseltabelle von V. Die Anordnung der Tabellen muss nicht eindeutig sein.
●
Ausgehend von einer Zeile der
Schlüsseltabelle von V, muss es möglich sein, genau eine Zeile jeder
zugrundeliegenden Basistabelle zuzuordnen, d.h. für jede Tabelle Tij (1 <=
j <= n) gibt es eine Folge von Tabellen Ti1,...,Tij, so dass Ti1 < ..
< Tij gilt.
Diese Folge ist für jede von V referenzierte Basistabelle
eindeutig.
● Die Schlüsselspalten und Fremdschlüsselspalten aller für V relevanten referentiellen CONSTRAINT-Definitionen müssen aus den Spalten von V ableitbar sein.
● Die für die Erkennung der Relevanz einer referentiellen CONSTRAINT-Definition wichtigen JOIN-Prädikate müssen in Teilen der Suchbedingung liegen, die mit WITH CHECK OPTION definiert sind. Wenn die View-Definition nur Basistabellen enthält, so heißt das, dass die View-Tabelle mit WITH CHECK OPTION definiert sein muss. Ist eine View-Tabelle V aus einer View-Tabelle V' abgeleitet und wurde V' mit WITH CHECK OPTION definiert, so erbt V die CHECK OPTION für den Teil der Qualifikation, der durch V' vererbt wird.