Erste Seite Zurück Weiter Letzte Seite Übersicht Grafik

Vorteile v. Sichten


Notizen:

Selbstverständlich kann eine Sicht auch von vorne herein eine datentechnisch oder normalisierungsbedingt notwendige komplexe Datenstruktur verbergen, indem dem Benutzer ein Join angezeigt wird.
Achtung! Oft wird für solche Zwecke ein Left Join benötigt, sonst verschwinden u.U. Kopfdatensätze, die (noch) keine Details haben
Achtung! Server benehmen sich tw. unterschiedlich, was die Updatability betrifft: In einem 1:n-Join dürfen manchmal nur Felder der Kopftabelle (1), manchmal nur Felder der Detailtabelle (n), bei besseren Servern beliebige Felder updated werden. Dokumentation lesen!
Achtung! Server benehmen sich tw. unterschiedlich, was Updatability betrifft: Manche Server erlauben grundsätzlich, dass datenverändernde Statements sich nur auf eine Tabelle auswirken, auch wenn sie sich gegen eine Sicht richten, die mehrere Tabellen verknüpft! Dokumentation lesen!
Die meisten DB-Server arbeiten einen empfangenen SQL-String folgendermaßen (oder ähnlich) ab:
Parsen: feststellen, ob es sich um syntaktisch gültiges SQL handelt, kann scheitern
Binden: Alle vorkommenden Namen auf Vorhandensein überprüfen, kann scheitern
Bilden eines Abfragebaumes: feststellen, ob es sich um semantisch gültiges SQL handelt, d.h. die betroffenen Objekte & Operationen identifizieren, kann scheitern
Optimieren: äquivalenten, aber effizientestmöglich ausführbaren Abfragebaum bestimmen, kann nicht scheitern
Bilden eines Abfrageplanes: der zumeist f. weitere Verwendung in einem „Procedure Cache“ verbleibt und für Views überhaupt in der DB gespeichert wird
Durch Verwendung von Views kann auf bereits früher gebildete Abfragepläne zurückgegriffen werden, sodass die ersten 3 Punkte entfallen ==> Zeitgewinn
Sicherheit
Personaltabelle (datPersonal) enthält alle Angaben zu Angestellten (Zuname, Vorname, Straße, PLZ, Tel, BLZ, Kontonummer, Abteilung, DW). Personalbüro soll alle Daten, Telefonzentrale nur die für sie relevanten sehen.
Lösung:
View für Personalbüro:
CREATE VIEW Personal AS SELECT * FROM datPersonal
View für Telefonzentrale
CREATE VIEW Telefonliste AS SELECT Zuname, Vorname, Abt, DW FROM datPersonal