55 lines
2.4 KiB
Plaintext
55 lines
2.4 KiB
Plaintext
VIEW(QL) DABA16 VIEW(QL)
|
|
|
|
NAME
|
|
view - Definieren einer Sicht (virtuellen Relation)
|
|
|
|
UEBERSICHT
|
|
define view name (target_list) [ where qual ]
|
|
|
|
BESCHREIBUNG
|
|
Die Syntax der view Anweisung ist die der retrieve into An-
|
|
weisung fast identisch. Die Daten werden jedoch physisch
|
|
abgelet. Stattdessen wird die Definition gespeichert.
|
|
Wenn die Sicht mit dem Namen name spaeter benutzt wird,
|
|
erfolgt die Konvertierung der Anfrage, um mit den in
|
|
der target_list spezifizierten Domaenen zu operieren.
|
|
|
|
|
|
Alle Formen des Wiederauffindens auf die Sicht werden voll-
|
|
staendig unterstuetzt. Nur eine begrenzte Menge von Aende-
|
|
rungen auf Sichten werden zugelassen, weil Anomalien auftre-
|
|
ten duerfen. Keine Aenderungen auf Sichten, die sich auf
|
|
mehr als eine Relation beziehen, sind moeglich. Es werden
|
|
keine Aenderungen unterstuetzt, die auf Domaenen ausgefuehrt
|
|
werden sollen, die in der Qualifikation der Anfrage enthal-
|
|
ten sind und nicht auf solche, die sich auf Domaenen der
|
|
Sicht beziehen, die nicht in einfache Attribute ueberfuehrt
|
|
werden koennen.
|
|
|
|
Allgemein gilt, dass Aenderungen dann und nur dann unter-
|
|
stuetzt werden, wenn garantiert ist (ohne Pruefung der ak-
|
|
tuellen Daten), dass das Ergebnis der Aenderung der Sicht
|
|
identisch zur Aenderung der korrespondierenden Basis-
|
|
Relationen ist.
|
|
|
|
Sichten koennen auf DBA- und private Relationen erstellt
|
|
werden. Jeder kann eine Sicht definieren. Ob sie bei der
|
|
Abarbeitung einer Anfrage benutzt wird, ist davon abhaengig,
|
|
ob die entsprechenden Befugnisse vorliegen.
|
|
|
|
Define erstellt Eintraege fuer Sichten, Befugnisse und In-
|
|
tegritaetsbedingungen nur, wenn die Anfragemodifikations-
|
|
Unterstuetzung (QRYMOD, Query Modification) eingeschaltet
|
|
wurde (Sollte sie stets!).
|
|
|
|
|
|
BEISPIEL[E]
|
|
range of p is personal
|
|
range of a is abt
|
|
define view persabt (pname = p.name, p.gehalt, aname =
|
|
a.name)
|
|
where p.leiter = a.leiter
|
|
|
|
SIEHE AUCH
|
|
retrieve(ql), destroy(ql)
|