Wann und warum entscheidet jemand, dass er eine Ansicht in seiner Datenbank erstellen muss? Warum nicht einfach eine normale gespeicherte Prozedur oder einen Select ausführen?
Antworten
Zu viele Anzeigen?Eine Ansicht bietet mehrere Vorteile.
1. Ansichten können Komplexität verbergen
Wenn Sie eine Abfrage haben, bei der mehrere Tabellen verbunden werden müssen oder die eine komplexe Logik oder Berechnungen enthält, können Sie die gesamte Logik in einer Ansicht kodieren und dann aus der Ansicht auswählen, als ob Sie eine Tabelle verwenden würden.
2. Ansichten können als Sicherheitsmechanismus verwendet werden
Eine Ansicht kann bestimmte Spalten und/oder Zeilen aus einer Tabelle (oder mehreren Tabellen) auswählen und die Berechtigungen auf die Ansicht anstatt auf die zugrunde liegenden Tabellen beziehen. Auf diese Weise können nur die Daten angezeigt werden, die ein Benutzer sehen muss.
3. Ansichten können die Unterstützung von Legacy-Code vereinfachen
Wenn Sie eine Tabelle umstrukturieren müssen, die eine Menge Code zerstören würde, können Sie die Tabelle durch einen gleichnamigen View ersetzen. Der View bietet genau das gleiche Schema wie die ursprüngliche Tabelle, während sich das eigentliche Schema geändert hat. Dadurch wird der Legacy-Code, der auf die Tabelle verweist, nicht beschädigt, und Sie können den Legacy-Code nach Belieben ändern.
Dies sind nur einige der vielen Beispiele dafür, wie nützlich Ansichten sein können.
Es kann unter anderem für die Sicherheit verwendet werden. Wenn Sie eine Tabelle "Kunde" haben, möchten Sie vielleicht allen Ihren Vertriebsmitarbeitern Zugriff auf die Felder Name, Adresse, Postleitzahl usw. geben, aber nicht auf die Kreditkartennummer. Sie können eine Ansicht erstellen, die nur die Spalten enthält, auf die sie Zugriff benötigen, und ihnen dann Zugriff auf die Ansicht gewähren.
Normalerweise erstelle ich Ansichten, um Daten zu de-normalisieren und/oder zu aggregieren, die häufig für Berichtszwecke verwendet werden.
EDIT
Zur Verdeutlichung: Wenn ich eine Datenbank hätte, in der einige der Entitäten Person, Unternehmen, Rolle, Eigentümertyp, Auftrag, Auftragsdetail, Adresse und Telefon wären, wobei die Personentabelle sowohl Mitarbeiter als auch Kontakte und die Adress- und Telefontabellen Telefonnummern sowohl für Personen als auch für Unternehmen enthielten, und das Entwicklungsteam mit der Erstellung von Berichten (oder der Bereitstellung von Berichtsdaten für Nicht-Entwickler) beauftragt wäre, wie z. B. Umsatz nach Mitarbeiter oder Umsatz nach Kunde oder Umsatz nach Region, Umsatz nach Monat, Kunden nach Bundesland usw., würde ich eine Reihe von Ansichten erstellen, die die Beziehungen zwischen den Datenbankentitäten de-normalisieren, so dass ein integrierterer Blick (kein Wortspiel beabsichtigt) auf die realen Entitäten verfügbar wäre. Einige der Vorteile könnten sein:
- Verringerung der Redundanz beim Schreiben von Abfragen
- Festlegung eines Standards für verbundene Unternehmen
- Schaffung von Möglichkeiten für Bewertung und Maximierung der Leistung für komplexe Berechnungen und Joins (z.B. Indizierung auf Schemabound Views in MSSQL)
- Daten besser zugänglich machen und intuitiv für Teammitglieder und Nicht-Entwickler.
Aus mehreren Gründen: Wenn Sie komplizierte Joins haben, ist es manchmal am besten, eine Ansicht zu haben, so dass jeder Zugriff immer die korrekten Joins hat und die Entwickler sich nicht an alle Tabellen erinnern müssen, die sie vielleicht brauchen. Typischerweise könnte dies bei einer Finanzanwendung der Fall sein, bei der es äußerst wichtig ist, dass alle Finanzberichte auf demselben Datensatz basieren.
Wenn Sie Benutzer haben, die die Datensätze, die sie jemals sehen können, einschränken möchten, können Sie eine Ansicht verwenden, ihnen nur Zugriff auf die Ansicht und nicht auf die zugrunde liegenden Tabellen geben und dann die Ansicht abfragen
Crystal Reports scheint Ansichten gegenüber gespeicherten Prozessen zu bevorzugen, so dass Leute, die viele Berichte schreiben, dazu neigen, viele Ansichten zu verwenden.
Ansichten sind auch beim Refactoring von Datenbanken sehr nützlich. Sie können die Änderung oft verbergen, so dass der alte Code sie nicht sieht, indem Sie eine Ansicht erstellen. Lesen Sie unter Refactoring von Datenbanken, wie dies funktioniert, denn es ist eine sehr leistungsfähige Methode für das Refactoring.
- See previous answers
- Weitere Antworten anzeigen