Views
Gut entworfene Anwendungen stellen in der Regel eine offene Schnittstelle bereit und verbergen die Implementierungsdetails, sodass Änderungen am Design vorgenommen werden können, ohne die Endnutzer zu beeinträchtigen.
Beim Entwurf deiner Datenbank kannst du ein ähnliches Ergebnis erzielen, indem du die Tabellen abschirmst und den Zugriff auf die Daten nur über eine Reihe von Views erlaubst.
In diesem Artikel schauen wir uns an, was Views sind, wie sie erstellt werden und wofür sie nützlich sein können.
Was ist eine View
Eine View ist ein Datenbankobjekt, das das Ergebnis einer per SELECT definierten Abfrage zum Zeitpunkt des Zugriffs auf die View darstellt.
Views werden manchmal als „virtuelle Tabellen“ bezeichnet. Das liegt daran, dass eine View für den Nutzer wie eine Tabelle aussieht, tatsächlich aber keine Daten speichert, sondern sie zum Zeitpunkt des Zugriffs aus anderen Tabellen holt.
Ändern sich die Daten in der zugrundeliegenden Tabelle, bekommt der Nutzer beim Zugriff auf die View, die diese Tabelle verwendet, die aktuellen Daten. Views cachen die Ergebnisse der Tabellenabfrage während ihrer Arbeit nicht.
Beispiel für das Erstellen einer View
Als einfaches Beispiel: Nehmen wir an, du möchtest die E-Mail-Adressen in der Nutzertabelle (Users) teilweise verbergen.
Das kann zum Beispiel nützlich sein, wenn die Richtlinien deines Unternehmens es nicht allen erlauben, vertrauliche Informationen über Nutzer zu verwenden. Anstatt also direkten Zugriff auf die Tabelle Users zu erlauben, definierst du eine View mit dem Namen ViewUsers und verlangst, dass alle sie für den Zugriff auf die Nutzerdaten verwenden.
Hier ist ein Beispiel für die Definition dieser View:
MySQL 8.1CREATE VIEW ViewUsers AS SELECT id, name, CONCAT(SUBSTR(email, 1, 2), '****', SUBSTR(email, -4)) AS email FROM Users;
Hier ist ein Beispiel für die Definition dieser View:
MySQL 8.1CREATE VIEW ViewUsers AS SELECT id, name, CONCAT(SUBSTR(email, 1, 2), '****', RIGHT(email, 4)) AS email FROM Users;
Eine View sieht in einer SQL-Abfrage aus wie eine normale Tabelle und wird auch so verwendet:
MySQL 8.1SELECT * FROM ViewUsers;
Wenn du wissen willst, welche Spalten in der View verfügbar sind, kannst du den Befehl DESCRIBE nutzen:
MySQL 8.1DESCRIBE ViewUsers;
Wenn du wissen willst, welche Spalten in der View verfügbar sind, kannst du eine Abfrage auf information_schema ausführen:
MySQL 8.1SELECT column_name, data_type, is_nullable FROM information_schema.columns WHERE table_name = 'viewusers';
Allgemeine Syntax einer View
MySQL 8.1CREATE [OR REPLACE] VIEW view_name [(view_spalten_namen)] AS select_ausdruck
OR REPLACE — wird dieser optionale Parameter verwendet und existiert bereits eine View mit diesem Namen, wird die alte View gelöscht und eine neue erstellt. Andernfalls tritt beim Versuch, eine View mit einem bereits existierenden Namen anzulegen, ein Fehler auf.
MySQL 8.1CREATE [OR REPLACE] VIEW view_name [(view_spalten_namen)] AS select_ausdruck
OR REPLACE — wird dieser optionale Parameter verwendet und existiert bereits eine View mit diesem Namen, wird die alte View gelöscht und eine neue erstellt. Andernfalls tritt beim Versuch, eine View mit einem bereits existierenden Namen anzulegen, ein Fehler auf.
Wofür Views nützlich sind
Vereinfachung komplexer Abfragen
Views werden eingesetzt, um komplexe Abfragen zu vereinfachen und eine Abstraktion zwischen Nutzer und Datenbank zu schaffen. Sie können die Komplexität der Datenstruktur verbergen und eine vereinfachte Schnittstelle für den Datenzugriff bereitstellen.
Verbesserung der Performance
Das Erstellen von Views, die komplexe Abfragen kapseln, kann dabei helfen, die Ausführung dieser Abfragen zu optimieren. Das kann zu einer schnelleren Ausführung der Abfragen und einer Verbesserung der Gesamt-Performance der Datenbank führen.
Das Erstellen von Views, die komplexe Abfragen kapseln, kann dabei helfen, die Ausführung dieser Abfragen zu optimieren. PostgreSQL unterstützt materialisierte Views (MATERIALIZED VIEW), die die Ergebnisse einer Abfrage physisch speichern und regelmäßig aktualisiert werden, was die Performance bei komplexen Abfragen erheblich verbessern kann.
Sicherstellung der Sicherheit
Views können verwendet werden, um die Sicherheit vertraulicher Daten zu gewährleisten. Indem man Views erstellt, die den Zugriff auf bestimmte Spalten oder Zeilen einschränken, können Administratoren den Zugriff auf sensible Informationen begrenzen. Das hilft sicherzustellen, dass nur autorisierte Nutzer Zugriff auf vertrauliche Daten haben.
Fazit
Views sind ein wichtiges Werkzeug in SQL, mit dem sich komplexe Abfragen vereinfachen, der Datenzugriff standardisieren, die Performance verbessern und die Datensicherheit gewährleisten lassen.
Lass uns prüfen, wie gut du das Thema verstanden hast: Wähle die richtige Aussage zur Frage „Was ist eine View in der Datenbank?“