10. SQL Views
Views - Virtuelle Tabellen in SQL
Abschnitt betitelt „Views - Virtuelle Tabellen in SQL“Tabellen in relationalen Datenbanken besitzen eine physische Existenz auf einem Speichermedium: Sie sind strukturierte Ansammlungen von Datensätzen. In vielen Anwendungssituationen werden jedoch lediglich ausgewählte Datensätze oder einzelne Attribute einer Tabelle beziehungsweise mehrerer verknüpfter Tabellen benötigt. Dafür eignen sich Abfragen, die genau die relevanten Daten liefern. Da identische Abfragen häufig wiederverwendet werden, empfiehlt sich die Verwendung vordefinierter Abfragen, sogenannter Sichten (Views).
Begriff und zentrale Eigenschaften
Abschnitt betitelt „Begriff und zentrale Eigenschaften“- Definition: Eine Sicht ist eine unter einem Namen gespeicherte
SELECT-Anweisung. Das ist in etwa vergleichbar mit einer Funktion in Programmiersprachen, die einen Wert zurückgibt oder einem Bookmark in einem Webbrowser. - Speicherbedarf: Abgesehen von der Definition beansprucht eine Sicht keinen zusätzlichen Speicher für Daten; sie referenziert die zugrunde liegenden Tabellen. D.h. es wird die Abfrage gespeichert, nicht das Ergebnis. Beim Zugriff auf die Sicht wird die Abfrage ausgeführt und die aktuelle Ergebnismenge zurückgegeben.
- Aktualität: Die Ergebnismenge einer Sicht bildet stets den aktuellen Zustand der Basistabellen ab.
- Benutzersicht: Sichten entsprechen der externen Ebene des Drei-Ebenen-Modells und bilden damit eine aufgabenspezifische Sicht auf die Daten ab. Grundsätzlich kann eine Applikation nicht unterscheiden, ob sie mit einer Sicht oder einer Tabelle arbeitet.
Nutzen in Modellierung und Betrieb
Abschnitt betitelt „Nutzen in Modellierung und Betrieb“- Vereinfachung von Joins: Verknüpfte Tabellen können über eine Sicht wie eine einzige logische Tabelle behandelt werden. Dadurch werden komplexe
JOIN-Konstrukte gekapselt und wiederverwendbar. Man muss nicht wiederholt dieselben Verknüpfungen in Abfragen formulieren. - Reduktion der Komplexität: Fachlogik, Filter und Berechnungen werden zentral in der Sicht definiert und konsistent genutzt, z.B. “letzten 24 Stunden”-Views für Berichte oder Dashboards.
- Sicherheitsaspekt: Sichten ermöglichen eine feinere Zugriffskontrolle. Der Zugriff kann auf ausgewählte Spalten und Zeilen beschränkt werden, ohne die Struktur der Basistabellen zu verändern.
- Stabilität von Schnittstellen: Anwendungen können gegen Sichten entwickelt werden. Änderungen an Basistabellen lassen sich hinter der Sicht kapseln, wodurch Schnittstellen stabiler bleiben. Datenbanken können so weiterentwickelt werden, ohne dass bestehende Anwendungen angepasst werden müssen. Anwendungen greifen auf die Sicht zu, die weiterhin dieselbe Struktur und Semantik bietet, auch wenn sich die zugrunde liegenden Tabellen geändert haben.
Beispiel
Abschnitt betitelt „Beispiel“-- Sicht, die nur aktive Kundendaten bereitstellt und sensible Spalten ausblendetCREATE VIEW aktive_kunden ASSELECT k.id, k.name, k.emailFROM kunden AS kWHERE k.aktiv = TRUE;
-- Nutzung der Sicht wie einer Tabelle:SELECT * FROM aktive_kunden;
-- Aktualisierung über die Sicht:UPDATE aktive_kundenWHERE id = 42;Verwendung im SQL-Alltag
Abschnitt betitelt „Verwendung im SQL-Alltag“- Abfragen: Sichten werden in
SELECT-Anweisungen wie Tabellen verwendet. - Änderungen über Sichten: Je nach Datenbanksystem und Definition sind aktualisierbare Sichten möglich. In diesen Fällen können
INSERT,UPDATEoderDELETEüber die Sicht ausgeführt werden, wobei die Änderungen an die Basistabellen weitergereicht werden. Beschränkungen (z. B. keine Aggregationen, keineDISTINCT-Klausel) sind systemspezifisch. - Ausblendung von Attributen: In einer Sicht nicht aufgenommene Spalten stehen bei der weiteren Verwendung der Sicht nicht zur Verfügung; die Basistabellen bleiben unverändert.
- Portabilität: Nicht alle Datenbanksysteme unterstützen den vollen Funktionsumfang von Sichten.
DML Operationen auf Sichten
Abschnitt betitelt „DML Operationen auf Sichten“Wann kann auf Sichten eine DML Operation (INSERT, UPDATE, DELETE) durchgeführt werden?
- Einfache Sichten: Wenn die Sicht auf einer einzelnen Tabelle basiert und keine Aggregationen,
DISTINCT,GROUP BY,HAVING,UNIONoder Joins enthält, sind DML-Operationen in der Regel möglich. - Mehrtabellen-Sichten: Bei Sichten, die auf mehreren Tabellen basieren (Joins) oder Subqueries beinhalten, sind DML-Operationen oft eingeschränkt oder nicht erlaubt, da unklar ist, wie die Änderungen auf die zugrunde liegenden Tabellen verteilt werden sollen.
- Eingeschränkte Sichten: Wenn die Sicht Filterbedingungen enthält (z.B.
WHERE-Klauseln), können DML-Operationen nur auf die Zeilen angewendet werden, die diese Bedingungen erfüllen: z.B. eine Sicht, die nur aktive Kunden zeigt, erlaubt keine Updates oder Deletes auf inaktive Kunden. Das kann mit derWITH CHECK OPTION-Klausel erzwungen werden. - Systemabhängigkeit: Die genauen Regeln für DML-Operationen auf Sichten variieren zwischen verschiedenen Datenbanksystemen. Es ist wichtig, die Dokumentation des jeweiligen Systems zu konsultieren.
Hinweise zur Gestaltung von Sichten
Abschnitt betitelt „Hinweise zur Gestaltung von Sichten“- Benennung und Zweck: Sichten sollten klar benannt und auf eine fachliche Aufgabe zugeschnitten sein.
- Leistung: Während die Definition wenig Speicher benötigt, hängt die Ausführungszeit von der zugrunde liegenden Abfrage ab (z. B. Anzahl der Joins, Filter, Indizes).
- Sicherheitsregeln: In Kombination mit Berechtigungssystemen lassen sich Least-Privilege-Strategien umsetzen, indem nur die jeweilige Sicht freigegeben wird, z.B. die Basistabelle “mitarbeiter” bleibt geschützt, während die Sicht “öffentliche_mitarbeiter” nur nicht-sensible Daten bereitstellt.
Zusammenfassung: Sichten sind gespeicherte Abfragen, die aktuelle Daten aus Basistabellen bereitstellen, die Arbeit mit verknüpften Tabellen vereinfachen, Schnittstellen stabilisieren und den Zugriff auf relevante Teilmengen der Daten präzise steuern.
Lernergebnisse: Was Sie nach diesem Kapitel können sollten
Abschnitt betitelt „Lernergebnisse: Was Sie nach diesem Kapitel können sollten“Nach Abschluss dieses Kapitels sollten Schülerinnen und Schüler in der Lage sein:
- Definieren: den Begriff Sicht (View) als virtuelle Tabelle definieren.
- Beschreiben: den Nutzen von Views für Modellierung, Sicherheit und Wiederverwendung beschreiben.
- Anwenden: Views mit
CREATE VIEWerstellen und in Abfragen verwenden. - Erklären: erklären, unter welchen Bedingungen DML-Operationen auf Sichten möglich sind.
- Beurteilen: beurteilen, wann der Einsatz einer View sinnvoll ist und wie sie gut gestaltet wird.