ELEMENT view (description?, grant*, field+, select*)> ATTRIBUTE name string readonly bool tables string where string orderby string sorting string checkoption string title string
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 |
|
checkoption | string | - | none |
|
title | string | - | n/a | Title ist ein Beschriftungstext, der in der Nutzeroberfläche angezeigt werden sollte wenn das Objekt anzeigt wird. |
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.
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 (#PCDATA) ATTRIBUTE dbms string
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. |
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 EMPTY ATTRIBUTE table string column string alias string
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 |
Eine Spaltenreferenz, welche den Namen einer Spalte im View (siehe Attribut "alias") dem Namen der physischen Tabelle und Spalte zuordnet, auf welcher diese basiert.
Thomas Meyer, www.yanaframework.net