Steuern des Datenzugriffs mit Ansichten in SQL

Datenbank Ansichten reduzieren die Komplexität der Endbenutzererfahrung und schränken den Zugriff der Benutzer auf Daten ein, die in Datenbanktabellen enthalten sind. Im Wesentlichen verwendet eine Ansicht die Ergebnisse von a Datenbankabfrage um den Inhalt einer virtuellen Datenbanktabelle dynamisch zu füllen.

Warum Ansichten verwenden?

Es gibt zwei Hauptgründe, Benutzern den Zugriff auf Daten über Ansichten zu ermöglichen, anstatt ihnen direkten Zugriff auf Datenbanktabellen zu gewähren:

  • Ansichten bieten einfache, granulare Sicherheit. Verwenden Sie eine Ansicht, um die Daten einzuschränken, die ein Benutzer in einer Tabelle sehen darf. Wenn Sie beispielsweise über eine Mitarbeitertabelle verfügen und einigen Benutzern Zugriff auf die Datensätze von Vollzeitmitarbeitern gewähren möchten, können Sie eine Ansicht erstellen, die nur diese Datensätze enthält. Dies ist viel einfacher als die Alternative (Erstellen und Verwalten einer Schattentabelle) und stellt die Integrität der Daten sicher.
  • instagram viewer
  • Ansichten vereinfachen die Benutzererfahrung. Ansichten verbergen komplexe Details Ihrer Datenbanktabellen vor Endbenutzern, die sie nicht sehen müssen. Wenn ein Benutzer den Inhalt einer Ansicht ausgibt, werden die Tabellenspalten, die nicht von der Ansicht ausgewählt wurden, nicht angezeigt und möglicherweise nicht verstanden. Dies schützt sie vor Verwirrung durch schlecht benannte Spalten, eindeutige Bezeichner und Tischschlüssel.

Erstellen einer Ansicht

Das Erstellen einer Ansicht ist ganz einfach: Erstellen Sie einfach eine Abfrage, die die Einschränkungen enthält, die Sie erzwingen möchten, und fügen Sie sie in den Befehl CREATE VIEW ein. Hier ist die allgemeine Syntax:

VIEW-Ansichtsname ERSTELLEN AS

Um beispielsweise die Ansicht des Vollzeitmitarbeiters zu erstellen, geben Sie den folgenden Befehl ein:

ANSICHT ERSTELLEN Vollzeit AS
SELECT Vorname, Nachname, Mitarbeiter-ID
VON Mitarbeitern
WHERE status='FT';

Ändern einer Ansicht

Das Ändern des Inhalts einer Ansicht verwendet genau dieselbe Syntax wie das Erstellen einer Ansicht, verwenden jedoch den Befehl ALTER VIEW anstelle des Befehls CREATE VIEW. Um beispielsweise der Vollzeitansicht eine Einschränkung hinzuzufügen, die die Telefonnummer des Mitarbeiters zu den Ergebnissen hinzufügt, geben Sie den folgenden Befehl ein:

ALTER VIEW Vollzeit AS
SELECT Vorname, Nachname, Mitarbeiter-ID, Telefon
VON Mitarbeitern
WHERE status='FT';

Löschen einer Ansicht

Es ist einfach, eine Ansicht mit dem Befehl DROP VIEW aus einer Datenbank zu entfernen. Um beispielsweise die Ansicht des Vollzeitmitarbeiters zu löschen, verwenden Sie den folgenden Befehl:

DROP VIEW Vollzeit; 

Ansichten vs. Materialisierte Ansichten

Eine Ansicht ist eine virtuelle Tabelle. EIN materialisierte Ansicht ist dieselbe Ansicht, die auf die Platte geschrieben und auf die zugegriffen wird, als ob sie eine eigene Tabelle wäre.

Wenn Sie eine Abfrage für eine Ansicht ausführen, wird die sekundäre Abfrage, die die Ansicht als Quelle verwendet, in Echtzeit ausgeführt, und diese Ergebnisse fließen in die ursprüngliche Hauptabfrage zurück. Wenn Ihre Ansichten außergewöhnlich komplex sind oder Ihre Hauptabfrage eine große Anzahl von Hash-Joins zwischen mehreren Tabellen und Ansichten erfordert, wird Ihre Hauptabfrage mit der Geschwindigkeit einer Schildkröte ausgeführt.

Eine materialisierte Ansicht beschleunigt die Abfrageausführung, da sie als vorkompilierte Abfrage funktioniert, die auf die Festplatte geschrieben wird und daher so schnell wie eine Tabelle ausgeführt wird. Materialisierte Ansichten sind jedoch nur so gut wie die Ereignisprozeduren, die sie aktualisieren. Auf lange Sicht beschleunigen materialisierte Ansichten bei guter Wartung die Dinge mit einem kleinen Kompromiss bei der Verzögerungsaktualisierung, ohne dass Bedarf an einer Reihe von Schattentabellen, die möglicherweise inaktiv werden und entweder Speicherplatz beanspruchen oder die Abfragen anderer Personen beziehen unangemessen.