In diesem Abschnitt werden wir uns sogenannte VIEWS näher ansehen. 1 In dem Abschnitt VIEWs geht es zunächst darum zu verstehen, WAS Views überhaupt sind und welche Probleme man dadurch lösen kann. Danach werden wir uns ansehen, wie mal mittels SQL Befehlen VIEWS erstellen kann und welche Merkmale Views in der Praxis aufweisen. 2 Bei den VIEWS geht es darum, wie man verschiedene Sichten einem Anwender zur Verfügung stellen kann. Die Grundidee dabei ist, dass ein Benutzer ein bestimmtes Verständnis des Datenmodells hat, welche nicht unbedingt einem normalisierten physikalischen Datenmodell entspricht, so wie in einer Datenbank abgelegt. Die Frage ist nun: .. Und wo ist das Problem dabei ? Das schauen wir uns in der nächsten Abbildung an. 3 Das Problem stellt sich wie folgt dar: 1. Der Benutzer hat ein etwas anderes Verständnis der Daten als ein DatenbankDatenmodell-Spezialist, welcher eine normalisierte Datenbank zur Verfügung stellt. 2. Es kann vorkommen, dass ein Benutzer nicht alle Spalten oder Zeilen einer Datenbanktabelle benötigt 3. Das normalisierte Datenmodell ist für den Benutzer zu komplex bzw. nur schwer verständlich Um diese Probleme bzw. Herausforderungen zu lösen, kann man sogenannte Views erstellen. In der nächsten Abbildung sehen wir uns an , was nun ein VIEW genau ist. 4 In der Abbildung soll dies anhand eines kleinen Beispiels verdeutlicht werden. Nehmen wir an, in einer Datenbank gibt es unter anderem 2 Tabellen. Zwischen den Tabellen gibt es eine Beziehung. Dies ist typisch für nominierte Datenmodelle. Wenn nun eine Anwendung immer Daten aus beiden Tabellen benötigt und auch nicht wissen soll/muss wie diese Daten zusammenhängen, bietet sich geradezu ein VIEW an. Mittels einer SQL –Anweisung Create View ( Syntax ist nachfolgend kurz beschrieben, kann ein VIEW definiert werden. Auf einen View kann man dann ganz normal über eine SELECFT Anweisung zugreifen, um Daten lesen zu können. Ein VIEW sieht für die Anwendung / Benutzer genau so aus wie eine ganz normale Tabelle. Syntax: CREATE VIEW viewName As SELECT ….. 5 Wie Sie der SYNTAX entnehmen können, hat jeder View einen Namen. Dieser Name kann in einer Select-Anweisung wie ein Tabellenname verwendet werden. Welche Daten nun in dem View „enthalten“ und somit dem Anwender zur Verfügung gestellt werden, ergeben sich aus der SELECT-Klausel. Dort sind die Tabellennamen , WHERE und JOIN Bedingungen aufgeführt, aus denen die Daten den View gebildet werden. Wichtig zu Wissen ist: • Die SELECT Anweisungen werden nicht beim Anlegen des VIEWS ausgeführt. • Die Select Anweisungen werden zur Laufzeit ausgeführt und zwar immer dann , wenn ein Benutzer eine SELECT auf den View macht. Dies bedeutet, die Daten werden erst dann „zusammengesucht“ und dem Benutzer bereitgestellt, wenn der Benutzer die Daten auch wirklich benötigt. Das Beispiel auf der nächsten Abbildung verdeutlich den Sachverhalt. 5 Schauen wir uns ein Beispiel an, wie man Views anwendet. In dem Beispiel bedienen wir uns den Tabellen aus dem Abschnitt „JOIN“. Dort gab es zwei Tabellen TabelleA mit den Spalten „name“ und „ort“ TabelleB mit dem Spalten „name“ und „arbeitgeber“ Nun können wir einen View wie folgt definieren Create view „Employee“ As Select TabelleA.name, TabelleA.ort, TabelleB.arbeitgeber From TabelleA, TabelleB Where TabelleB.name = TabelleA.name Aus Anwendungssicht kann dann folgende Select Anweisung ausgeführt werden. SELECT * from Employee 6 Als Ergebnismenge erhält man dann das Tupel name, ort, arbeitgeber TIPP: Führen Sie nun die Übungen aus dem Übungsbuch zu dem Themenbereich SQL Views durch. 6 Machen wir uns zum Abschluss noch einmal die Merkmale von View klar • Ein VIEW kann wie eine Tabelle verwendet werden ( Ausnahmen siehe weiter unten ) • Die SELECT Anweisungen, die durch einen VIEW ausgeführt werden, sind für den Benutzer/Anwendung nicht sichtbar. • Wenn sich nun Tabellennamen ändern, bleibt dies für die Anwendung verborgen • Die SELECT-Bedingungen eines Views können geändert werden, ohne dass die Anwendung geändert werden muss, da dies ja nicht sichtbar ist • VIEW ist somit eine Schnittstelle • Views erlauben jedoch keine INSERT, UPDATE und DELTES • Die Daten, die durch via VIEW gelesen werden, werden zum Ausführungszeitpunkt bestimmt. 7 8