Logo Wissenstransfer Gerhard at CichnaDotCom

>> Wissensdatenbank / Datenmodellierung und Datenbanksysteme

Komplexe Datenbankabfragen auf mehrere Tabellen

Datensichten mit CREATE VIEW

Insbesondere um komplexe aber dennoch häufig benötigte Datenbankanfragen nicht jedes Mal neu als SQL-Statement formulieren zu müssen, gibt es in relationalen Datenbanken die Möglichkeit sogenannte Views (deutsch: Sichten) zu erstellen. Eine andere Anwendung von Views ist die Umsetzung von Zugriffsbeschränkungen auf Daten für unterschiedliche Benutzergruppen. Dabei handelt es sich im Prinzip um gespeicherte SELECT-Statements, die unter einem bestimmten Namen in der Datenbank abgelegt werden. In einem View werden keine zusätzlichen Datensätze gespeichert. Ein View wird daher manchmal auch imaginäre Tabelle oder virtuelle Tabelle genannt. Ein erzeugter View kann in anderen SQL-Statements wie eine Tabelle der Datenbank angesprochen werden.

Beispiel
In der Datenbank ONLINESHOP soll ein View angelegt werden, der eine nach Namen sortierte Liste aller sofort verfügbaren Filme sowie deren Detailinformation enthält.

SELECT-Statement
SELECT * FROM Artikel INNER JOIN Film USING(ArtikelID)
WHERE Verfuegbarkeit = 'sofort' ORDER BY Name;

Das Anlegen einer Sicht erfolgt mit dem SQL-Statement CREATE VIEW wie in der folgenden Abbildung dargestellt. Mit Hilfe eines Präfix können bei späterer Verwendung Views von Tabellen klar unterschieden werden.
Abbildung: Beispiel für CREATE VIEW

Der oben erstellte View kann nun unter dem Namen ViewSofortVerfuegbareFilme wiederverwendet werden. Der SQL-Befehl in der folgenden Abbildung nutzt den erstellten View, um alle sofort verfügbaren Filme auszugeben, die in deutscher Sprache verfügbar sind. Der View wird dort wie eine normale Datenbanktabelle im SELECT-Statement verwendet.
Abbildung: Wiederverwendung eines Views

Views dienen in erster Linie zum Lesen von Daten. Unter folgenden Bedingungen lassen sich aber auch Änderungen am Datenbestand direkt auf dem View umsetzen:

Sind alle diese Bedingungen erfüllt, handelt es sich um einen schreibbaren View. Anderenfalls wurde ein Read Only View definiert.