     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)
