www.wikidata.de-de.nina.az
Eine Sicht englisch SQL View ist eine logische Relation auch virtuelle Relation oder virtuelle Tabelle in einem Datenbanksystem Diese logische Relation wird uber eine im Datenbankmanagementsystem DBMS gespeicherte Abfrage definiert Der Datenbankbenutzer kann eine Sicht wie eine normale Tabelle abfragen Wann immer eine Abfrage diese Sicht benutzt wird diese zuvor durch das Datenbankmanagementsystem berechnet Eine Sicht stellt im Wesentlichen einen Alias fur eine Abfrage dar Inhaltsverzeichnis 1 Beispiel in SQL 2 Funktion 3 Arten 4 Updates 5 Materialized View 6 EinzelnachweiseBeispiel in SQL BearbeitenSELECT SoftwareVerkaeufe AS SELECT v kaeufer v verkaeufer FROM produkte p verkaeufe v WHERE p produkt id v produkt id AND p produkt Software oder erzeugt das gleiche Ergebnis CREATE VIEW SoftwareVerkaeufe AS SELECT v kaeufer v verkaeufer FROM produkte p verkaeufe v WHERE p produkt id v produkt id AND p produkt Software Die Abfragen werden also fur alle gespeicherten verkaeufe von produkte n die Software sind den Kaufer und den Verkaufer auflisten Mochte man jede auftretende Kombination Verkaufer Kaufer nur einmal auffuhren so musste die Abfrage um eine zusatzliche Anweisung Aggregation erweitert werden Das gilt auch wenn eine bestimmte Sortierfolge gewunscht ware ORDER BY Eine nachfolgende Abfrage SELECT verkaeufer FROM i SoftwareVerkaeufe i wurde sich auf das Ergebnis dieser Sicht beziehen und wurde nur die Verkaufer auflisten die Software verkauft haben zweckmassigerweise ebenfalls mit Aggregationsfunktion Funktion BearbeitenDie Aufgabe einer Sicht ist es den Zugriff auf das Datenbankschema zu vereinfachen Normalisierte Datenbankschemas verteilen Daten auf zahlreiche Tabellen mit komplexen Abhangigkeiten Dies fuhrt zu aufwandigen SQL Abfragen Ausserdem wird ein hohes Mass an Wissen uber das Schema vorausgesetzt um solche Abfragen zu erstellen Das Bereitstellen geeigneter Sichten erlaubt einen einfachen Zugriff ohne Kenntnis des darunter liegenden Schemas und ohne Aufweichung der Normalisierung Ein weiterer Vorteil von Sichten ist dass das DBMS keinen zusatzlichen Aufwand zur Vorbereitung der Abfrage benotigt Die Sicht Abfrage wurde vom Parser bereits bei der Erstellung syntaktisch zerlegt und vom Anfrageoptimierer vereinfacht Ein Nachteil von Sichten kann sein dass die Komplexitat der dahinter liegenden Abfrage unterschatzt wird Der Aufruf einer Sicht kann zu sehr aufwandigen Abfragen fuhren und der unbedachte Einsatz solcher dann zu erheblichen Performanceproblemen Ob und wie viel Mehraufwand durch die Verwendung von Sichten entsteht hangt sehr stark von der Gute des Anfrageoptimierers ab Wie oben beschrieben ist eine Sicht nichts anderes als eine im DBMS hinterlegte Abfrage Wenn nun eine Abfrage Q gegen eine solche Sicht ausgefuhrt wird wurde bei einer naiven Ausfuhrung im DBMS zunachst die hinterlegte Sicht Abfrage ausgefuhrt und auf deren Ergebnis Relation dann Q ausgefuhrt werden Bei Hochleistungs DBMS die qualitativ sehr ausgefeilte Abfrageoptimierer einsetzen wie z B Oracle und DB2 verfahrt man anders Hier wird das Ganze als geschachtelter Abfrageausdruck d h innen die Sicht Abfrage und aussen die Abfrage Q interpretiert und vom Abfrageoptimierer z B mittels Eliminierung uberflussiger Teilausdrucke oder Zusammenfassen von Operationen als eine einzige Abfrage behandelt und optimiert In gunstigen Fallen wird dann aus der geschachtelten Abfrage eine einfache Abfrage die direkt auf den gespeicherten Relationen ausgefuhrt wird und von eventuell dort vorhandenen Indexen profitieren kann Sichten sind essentiell beim Zusammenfuhren Foderieren von Datenbanken da es durch sie moglich ist existierenden Programmen den Zugriff auf die Daten deren Struktur sich durch die Foderation geandert haben kann weiterhin zu erlauben Sichten konnen zusatzlich etwa in Verbindung mit Rollen als ein Mittel des Datenschutzes 1 verwendet werden Arten BearbeitenSichten konnen anhand der verwendeten Anweisungen in verschiedene Klassen eingeteilt werden die unterschiedliche Aufgaben haben Eine Selektionssicht filtert aus einer Tabelle bestimmte Zeilen heraus Eine Projektionssicht filtert bestimmte Spalten Eine Verbundsicht verknupft mehrere Tabellen Eine Aggregationssicht wendet Aggregationsfunktionen MIN MAX COUNT etc an Eine rekursive Sicht in SQL nicht moglich wendet eine Sicht immer wieder auf ihr Ergebnis an Eine objektrelationale Sicht basiert auf einem benutzerdefinierten Datentyp und stellt die objektrelationale Sicht auf eine relationale Tabelle dar Eine Sicht kann dabei Daten aus mehreren Tabellen gleichzeitig selektieren Updates BearbeitenUpdates auf eine Sicht sind im Allgemeinen nicht moglich da sie zu Anomalien fuhren konnen Auf die Sicht kann dann nur lesend zugegriffen werden In besonderen Fallen in denen das DBMS eine eindeutige Zuordnung zwischen den in der Sicht zu andernden Daten und einer physikalischen Tabelle zu der sie gehoren herstellen kann ist ein Update moglich Beispiel fur so eine updatable view ware folgende triviale Sicht CREATE VIEW SoftwareVerkaeufe2 AS SELECT verkaeufe kaeufer Ein Update auf SoftwareVerkaeufe b 2 b kann hier eindeutig select verkaeufe kaeufer zugeordnet werden Im Beispiel unten ist eine eindeutige Zuordnung nicht moglich da produkt id in beiden Quellrelationen enthalten ist CREATE VIEW SoftwareVerkaeufe AS SELECT v kaeufer v verkaeufer FROM produkte p verkaeufe v WHERE p produkt id v produkt id Achtung AND p produkt Software und z B bei einer Loschung wie in DELETE FROM SoftwareVerkaeufe WHERE produkt id 123456 nicht entscheidbar ist ob Datensatze aus Produkte oder Verkaeufe geloscht werden sollen Eine solche Anomalie entsteht in einer Situation wo eine Durchfuhrung der Anderung nicht den Erwartungen des Benutzers entspricht oder nicht entscheidbar ist welche Anderungen genau durchzufuhren sind Man kann sie folgendermassen einteilen In einer Selektionssicht konnen Datensatze aus dem sichtbaren Bereich verschwinden wenn ein in der Sicht vorhandener Datensatz so geandert wird dass er aus der Sicht herausfallt Tupelmigration In einer Projektionssicht kann eine Einfugeoperation dann problematisch werden wenn in der Originalrelation Felder vorhanden sind die belegt sein mussen NOT NULL aber nicht in der Sicht vorkommen oder wenn die Sicht durch die Angabe von DISTINCT gleiche Ergebnistupel zu einem zusammenfasst In einer Verbundsicht ist nicht immer entscheidbar auf welcher Originalrelation die Operation auszufuhren ist In einer Aggregationssicht kann nicht entschieden werden wie die Operation umzusetzen ist Zum Beispiel ist nicht klar wie eine Halbierung aller Verkaufszahlen auf die Originalrelation umzusetzen ist Entweder kann die Halfte der Verkaufe geloscht oder die einzelnen Verkaufe halbiert werden Bei rekursiven Sichten moglich ab Oracle 10g DB2 V8 z B der Berechnung aller Vorfahren einer Person aus einer Tabelle ELTERN Eltern Kind ist nicht klar wie eine Einfugeoperation Vorfahr hinzufugen umzusetzen ist In SQL 92 ist nur die Anderung reiner Selektionssichten erlaubt Die Option WITH CHECK OPTION im CREATE VIEW Statement gibt dann an ob Anderungen die zum Verschwinden des Datensatzes aus der Sicht fuhren wurden verboten sein sollen In SQL 99 wurde die Menge an anderbaren Sichten deutlich erweitert bleibt aber immer noch hinter der theoretisch moglichen zuruck In neueren SQL Dialekten ist es moglich Trigger dazu einzusetzen Updateoperationen auf Sichten von Hand zu implementieren Materialized View BearbeitenNeben den herkommlichen Sichten gibt es noch so genannte materialisierte Sichten englisch materialized views auch Indexed Views Microsoft oder Automatic Summary Tables IBM genannt Diese sind in der Datenbank abgelegte Kopien von Sichten Master Sites zu einem bestimmten Zeitpunkt Sie fungieren als Cache um Zugriffe zu beschleunigen und die Netzwerklast zu verringern 2 3 Das wird wegen der grossen Datenmengen vor allem bei OLAP ausgenutzt Mittlerweile spielen diese Views auch in herkommlichen Datenbanken eine Rolle da sie bei der Erstellung und Optimierung von QEPs berucksichtigt werden Es gibt verschiedene Grundideen materialisierte Sichten aktuell zu halten inkrementelle Updates logbasiert komplette Neuerstellung einfach aber extrem teuer und Zeitpunkte transaktionsbasiert bei Update der Basistabellen damit versteckte Kosten fur den Updater zeitpunktgebunden mit zeitweise nichtaktuellen Daten in der View Diese Aktualisierungen refreshes gehen von einer ubergeordneten materialisierten Sicht oder von einer Master Site aus 3 Die Theorie materialisierter Sichten ist schon seit den 1980er Jahren bekannt wurde aber erst seit 1998 z B von Oracle ab Vers 8i 4 IBM DB2 nicht aber Informix und Microsoft in ihren Produkten umgesetzt Der nachste Schritt uber die Verwendung materialisierter Sichten bei der Erstellung von Auswertungsplanen hinaus ist die automatische Erstellung materialisierter Sichten aus der sinnvollsten Schnittmenge der Anfragen von Nutzern Einzelnachweise Bearbeiten Uwe Klug Datenbank Anwendungen entwerfen amp programmieren in der Google Buchsuche Ashish Gupta Inderpal Singh Mumick Materialized views techniques implementations and applications Massachusetts Institute of Technology 1999 ISBN 0 262 57122 6 S 3 a b Ted Burroughs Randy Urbano Oracle9i Advanced Replication 2 Auflage Oracle Corporation 2002 3 Kapitel Online Ausgabe Oracle 8 1 5 Tuning Release A67775 01 Abgerufen von https de wikipedia org w index php title Sicht Datenbank amp oldid 237784692