>> Inhaltsverzeichnis >> Artikel

Views

Grundsätzlich werden über "Views" Select-Abfragen abgebildet. Daher können diese mehrere Tabellen einbeziehen, Daten aggregieren oder Informationen ausblenden. Für den Nutzer können sie sich wie echte Tabellen verhalten. Views werden weitgehend für Formulare und Benutzerschnittstellen verwendet.
Jedoch sollten Sie beachten, dass es einige Beschränkungen gibt. Wenn Sie Daten in einem View ändern wollen, muss der View aktualisierbar (updatable) sein. Die Unterstützung dieses Features hängt vom gewählten DBMS ab. Manche Hersteller beschränken dies auf bestimmte (sehr einfache) Szenarien. Einfacher gesagt, ein "updatable View" muss den Primärschlüssel und die Quelltabelle für alle Spalten des Views wissen. Die Where-Klausel der Abfrage spezifiziert eine Art Constraint eines Views und kann fordern, dass jede aktualisierte oder eingefügte Spalte diesem Constraint entspricht und somit wieder im View enthalten ist.

Element View

  ELEMENT view (description?, grant*, field+, select*)>
  ATTRIBUTE
       name        string
       readonly    bool
       tables      string
       where       string
       orderby     string
       sorting     string
       checkoption string
       title       string
  
Attribute
Attribut Typ Pflicht Default Beschreibung
name string yes n/a Ein eindeutiger Name welcher diesen View identifiziert. Sollte kleingeschrieben und ein valider XML-, SQL-Bezeichner sein.
readonly boole - no Sie können den View auf schreibgeschützt setzen, um zu verhindern dass Änderungen vorgenommen werden. Ein View, welcher schreibgeschützt ist, kann nicht aktualisiert werden (ist nicht updatable).
tables nmtokens - n/a Eine durch Kommata getrennte Liste von Tabellen, welche im aktuellen View verwendet werden. Wenn die Liste mehr als eine Tabelle enthält, so ist die erste die Basistabelle, und alle weiteren Tabellen werden mit dieser über einen Join verknüpft.
Vergessen Sie nicht eine Where-Klausel für die verknüpften Tabellen zu definieren.
where string - n/a Das ist eine generische Information. Sie setzt die Where-Klausel des Views.
orderby string - n/a Eine durch Kommata getrennte Liste von Spalten, nach denen die Ausgabe sortiert wird. Standardmäßig wird nach dem Primärschlüssel der Tabelle sortiert.
sorting string - ascending
ascending
Sortierung erfolgt in aufsteigender Reihenfolge
descending
Sortierung erfolgt in absteigender Reihenfolge
checkoption string - none
none
keine Prüfung
cascaded
rekursive Prüfung
local
nur lokale Prüfung
title string - n/a Title ist ein Beschriftungstext, der in der Nutzeroberfläche angezeigt werden sollte wenn das Objekt anzeigt wird.
Beschreibung

Das "View"-Element definiert den Namen, die Dokumentation und allgemeine Eigenschaften eines Datenbank-Views. Dies sind seine Basistabellen, Where-Klausel und andere Informationen, welche es einer Anwendung erlauben sollen, die Elemente des Views einer echten Tabelle zuzuordnen. Dies sollte es einer Implementierung ermöglichen, einfache und updatable Views für solche DBMS zu simulieren, welche dieses Feature nicht unterstützen. Eine Implementierung kann die Simulation von Views mit Hilfe der generischen Informationen unterstützen. Die Implementierung kann einen Fehler melden, falls es ihr nicht möglich ist einen View zu simulieren und das DBMS das geforderte Feature nicht unterstützt.

Implementierung

Die Implementierung muss einen View als "updatable" (aktualisierbar) betrachten, sofern das Attribut "readonly" nicht auf "yes" gesetzt ist. Sie kann jedoch entscheiden, dass ein View keine Änderungen erlaubt, wenn ein erforderlicher Primärschlüssel fehlt. Wo dies möglich ist kann die Implementierung automatisch einen Primärschlüssel zur generischen Abfrage hinzunehmen, um den View updatable zu machen. Für DBMS, welche updatable Views nicht unterstützen, kann die Implementierung diese simulieren, indem sie Insert- oder Update-Anweisungen basierend auf den gegebenen generischen Informationen selbst erzeugt. Die Implementierung kann einen Fehler melden, wenn der Nutzer versucht einen View für ein betroffenes DBMS zu ändern und sie nicht in der Lage ist, das gewünschte Verhalten zu simulieren.

Das Attribut "where" definiert die Where-Klausel des Views. Diese Information muss bei der Simulation des Views beachtet werden. Eine Implementierung kann die korrekte Syntax für dieses Element selbst definieren. Beachten Sie! Folgende Schreibweise wird nicht empfohlen "time < now()" weil die Funktion "now()" zwischen verschiedenen DBMS nicht kompatibel ist. Sie können jedoch zusätzlich abweichende SQL-Abfragen für ein bestimmtes Ziel-DBMS Ihrer Wahl definieren. Die vom Yana Framework unterstützte Syntax für generische Where-Klauseln ist: {[column]=[value]{ AND [column]=[value]}*}.

Das Attribut "checkoption" steuert die Auswertung der Where-Klausel. Der Unterschied zwischen 'local' und 'cascaded' betrifft nur Situationen, in denen ein View rekursiv auf einem anderen View aufgebaut wird und der Elternview selbst einen Constraint (Check-Option) definiert. In diesem Fall hindert die Einstellung 'local' den DBS daran, die Check-Option(en) des Elternviews rekursiv zu prüfen. Beachten Sie, dass diese Einstellung nicht von allen DBMS unterstützt wird.
Z.Bsp. wird von MySQL und PostgreSQL dieses Feature unterstützt , während MSSQL keine Unterstützung bietet.

Element Select

  ELEMENT select (#PCDATA)
  ATTRIBUTE
       dbms     string
  
Attribute
Attribut Typ Pflicht Default Beschreibung
dbms string - generic Der Name des Ziel-DBMS. Der Wert "generic" bedeutet, dass die Definition für jedes DBMS zutreffend ist. Gewöhnlich wird das als Rückfalloption für DBMS verwendet, an welche Sie entweder beim Erstellen der Datenbankstruktur noch nicht gedacht haben, oder welche das fragliche Feature nicht unterstützen.
Beschreibung

Das "select" Element ist eine DBMS-abhängige SQL-Anweisung. Diese muss den definierten Namen der Basistabellen, Spalten und anderen View-Eigenschaften entsprechen. Für einfache Views kann die generische Information bereits ausreichend sein, so dass keine zusätzlichen Select-Elemente angegeben werden müssen. Daher sollte das Select-Element falls möglich vermieden werden.

Element Field

  ELEMENT field EMPTY
  ATTRIBUTE
       table        string
       column       string
       alias        string
  
Attribute
Attribut Typ Pflicht Default Beschreibung
table string - n/a Name der Basistabelle
column string - n/a Name der Basisspalte
alias string - n/a optionaler Alias
Beschreibung

Eine Spaltenreferenz, welche den Namen einer Spalte im View (siehe Attribut "alias") dem Namen der physischen Tabelle und Spalte zuordnet, auf welcher diese basiert.

Autor: Thomas Meyer, www.yanaframework.net