Aufgabe 3 (40 Punkte) WS 1999 Auf eine Tabelle mitarbeiter, die Informationen über Mitarbeiter enthält, sind mehrere Indexe errichtet worden: insbesondere auf die Spalten abteilungs_nr und alter. Diskutieren Sie, was ein Query-Optimizer mit folgender Anfrage machen wird: SELECT * FROM mitarbeiter WHERE abteilungs_nr < 5 AND alter > 45 Gibt es eine äquivalente Umformulierung dieser Anfrage, die schneller zu dem gewünschten Ergebnis führen wird? Lösung: Der Query-Optimizer ermittelt die Zugriffspfade und versucht diese zu optimieren. Als Bewertungskriterien dienen als Kosten Plattenzugriffe, CPU- und Speicherbelastung etc. Das Problem bei der Optimierung dieser Anweisung liegt in den beiden sich widersprechenden Sortierkriterien (abteilungs_nr < 5 und alter > 45). Dies würde dazu führen, dass der Query-Optimizer versucht gleichzeitig die Tabelle aufsteigend und absteigend in einer neuen temporären Tabelle vorzusortieren. Dies wiederum bedeutet, dass die Sortierkriterien sich gegenseitig stören, so dass die Erstellungszeit der temporären Tabelle sich erhöhen würde. Unter Umstände kommt kann es auch passieren, dass kein Ergebnis zu Stande kommt, wenn eine gegenseitige Sortierung vorliegt. Sinnvoll ist eine Splittung in zwei einzelne SQL-Anfragen, wobei die Bedingung alter > 45 nur auf die Ergebnismenge von abteilungs_nr < 5 angewendet wird. z.B. in Form eines Select auf einem View. Aufgabe 4 (15 Punkte) WS 1997 A: In welchen Fällen muss der Systemadministrator auf eine komplette Sicherungskopie zurückgreifen? Lösung: Ein komplettes Backup ist nur notwendig, wenn ein Totalausfall aller Logs, des Katalogs und aller Daten vorliegt. Gründe die zu einem Totalausfall führen könnten, sind eher selten.... bla bla B: Bei der Festlegung der Sicherungsstrategie muss der Systemadministrator unter anderem entscheiden, wie groß der zeitliche Abstand zwischen den kompletten Sicherungskopien sein soll. Skizzieren Sie Vor- und Nachteile eines langen zeitlichen Abstandes. Lösung: Lange Sicherungszeiträume sind nur dann sinnvoll, falls das Erstellen der kompletten Sicherungskopie sehr „teuer“, also zeitaufwendig und Rechner-Ressourcen intensiv ist. Ein weiteres Kriterium ist zudem die Häufigkeit von ändernden Zugriffen. Ist diese sehr hoch, wird es wiederum teuer in einem alten Backup sämtliche Änderungen nachzupflegen. Ist dies der Fall wird man sicherlich relativ häufig komplette Backups fahren, wodurch der Aufwand zur Wiederherstellung der Datenbank minimiert werden kann. Aufgabe 6 (15 Punkte) WS 1999 Beschreiben Sie die Fehlerarten, bei denen der DBA zur Administrierung auf ein komplettes Backup zurückgreifen muss, sowie diejenigen, bei denen die Information des LOGs ausreicht. Lösung: Ein komplettes Backup ist nur notwendig, wenn ein Totalausfall aller Logs, des Katalogs und aller Daten vorliegt. Gründe die zu einem Totalausfall führen könnten, sind eher selten.... bla bla Eine Wiederherstellung der Datenbank mittels des LOGs ist sinnvoll, wenn es ausreicht die Einzelaktionen von einem bestimmten Datenstand (älterer oder aktueller mit nicht beendeten Transaktionen) vor- oder nach zu vollziehen. Andernfalls, z.B. Plattencrash (kaputtes Dictionary) , muss auf ein komplettes Backup zurückgegriffen werden. Aufgabe 8 (20 Punkte) SS 1998 Welche Überlegungen muss der DBA bzgl. der Sicherungsstrategie anstellen. Gibt es diesbezüglich etwas, das vor bzw. zur Installationszeit des DBMS festgelegt werden muss? Lösung: Um die Sicherheit einer Datenbank zu gewährleisten, sollte der DBA möglichst DBMS-System-Dateien, (Dictionary) und den Log-Bereich auf verschiedenen Platten verteilen. Zum Verfahren mit Log-Dateien gibt es mehrere Möglichkeiten, wobei dabei die zentrale Frage lautet: Lasse ich das Überschreiben zu oder nicht? Eine erhöhte Sicherheit birgt das Dual-Logging bzw. Logging auf externen Medien. Aufgabe 2 (20 Punkte) SS 1998 Wie muss der DBA Vorsorge treffen, damit bei einem Plattencrash die Datenbank möglichst schnell wieder einsetzbar ist. Was muss er nach einem solchen Ereignis tun? Lösung: Vorsorgung o durch Dreiteilung (Log, Katalog, Daten) auf jeweils einer eigenen Platte o durch HW-Replikation Maßnahmen o Backup einspielen o Mit LOG auf den aktuellen Stand bringen Aufgabe 1(10 Punkte) SS 1999 Beschreiben Sie die Aufgaben eines DBA. Lösung: Aufgaben eines DBA o Erstellen der konzeptionellen Sichten o Erstellen der internen Sicht, o Erstellen der externen Sichten - dies betrifft insbesondere Zugriffsrechte, Dazu kommen noch: o Verankern von Regeln, die die Sicherheit und die Integrität der Daten gewährleisten, o Datenschutz, o Erstellen von Backup-Strategien und Recovery-Prozeduren, o Überwachen der Performance und Erstellen von Maßnahmen, um die Gesamtperformance zu steigern, o in Zusammenarbeit mit der Systemgruppe: Installation des DBMS und Einbinden neuer Hardware. Aufgabe 2(10 Punkte) SS 1999 Ein DBMS bietet die Möglichkeit, Hash-Indexe einzusetzen. Auf eine Tabelle, die als Spalten einen Zeitstempel und den Namen einer zur angegebenen Zeit durchgeführten Aktion enthält, wird häufig auf ein Zeitintervall in der Reihenfolge der Zeitstempel zugegriffen. Wäre der Einsatz eines Hash-Index angebracht? Begründung? Lösung: Eine zu Hilfenahme eines Hash-Indexes ist nicht möglich, da er über Funktionen abbildet und keine sortierte Darstellung besitzt. Somit ist kein Zugriff auf ein Intervall und eine Reihenfolge möglich. Daher sollte z.B. besser ein B-Tree verwendet werden. Aufgabe 3 (15 Punkte) SS 1998 Warum kann man nicht grundsätzlich vom Einrichten eines Indexes eine Beschleunigung der Performance erwarten? Lösung: Bei kleinen Datenvolumina (Richtwert < 8 Pages pro Tabelle) kann der Einsatz eines Indexes teurer als ein kompletter Table-Scan sein. Bei Änderungen an einer Tabelle müssen sämtliche Indexe für diese Tabelle mitgepflegt werden und wird auch dadurch langsamer. Indizes sollten nur für die Kriterien vergeben werden, nach denen in WHERE-Klausel auch gefragt wird. Eine großzügige Vergabe kann eine jeweilige Veränderung beim Einfügen, Löschen und Ändern von Datensätzen nach sich ziehen. Bei sehr kleinen Dateien (nur wenige Seiten) erzeugt ein Index sogar beim Lesen zu viel Overhead. Aufgabe 5 (10 Punkte) SS 1996 Warum müssen Indexe bei der physischen Implementation einer Datenbank sorgfältig geplant werden? Lösung: - Ressourcenintensiv o Viel Platten und Hauptspeicher o Viel CPU - Verteilungsfrage o Indizes eigene Platte? - Art des Indexes ist zweckgebunden o Listen einfach aber nicht schnell o Hash-Index keine Bereichssuche oder Sortierung ermöglicht o SEQ und INDEX SEQ langsam sind Aufgabe 6 (15 Punkte) SS 2000 Zur Beschleunigung des Zugriffes werden Indexe eingesetzt. Warum ist dann die Aussage ,,je mehr Indexe, desto besser`` falsch? Lösung: Siehe Aufgabe 3 (15 Punkte) SS 1998 Aufgabe 6 (10 Punkte) 2001 Welche Spalten bzw. Spaltenkombinationen sind für die Einrichtung eines Indexes besonders geeignet? Lösung: Schlüsselspalten Spalten, die in Join-, Group-, Having- und Sort-Operationen benötigt werden wenn bereits der Index die gesamte benötigte Information enthält, so dass nicht mehr auf die Tabellenzeile selbst zugegriffen werden muss. Man sollte keine Unique-Werte (darf NULL-Werte enthalten), keine NULL-Werte und keine Join-Spalten für die Indizierung verwenden. Zudem sollte man nur Spalten indizieren, in denen man mit der WHEREKlausel sucht. Warum sollte man nicht beliebige Indexe einrichten? Lösung: - Eindeutigkeit - Suchkriterium - Primärschlüssel - Linksbündig keine NULL Werte Aufgabe 1 (15 Punkte) WS 1999 Auf eine kleine Tabelle, die als Inhalt einen Farbcode (3-stellige Nummer), den Namen der Farbe und das Mischungsverhältnis aus Grundfarben enthält, wird in der Regel ausschließlich über den Farbcode zugegriffen. Diskutieren Sie, ob Sie über die Errichtung von Indexen Performance-Gewinn erwarten können. Lösung: Nein, da... - Es sich um eine kleine Tabelle handelt - Farbnummer eindeutig ist (Primärschlüssel sein kann/wird) - Resultat: Änderungskosten > Suchkosten Aufgabe 4 (10 Punkte) WS 1996 Welche Möglichkeiten hat ein DBA, für Datenschutz zu sorgen? Lösung: - Temporäre Tabellen für Benutzer (Datenauszug – Benutzerrichtlinien) - Benutzerverwaltung (Rechteeinschränkungen....) o Erzeugen (Create) o Einfügen (Insert) o Löschen (Delete) o Vererben (Grant) o Auswählen (Select) o Verändern (Update) Aufgabe 5 (10 Punkte) SS 1999 Wie kann bei der Installation einer DB-Anwendung auf Datenschutz geachtet werden? Lösung: Der Datenschutz wird über ein internes (und externes, wenn es ein verteiltes Datenbanksystem ist) Rechtemodell ermöglicht. Dabei kann der Zugang auf Datenbanken für Rechner und Benutzer datenbank-, tabellen- und spaltenweise eingeschränkt werden. Der Benutzter kann dabei auf vielfältige Art und Weise eingeschränkt werden. Aufgabe 2 (15 Punkte) WS 1997 bzw. Aufgabe 1 (15 Punkte) WS 1998 Was versteht man unter dem Begriff ,,Clusterung``? Erläutern Sie, wozu Clusterung bei Datenbanken gebraucht wird. Lösung: Clusterung bedeutet, dass Daten, die logisch "zusammengehören" und somit häufig zusammen gelesen werden, physisch nahe benachbart gespeichert werden. Erfolgt häufig ein Zugriff auf Datensätze in einer bestimmten Reihenfolge, kann eine Clusterung die Performance steigern. Aufgabe 1 (20 Punkte) SS 1998 Begründen Sie, wieso Clustern die Performance einer DB-Anwendung verbessern kann. Worin sehen Sie mögliche Nachteile? Lösung: Clustern Erfolgt häufig ein Zugriff auf Datensätze in einer bestimmten Reihenfolge, kann eine Clusterung die Performance steigern: die Datensätze werden so auf die Seiten verteilt, dass Sätze, die in der Ordnung (Clusterindex) aufeinanderfolgen, so weit wie möglich jeweils auf einer Seite zusammengefasst werden bei der Verarbeitung in Reihenfolge des Clusterindex werden die physischen Speicherzugriffe minimiert Problem liegen Daten geclustered vor und erfolgen eine Reihe von Änderungen, so können nach gewisser Zeit Datensätze nicht mehr auf diejenige Seite geschrieben werden, auf die sie auf Grund der Clusterung kommen müssten Überlaufseiten zur Aufnahme der Datensätze Füllungsgrad der Seiten verändern Reorganisation Lösungen Aufgabe 5 (15 Punkte) SS 2000 Warum sind bei der physischen Implementation einer rel. Datenbank in der Regel die Tabellen nicht vollständig normalisiert? (Häufig gibt man sich bereits mit der 2.NF zufrieden.) Was sind die Gründe für eine Normalisierung, was sind ggf. die Nachteile? Lösungen: Tabellen werden deswegen nicht vollständig normalisiert, da die nachfolgenden Normalformen zu einer Aufblähung der Datenbank in Form weiterer Tabellen führen würden. Dies hätte zur Folge, dass man vermehrt auf Joins zurückgreifen müsste. Da ein Join eine teure Operation ist, würde dies die Performance des Systems beeinträchtigen. Ein Nachteil des Normalisierungsverzichts ist die redundante Datenspeicherung. Dies wird aber in Kauf genommen. Aufgabe 6 (25 Punkte) WS 2000 Wozu dient Normalisierung? In welchen Situationen darf Normalisierung (geplant!) vernachlässigt werden? Lösungen: Allgemein: Bei komplexen Systemen mit vielen Objekttypen und Beziehungen ist die Modellierung der Datenstruktur nicht unproblematisch. Hierzu wurden Regeln aufgestellt , nach denen man die Einträge in den Tabellen ordnet und aufteilt. Die wichtigsten Ziele der Normalisierung einer oder mehreren Tabellen sind: Vermeidung von Redundanzen (doppelt gespeicherten Werten) Vereinfachung des Aufbaues von Tabellen Einfache Datenpflege Regeln: 1. Normalform: Eine Relation befindet sich in der ersten Normalform, wenn keines ihrer Attribute eine untergeordnete Relation darstellt und wenn alle Attribute nur atomare Werte beinhalten. 2. Normalform: Laut Definition muss die Datenbank immer zuerst in die erste Normalform versetzt werden, bevor man diese in die 2. Normalform versetzen kann. Hierbei müssen alle nicht zum Schlüssel gehörenden Attribute von diesem voll funktional abhängig sein. Besteht ein Schlüssel aus mehreren Teilschlüsseln, so ist das Element aus dem Datensatz herauszuziehen, welches nur von einem Teilschlüssel abhängt. 3. Normalform: Zusätzlich zur 2. Normalform gilt für jeden Schlüssel: Alle nicht zum Schlüssel gehörende Attribute sind nicht von diesem transitiv abhängig. Das bedeutet, dass alle Attribute nur vom Schlüsselattribut, nicht aber von anderen Attributen abhängig sein. Eine Abhängigkeit zwischen den Attributen muss aufgelöst werden. 4. Normalform: Diese 4. Normalform betrifft Mehrfachabhängigkeiten von Attributmengen von einem Superschlüssel (Übergeordneten Schlüssel). Diese muss in Einzelabhängigkeiten (Siehe 3. NF) aufgelöst werden. 5. Normalform: Falls in der 4. Normalform keine verlustlose Zerlegung in Einzelabhängigkeiten möglich ist, dann muss eventuell 2., 3. ... Superschlüssel hinzugezogen werden, solange, bis nur noch Einzelabhängigkeiten der Attribute von einem oder mehreren Superschlüsseln bestehen. Vernachlässigung: z.b. beim DataWareHouse => Performancesteigerung durch Denormalisierung (S. 310) häufig benutzte Verdichtungen werden in regelmäßigen Abständen berechnet und physisch in einer eigenen Tabelle gespeichert => spart sowohl IO-Operationen als auch Rechenzeit Normalisierung wird nicht vollständig durchgeführt => spart Join-Operationen Tabellen (oder Teile davon) werden verdoppelt => kann lesenden Zugriff verbessern Aufgabe 4 (15 Punkte) SS 1998 Beschreiben Sie mit der Normalisierung verträgliche Methoden, um in einem RDBMS den Zugriff auf Daten zu beschleunigen. Lösungen: Index Ein Index speichert Schlüssel und TID, die zu speichernde Datenmenge ist somit in der Regel wesentlich kleiner als die Datenmenge des Records. Ferner wird eine zum Suchen gut geeignete Struktur gewählt: z.B. BTree oder auch Hashverfahren. Wird nach einem bestimmten Schlüsselwert gefragt, so kann mit wenigen Zugriffen auf den Index die Menge der zugehörigen TIDs ermittelt werden und dann direkt auf die Tupel zugegriffen werden. (Beim Hashing wird der TID im Prinzip sogar ohne weiteren Zugriff direkt berechnet). … A5 Aufgabe 5 (20 Punkte) SS 1999 Was versteht der SQL92-Standard unter temporären Tabellen? Lösungen: Struktur und die zu Tabelle gehörenden Daten werden in temporären Tabellen physisch gespeichert. Die Daten sind jedoch nur in der Sitzung sichtbar in der sie angelegt wurden und werden spätestens beim Sitzungsende von DBMS automatische gelöscht. Zur Verfügung stellen von nicht persistenten Daten zur Transaktionszeit Strukturierung dieser Daten Besonderheiten: Gültigkeitsbereich Aufbewahrungsdauer Foreign Key (Unterstützung der Referenzintegrität) Check Aufgabe 6 (25 Punkte) SS 1999 Der SQL92-Standard beschreibt Methoden, wie das DBMS veranlasst werden kann, die Integrität der Daten zu gewährleisten. Beschreiben Sie diese Möglichkeiten und versuchen Sie ein Beispiel zu geben, warum der Standard dabei vorsieht, unterschiedliche Zeitpunkte der Überprüfung zu berücksichtigen. Lösungen: Basisregeln Strukturregeln Manipulationsregeln Integritätsregeln Erweiterungen o Trigger o Constraint o Transaktion Aufgabe 4 (20 Punkte) SS 1997 Was wurde in der Vorlesung unter ,,dynamischem SQL`` verstanden. Worin liegen die Schwierigkeiten, dynamische SELECT-Anweisungen zu schreiben? Lösungen: Dynamisches SQL ist dadurch gekennzeichnet, dass die Anweisungen erst zur Laufzeit bekannt sind und somit auch erst zur Laufzeit vom DBMS geprüft, übersetzt und ausgeführt werden können. Dies bedeutet, dass zur Übersetzungszeit die SQL-Anweisung nicht bekannt ist. Typische Anwendungsgebiete sind dafür interaktive Oberfläche die auf die Datenbank zugreifen. Ist es ein einmaliger Zugriff oder ein wiederholter Zugriff? Bei wiederholtem Zugriff mit Hilfe der ermittelten Anweisung müsste jeweils die Analyse-Phase erneut durchlaufen werden. Dies führt zu Performanceverlust! Bei dynamischen SELECT-Anweisungen sind deswegen Probleme zu erwarten, da die Struktur der Ergebnistabelle zur Laufzeit nicht bekannt ist. In diesem Fall muss die durch PREPARE vorbereitete SQLAnweisung mittels DESCRIBE ausgewertet und ein "Descriptor" erstellt werden, der dann für die Umsetzung und Auswertung der Struktur verwendet werden kann. Aufgabe 7 (15 Punkte) SS 1998 Worin liegen die Probleme, dynamische SQL-Anweisungen zu schreiben? Was versteht man überhaupt unter diesem Begriff? Lösung: Siehe Aufgabe 4 (20 Punkte) SS 1997 Aufgabe 1 (15 Punkte) WS 1996 Was wurde in der Vorlesung unter ,,dynamischem SQL`` verstanden. Warum gibt es bei Programmiersprachen ohne dynamische Speicherverwaltung Probleme, dynamisches SQL zu verwenden? Lösungen: Dynamisches SQL ist dadurch gekennzeichnet, dass die Anweisungen erst zur Laufzeit bekannt sind und somit auch erst zur Laufzeit vom DBMS geprüft, übersetzt und ausgeführt werden können. Dies bedeutet, dass zur Übersetzungszeit die SQL-Anweisung nicht bekannt ist. Typische Anwendungsgebiete sind dafür interaktive Oberfläche die auf die Datenbank zugreifen. ??? Aufgabe 3 (20 Punkte) SS 1999 Was versteht man unter ,,dynamischem SQL``? Worin liegen die besonderen Probleme? Ist dynamisches SQL in jeder Umgebung einsetzbar? Lösung: Siehe Aufgabe 4 (20 Punkte) SS 1997 Aufgabe 9 (10 Punkte) WS 2000 Warum muss JDBC die Klasse ResultSet bereitstellen? Lösungen: Aufgabe: Ein ResultSet in Java dient dazu Ergebnistabelle auszulesen und in ein Objekt zu speichern. Über dieses Objekt ist es nun mögliche Werte der Ergebnistabelle auszuwerten und zu verabeiten. Funktionen: Ein Objekt der Klasse ResultSet entspricht dem Cursor-Konzept: beim Erzeugen durch executeQuery wird eine Menge von Ergebniszeilen ermittelt, der "Cursor" wird vor die erste Zeile dieser Menge gestellt. Mittels der boolschen Methode next wird die jeweils nächste Ergebniszeile bereitgestellt. Diese Methode liefert den Wert false, falls keine weitere Ergebniszeile vorhanden ist. Zugriffsmethoden getString, getInt usw. geben die Daten der gewünschten Spalte zurück. Die Spalte kann über einen Index oder über ihren Namen adressiert werden. Nach dem Auslesen einer Spalte kann mittels der Methode wasNull abgefragt werden, ob der NULL-Wert übergeben wurde. Aufgabe 2 (20 Punkte) SS 2000 Wie werden Transaktionen bei verteilten rel. DBMSen unterstützt? Lösungen: Transaktionen bei verteilten RDBMS wird von dem 2-Phasen-Commit-Protokoll unterstützt. Dieses Protokoll soll die Konsistenz gewährleisten: die auf den einzelnen Knoten laufenden Subtransaktionen werden alle gemeinsam durchgeführt oder verworfen. Das Protokoll kann vereinfacht so beschrieben werden: Der Knoten, der die globale Transaktion auslöst, - der Koordinator - schickt an alle beteiligten Knoten ein Prepare-to-commit. Die beteiligten Knoten informieren daraufhin den Koordinator, ob sie die Transaktion lokal durchführen können (Commit) oder verwerfen müssen (Abort), die Teiltransaktion wird jedoch noch nicht abgeschlossen, sondern wartet auf die Rückmeldung vom Koordinator. Erhält der Koordinator von allen Subtransaktionen die Meldung Commit, so sendet er diese Meldung an alle beteiligten Knoten zurück, die daraufhin das eigentliche Commit vollziehen. Erhält der Koordinator jedoch von einem Knoten die Meldung Abort, so fordert er alle beteiligten Knoten zum Abort auf. Aufgabe 4 (10 Punkte) SS 2000 Wie erfolgt in JDBC der Zugriff auf die Sätze einer Ergebnistabelle? Skizzieren Sie das Vorgehen. Lösungen: Siehe Funktionsteil Aufgabe 9 (10 Punkte) WS 2000 Aufgabe 1 (25 Punkte) WS 2001 Kann die folgende SQL-Anweisung in Embedded SQL dynamisch verwendet werden? Begründen Sie Ihre Aussage: SELECT nr, name INTO :nr,:name:i_name FROM t_kunde WHERE nr = :wert Vorausgesetzt wird dabei, dass nr Primärschlüssel der Tabelle t_kunde ist. Falls notwendig, nehmen Sie geeignete Korrekturen vor und schreiben Sie dann die benötigten Anweisungen, damit Ergebnisse mehrfach mit unterschiedlichen Werten ausgelesen werden können. Lösungen: Nein, da die SQL Anweisungen zunächst eingebettet werden müssen, um später mit Hilfe eines Cursors durch Schleifen abgearbeitet zu werden: EXEC SQL BEGIN DECLARE SECTION …; EXEC SQL End DECLARE SECTION; EXEC SQL DECLARE cursor_A CURSOR FOR SELECT nr, name FROM t_kunde WHERE nr = :wert; EXEC SQL WHENEVER NOT FOUND GOTO ENDE; EXEC SQL OPEN open_cursor_A; DO WHILE ('1'b); EXEC SQL FETCH cursor_A INTO :nr, :name:I_name; End; Aufgabe 6 (15 Punkte) SS 1998 Beschreiben Sie, wie eine Applikation mit eingebetteten SQL-Anweisungen auf ,,Exceptions`` des DBMS reagieren kann. Lösungen: Zur Ausführungszeit: Exception-Handling durch DBMS-Ausnahmen lassen sich (zumindest nicht direkt) vom Programm erkennen. Bei der Ausführung einer eingebetteten SQL-Anweisung gibt das DBMS über entsprechende Datenstrukturen einen Rückgabewert zurück, der Aufschluß darüber gibt, ob die Anweisung vom DBMS korrekt abgearbeitet wurde: SQLSTATE. Hierüber wird auch ermittelt, ob alle Ergebnisse einer SQL-SELECT-Anweisung ausgelesen wurden. Ein weiteres Hilfsmittel sind unter anderem die Indikatorvariablen. Zur Kompilierungszeit: prüft zur Laufzeit zusammen mit DBMS für jede eingebettete Anweisung: o ist Anweisung syntaktisch korrekt o sind alle referenzierten Objekte in DB vorhanden o sind Zugriffsrechte gegeben nach erfolgreicher Prüfung: o ersetzt Anweisung durch Quelltext und benötigte Datenstrukturen o ggf. ermitteln "optimalen" Zugriffspfad Aufgabe 6 (10 Punkte) SS 1998 Skizzieren Sie, wie mit eingebettetem SQL eine Tabelle zeilenweise gelesen wird. Zur Lösung gehört sowohl eine kurze Diskussion der benötigten Konzepte als auch eine Skizze der Anweisungen. Lösung: Siehe Aufgabe 1 (25 Punkte) WS 2001 Aufgabe 8 (25 Punkte) WS 1999 Die Schnittstelle CLI bietet Vorteile gegenüber Embedded SQL. Versuchen Sie diese Vorteile darzustellen. Lösung: Es wird eine sprach- und DBMS-unabhängige Schnittstelle von Prozeduraufrufen festgelegt. Damit verschwinden die Inkonsistenzen zwischen Hostsprache und SQL, aufgrund der Tatsache, dass nur noch die Hostsprache verwendet wird. Die SQL-Anweisungen werden zwar erst zur Laufzeit übersetzt (Bei Embedded zur Kompilierungszeit), es wird dazu aber nur das DBMS benötigt; die Bibliotheken sind DBMS- und sprachunabhängig und können damit von Software-Firmen als Object-Code problemlos weitergereicht werden, da ja die Prozeduraufrufe schließlich standardisiert sind. Der problemlose Zugriff auf mehrere DBMS wird für die Programme dadurch möglich. Ein gleichzeitiger Zugriff auf mehrere DBMS wird durch entsprechende Programmiersprache unterstützt. Auch das Debugging wird im Gegensatz zu Embedded SQL erleichtert, da kein zusätzliche Code von Precompilern erzeugt wird und nur die eigenen Code-Teile überprüft werden. Aufgabe 2 (15 Punkte) WS 1999 Warum wird trotz der Mächtigkeit von SQL Embedded SQL benötigt? Zeigen Sie an einem einfachen Beispiel, dass programmierte SQL-Anweisungen nötig sind. Lösung: SQL nicht berechnungsvollständig Verwendung der selber Standarddatentypen in DB und Anwendung Zur Zugriffsplanerzeugung o SQL Anweisungen werden optimiert o Im DBMS wird ein Zugriffsplan abgelegt und mit globalen Bezeichner versehen Aufgabe 8 (30 Punkte) 2001 Vergleichen Sie Embedded SQL und CLI. Vor- und Nachteile, Einsatz, ... Lösung: Struktur: embedded SQL Einbetten der SQL-Anweisungen in den Programm-Quelltext hat erweitertes Sicherheitskonzept durch Binden Verwendung eines Precompilers kann statisches SQL voroptimieren aber: Probleme bei der „Vermischung“ von Einbettung und Programmiersprache Call-Level-Interface wichtiger Standard Trennung zwischen SQL und Programmiersprache, (keine Inkonsistenz zwischen Hostsprache und SQL) wohldefinierter Übergabemechanismus zwischen Programm und CLI-Routine Implementation weitgehend Datenbank-unabhängig (wird nur DBMS benötigt) Unterstützung der SQL-Anweisung zur Laufzeit ist herstellerunabhängig hat erleichtertes Debugging Unterschiede: Vorteile CLI gegenüber E SQL Siehe Aufgabe 8 (25 Punkte) WS 1999 Nachteile CLI gegenüber E SQL durch das Binden kann eine weitere Sicherheitsstufe (Zugriffsrechte) eingebaut werden, bei statischem SQL sind bei manchen DBMS durch Voroptimierung effizientere Programme möglich, da bei CLI - wie bei dynamischem SQL - jede SQL-Anweisung erst vom DBMS übersetzt und optimiert werden muss. Aufgabe 7 (15 Punkte) WS 1999 Was ist Vorteil, wenn ein Precompiler einen Zugriffsplan erstellt und speichert, was ist der Nachteil dieses Vorgehens? Aufgabe 3 (15 Punkte) WS 1998 Was sind die Aufgaben eines Precompilers und wie arbeitet er? Lösung: Aufgaben: prüft zur Laufzeit zusammen mit DBMS für jede eingebettete Anweisung: o ist Anweisung syntaktisch korrekt o sind alle referenzierten Objekte in DB vorhanden o sind Zugriffsrechte gegeben nach erfolgreicher Prüfung: o ersetzt Anweisung durch Quelltext und benötigte Datenstrukturen o ggf. ermitteln "optimalen" Zugriffspfad Arbeitsweise: Überprüfung Ersetzen der eingebetteten SQL-Anweisungen durch programmierspezifischen Quellcode Einfügen von Code-Sequenzen (Prüfung der DBMS Rückgabewerte) Aufgabe 6 (10 Punkte) WS 1997 Welche Aufgaben hat ein SQL-Precompiler? Lösung: Aufgaben: o siehe Aufgabe 3 (15 Punkte) WS 1998 Aufgabe 3 (15 Punkte) SS 1997 Welche Ausnahmebedingungen kennt ein SQL-Precompiler überlicherweise? Lösung: Übliche Ausnahmen o NOT FOUND o Objekt ist leer o Objektzeiger befindet sich am Ende o SQLERROR o SQL- Anweisung fehlerhaft o DBMS informiert mit SQLSTATE>02 Wie erfolgt durch den Precompiler die Umsetzung der Ausnahmebehandlung? Lösung: Der Programmier muss dafür Sorge tragen, Ausnahmen abzufangen. Es bestehen dazu folgende Möglichkeiten: o GOTO label (Sprung) o Continue (Ignorant) Beschreiben Sie aus dieser Sicht heraus folgende Programmzeilen, bei denen das Lesen einer Tabellezeile in der Prozedur EINLESEN_AUS_SQLTABELLE vorgenommen werden soll und bei Erreichen des Tabellenendes die Verarbeitung an der Marke TABELLEN_ENDE_ERREICHT fortgesetzt werden soll: /* SQL-Ausnahmebedingung fuer Tabellenende wird hier gesetzt */ Do While('1'b); Call EINLESEN_AUS_SQLTABELLE; ... End; TABELLEN_ENDE_ERREICHT: ... Lösung: ... EXEC SQL WHENEVER NOT FOUND GOTO TABELLEN_ENDE_ERREICHT Aufgabe 6 (15 Punkte) SS 1996 Beschreiben Sie anhand einer Programmskizze, wie Sie mit Hilfe von SQL-Precompiler-Anweisungen Ausnahmebedingungen behandeln können. Welche Ausnahmebedingungen werden typischerweise erkannt? Beschreiben Sie hinsichtlich dieses Problems die Arbeitsweise des Precompilers. Lösung: Skizze : Aufgabe 1 (25 Punkte) WS 2001 Erläuterung : Aufgabe 3 (15 Punkte) SS 1997 Aufgabe 5 (30 Punkte) WS 1996 Skizzieren Sie eine in einer prozeduralen Sprache programmierte Anwendung, folgendes leisten soll: o Vorhanden sind die Tabellen o OFFENE_ZAHLUNGEN o KUNDEN_ID, o DATUM, o BETRAG, o BESTELLUNG o KUNDEN_ID, o BESTELL_ID, o DATUM, o WERT o BESTELLTE_WARE o KUNDEN_ID, o BESTELL_ID, o ARTIKEL_ID, o MENGE. Restriktion: Als Regel gilt einzuhalten, dass eine Bestellung für einen Kunden nur dann aufgenommen werden darf, wenn der Wert der Bestellung einschließlich des Betrages noch offener Zahlungen eine vorgegebene Summe (z.B. 5.000 DM) nicht überschreitet. Aufgabe: Benutzen Sie diese Programmskizze, um die Einbettung von SQL-Anweisungen und die Arbeitsweise des Precompilers zu erläutern. Lösung: Skizze : Aufgabe 1 (25 Punkte) WS 2001 Erläuterung : Vorbereitung: Zunächst wird eine Deklaration vorgenommen Dann wird die SQL Anweisung eingebettet und ein Cursor erzeugt Fehlerbhandlung eingefügt Mit Hilfe des Cursors wird dann auf die Datenbank zugegriffen Compiler: Aufgabe 6 (10 Punkte) WS 1997 Aufgabe 4 (10 Punkte) SS 1999 Bei der Installation des DBMS wurde die Partition für das Dictionary auf dem gleichen Laufwerk installiert wie die Partition für den Log. Welche Effekte sind zu erwarten? Lösung: Bei der Installation ist es normalerweise das Ziel DBMS, Dictionary und Logs voneinander zu trennen. Dies wird vordergründig aus Sicherheitsgründen (Datensicherheit), Backupgründen (Ausfallsicherheit) und Perfomancegründen getan. Dadurch, dass das LOG sich nun auf dem gleichen Laufwerk wir das Dictionary befindet, würde beim einem HW-Ausfall/LW-Ausfall nur noch ein vollständiges Backup (Zeitkosten) helfen. Außerdem würden im laufendem Betrieb die physikalischen Grenzen des Laufwerks für Performanceprobleme sorgen. IO Engpässe wären dadurch zu erwarten. Aufgabe 3 (10 Punkte) WS 1996 Ein Datenbankadministrator hat eine Datenbank mit Dual Logging eingerichtet. Beide Logs werden auf dem gleichen Laufwerk erzeugt, auf dem auch das Directory der Datenbank gespeichert ist. Wozu dient Logging und insbesondere Dual Logging? Lösung: Logging protokolliert alle Datenbankveränderungen. Durch diese Protokollierung ist es möglich ältere Datenstände (Im Backupfall) auf den aktuellen Stand zu bringen. Eine erhöhte Sicherheit birgt das DualLogging (Spiegelung von Daten) bzw. Logging auf externen Medien. (Backup wird auslagert)! Was würden Sie dem DBA raten? Lösung: Gründe siehe Aufgabe 4 (10 Punkte) SS 1999 Aufgabe 3 (20 Punkte) SS 1996 Abweichend von dem logischen Datenbankentwurf wird bei der physischen Implementierung eine Tabelle vertikal zerlegt. Wann wird ein solches Vorgehen vorteilhaft sein? Welche Konsequenzen für die entstehenden Tabellen hat es? Lösung: Die vertikale Partitionierung erfordert eine Strukturänderung. Von der Anwendung häufig genutzte Spalten werden in einen separaten Tabelle zusammengefasst. Die restlichen Spalten erhalten eine weitere eigene Tabelle. Dadurch müssen die Schlüsselspalten in den Partitionen wiederholt werden. Dadurch wird der Datenmengenfluss reduziert, da meist nur noch gefragte Spalten übertragen werden. Auch eine Verlagerung der Partitionen auf schnellere/langsamere Laufwerke ist vorteilhaft. Durch weniger IOs wird ein weiterer Geschwindigkeitsvorteil erzielt. Partitionsübergreifende Zugriffe setzen jedoch einen Join voraus und werden dadurch erheblich teurer. Diese Art der Zerlegung ist deshalb sehr sorgfältig zu planen. Aufgabe 4 (25 Punkte) WS 1998 Oracle und DB2 unterscheiden sich hinsichtlich des Zeitpunktes, zu dem der Zugriffsplan erstellt wird. Was sind die Vor- und Nachteile der beiden Methoden? Aufgabe 5 (20 Punkte) SS 1997 Warum benötigen Datenbanksysteme Sperrmechanismen? Lösungen: Sperrmechanismen werden benötigt, um die Transaktionskonsistenz sicherzustellen. Ohne Sperrmechanismus könnten folgende Fehler auftauchen Verlorene Änderungen (lost updates): zwei Transaktionen greifen "gleichzeitig" auf ein Datenobjekt zu, um es zu ändern; nur die Auswirkung der zweiten Transaktion bleibt sichtbar, die Änderung der ersten Transaktion geht verloren. Transaktionen heissen serialisierbar, wenn dieses Phänomen nicht auftreten kann. Schmutziges Lesen (dirty read): eine lesende Transaktion greift auf ein Datenobjekt zu, das von einer zweiten Transaktion verändert wurde; anschließend wird die zweite Transaktion zurückgesetzt, der ursprüngliche Wert des Datenobjekts wieder hergestellt; die lesende Transaktion enthält somit inkonsistente Werte, sie ist in keiner Weise gegen andere Transaktionen isoliert. Inkonsistentes Lesen (inconsistent reads): die lesende Transaktion ist gegen Änderungen anderer Transaktionen an den Daten, auf die gerade ihr Cursor zeigt, geschützt. Andererseits können bereits gelesene Daten, die der Cursor wieder freigegeben hat, von einer anderen Transaktion geändert werden. Wird das Lesen von der ersten Transaktion wiederholt, so werden die geänderten Daten gefunden. Diese Isolationsstufe heißt READ COMMITTED. Lesen von Phantomen (phantom reads): eine Transaktion liest Daten, während eine andere Transaktion neue Daten einfügt, die der Suchbedingung der ersten Transaktion genügen. Wird nun die zweite Transaktion mit COMMIT beendet und die erste Transaktion öffnet erneut den Cursor, so findet sie die neuen Zeilen vor. Kann nur dieses Phänomen auftreten, so heißt der Isolierungsgrad REPEATABLE READ. Die Sperren werden in der Regel in einer Sperrtabelle vermerkt, die für eine Sperre zumindest folgende Information enthalten muss: die Transaktionsnummer zur Identifizierung der Transaktion, das gesperrte Objekt und die Art der Sperre. Beim Übergang zu einem verteilten DBMS wäre bzgl. der Deadlockerkennung ein zentral verwalteter Sperrmechanismus scheinbar sinnvoll. Warum werden dennoch die Sperrmechanismen üblicherweise nur lokal implementiert? Lösung: o Eine Sperrtabelle für mehrere Datenbanken würde zu o Performanceprobleme führen o Konflikten zwischen den Datenbanken führen Aufgabe 3 (15 Punkte) SS 1999 Der SQL92-Standard enthält noch keine Standardisierung für Trigger, dies ist für SQL3 geplant. Begründen Sie, wofür Trigger wichtig sind. Lösung: Trigger werden dazu benutzt zusammen mit Einschränkungen Integritätsregeln zu unterstützen, automatisch Datenbankkonvertierungen vorzunehmen, Warnungen zu erzeugen, Daten zugleich in anderen Tabellen einzutragen oder zu verändern. o Zum Replizieren von Änderungen o Komplexe Geschäftsregeln nachzubilden die über referentielle Integrität hinausgehen o Zum Protokollieren von Änderungen o Automatische Erzeugung redundanter Informationen o Datenschutz Aufgabe 2 (20 Punkte) SS 1999 Was ist ein Trigger? Lösung: Aufgabe 3 (15 Punkte) SS 1999 Welche Bedeutung hat der für Oracle spezifische Trigger INSTEAD OF? Lösung: o Primärtabelle verteilen Änderungen asynchron an alle Replikate. o Replikate wiederum richten die Änderungsmitteilung mit Hilfe des INSTEAD OF-Triggers an die Primärtabelle Aufgabe 9 (15 Punkte) SS 1999 Die Datenverarbeitung der Firma, aus der die vorstehende Aufgabe einen kleinen Ausschnitt betrachtet, wird in einer vernetzten Umgebung durchgeführt. Während die Aufgaben der Lagerhaltung (siehe oben) auf einem Rechner durchgeführt werden, werden die Daten des Verkaufs auf einem anderen Rechner gehalten. Der Verkauf benötigt insbesondere aktuelle Daten über die Menge der vorhandenen Waren (also einen Ausschnitt aus der obigen Tabelle LAGER). Welche Möglichkeiten der Verwirklichung schlagen Sie vor? Aufgabe 3 (15 Punkte) WS 2000 Wozu werden Sperrtabellen von einem DBMS eingesetzt? Lösung: Aufgabe 5 (20 Punkte) SS 1997 Was ist bei einem verteilten DBMS der Vor- und Nachteil einer zentralisierten Sperrtabelle? Lösung: Eine zentrale Sperrtabelle bietet den Vorteil, dass die Synchronisation der Transaktionen wie in einem lokalen System erfolgt, jedoch den gravierenden Nachteil, dass für jede Sperranforderung der Aufbau einer Kommunikation zum zentralen Knoten erfolgen muss; zudem verlieren die anderen Knoten ihre Autonomie Welchen Nachteil hat in diesem Falle der Einsatz rein lokaler Sperrtabellen? Lösung: Das Problem liegt darin, dass nun globale Deadlocks auftreten können, die durch die lokal arbeitenden Sperrmanager nicht mehr erkannt werden können. Aufgabe 5 (20 Punkte) 2001 Was versteht man unter ,,Replikation``, wie kann dies sinnvoll eingesetzt werden? Lösung: Replikation bedeutet, dass ein Datenobjekt mehrfach gespeichert wird. Dies steht im Widerspruch zur Redundanzfreiheit der Datenbasis: jeder Fakt wird genau einmal gespeichert. Der Grund für Replikation liegt in dem Ziel der besseren Erreichbarkeit von Daten. Replikation - oder das Verlassen des Grundsatzes der Redundanzfreiheit - kann auch bei einem zentralen DBMS benutzt werden, um die Performance zu steigern: Daten, auf die von vielen Anwendungen "parallel" üblicherweise nur lesend zugegriffen wird, können z.B. mehrfach gespeichert werden. Eine besondere Rolle spielt Replikation aber in verteilten DBMS. Wird in einem verteilten DBMS in einer Transaktion auf Datenobjekte zugegriffen, die auf einem entfernten Rechner liegen, so treten folgende Probleme auf: o In der Regel hat man mit einer - im Vergleich zu den übrigen Operationen - langsamen Verbindung zu tun, es muss eine Kommunikation zwischen den Rechnern aufgebaut werden, die Transaktion dauert lange: die Daten sind "schwer" erreichbar. o Zusätzlich kann noch der entfernte Rechner stark belastet sein, was ebenfalls die Daten schlecht erreichbar macht. o Ist die Verbindung zusammengebrochen, so kann die Transaktion nicht durchgeführt werden: die Daten sind nicht erreichbar Als Vorteil ist jedoch anzusehen, dass die Transaktion immer aktuelle Daten erhält. Aufgabe 5 (25 Punkte) WS 2000 Wozu wird Replikation eingesetzt? Lösung: Aufgabe 5 (20 Punkte) 2001 Was versteht man unter dem ,,Primary Copy`` Verfahren? Lösung: Beim Primary-Copy Verfahren erhalten alle Replikate eines Datenobjekts (Tabelle) die Änderungsinformationen asynchon von einem ausgezeichneten Knoten. Jede Änderung dieses Datenobjekts darf deshalb nur auf diesem ausgezeichneten Knoten erfolgen (Primärkopie). Schließt eine Transaktion die Änderung der Primärkopie erfolgreich ab, so übernimmt der Primärknoten die Verteilung der Änderungsinformation an alle Knoten, die Replikate dieses Objektes tragen. Die Wahl des Ortes der Primärkopie beeinflusst den Kommunikationsaufwand. Der Kommunikationsaufwand wird weiter verringert, wenn Änderungsinformationen auf dem Primärknoten lokal gesammelt und verzögert gebündelt an die anderen Knoten verteilt wird. Damit sinkt allerdings die Aktualität der Replikate. Je nach Anforderung bzgl. der Aktualität können Transaktionen beim Lesezugriff unterschiedliche Methoden eingeschlagen: o o o Lesen von der Primärkopie - Vorteile der Replikation verschwinden völlig Anfordern einer Lesesperre auf der Primärkopie, lokales Lesen - Nachteile nahezu wie im ersten Fall rein lokales Lesen - Vorteile der Replikation werden ausgeschöpft, auf Aktualität wird aber verzichtet Nachteil dieses Verfahrens liegt in der zentralen Stellung des Primärknotens. Ausfall des Primärknotens verhindert Änderungstransaktionen. Versuchen Sie zu begründen, warum alle namhaften Hersteller relationaler verteilter DBMS zumindest dieses Replikationsverfahren implementieren. Lösung: o Einfachheit o Ausfallsicherheit o Weit verbreitet Aufgabe 1 (20 Punkte) SS 2000 Wie unterstützen die bekannten rel. DBMS Transaktionen? Was erfolgt implizit, was wird üblicherweise abweichend von der SQL-Standardisierung - zusätzlich zur Verfügung gestellt? Lösung: o unterstützt werden Atomarität, Konsistenz, isolierte Zurücksetzbarkeit, Dauerhaftigkeit o Implizit werden Sperren angelegt. Diese sind im SQL-Standard enthalten. Explizit werden Logs verwendet o Lock in shared Mode (Sperren zum Lesen) o Exclusive Lock (Sperren zum Schreiben) Aufgabe 3 (30 Punkte) SS 2000 Die Abteilungen Einkauf, Lagerverwaltung und Verkauf haben drei vernetzte Rechner, auf denen eine verteilte DBMS-Anwendung läuft. Eine der Tabellen hat die Gestalt CREATE TABLE gelagerteWare (warenNr CHARACTER(8), lagerort CHARACTER(8), menge INTEGER, PRIMARY KEY (warenNr, lagerort) ) Die Abteilung Einkauf muss lesend auf die Information zugreifen. Lagerverwaltung und Verkauf müssen auf die jeweils aktuelle Information lesend sowie schreibend zugreifen, dabei kommen 75% der Zugriffe von Lagerverwaltung. Wie würden Sie in diesem Falle Replikation einsetzen? Begründung? Lösung: Der Einkauf bekommt asynchrones Replikat mit Primary Copy. Der Verkauf und die Lagerhaltung bilden ROWA mit dem Problem, dass wenn ein Server ausfällt keine globales COMMIT mehr erfolgen kann. Aufgabe 4 (25 Punkte) WS 2000 Wozu dienen ,,Optimistische Synchronisationsverfahren``? Lösung: Der Ansatz optimistischer Verfahren liegt darin, dass vorbeugende Sperren als unnötiger Aufwand angesehen werden. Dieser Standpunkt kann nur dann eingenommen werden, wenn Transaktionskonflikte auf Grund der Natur des Problems sehr selten auftreten. Dadurch werden DEAD LOCKS vermieden Derartige Synchronisationsverfahren greifen nicht in den Ablauf einer Transaktion ein. Bei Transaktionsende wird überprüft, ob ein Konflikt aufgetreten ist; sollte ein Konflikte aufgetreten sein, so muss auch in diesem Falle eine Transaktion zurückgesetzt werden. Diese Verfahren sind Deadlock-frei und haben nur geringen Kommunikationsaufwand. Allerdings ist im Gegensatz zu Sperrverfahren mit mehr Rücksetzungen von Transaktionen zu rechnen. Aufgabe 8 (25 Punkte) SS 2000 Was sind ,,Optimistische Synchronisationsverfahren``? Gibt es Situationen, in denen Sie diese Verfahren für besonders geeignet halten? Lösung: Siehe Aufgabe 4 (25 Punkte) WS 2000 Lösung: Anwendungsbereiche (Folien S. 62); geeignet für Datawarehouse Aufgabe 6 (15 Punkte) SS 1999 Was bewirkt ein COMMIT? Beschreiben Sie dies zunächst für die einfache Form, sodann für den Fall des ZweiPhasen-Commits. Lösung: Durch einen Commit wird eine Transaktion beendet. Dadurch werden die Veränderungen, die durch die Transaktion ausgelöst wurde, für alle Datenbankanwender sichtbar. Der Zwei-Phasen-Commit übernimmt die Aufgabe eines Commits in einem verteilten Datenbanksystem. Müssen durch eine Transaktion Veränderungen an mehreren Knoten vorgenommen werden, so müssen alle Knoten diese Änderung durchführen oder ablehnen. In der ersten Phase wird die Bereitschaft der Knoten geprüft und sichergestellt und in der zweiten Phase wird jeder Knoten aufgefordert den Commit durchzuführen. Aufgabe 4 (20 Punkte) WS 1999 Was wird durch die Anweisung COMMIT bewirkt? Lösung: Aufgabe 4 (15 Punkte) SS 1999 Aufgabe 4 (20 Punkte) 2001 Was versteht man unter dem 2-Phasen-COMMIT-Protokoll? Ist der Ausdruck ,,2-Phasen-Sperrprotokoll`` nur eine andere Umschreibung oder wird damit etwas Anderes zum Ausdruck gebracht? Lösung: 2-Phasen-Commit-Protokoll 1. der Koordinator schickt an alle an der Transaktion beteiligten Knoten die Meldung Prepare-to-commit 2. die Knoten informieren daraufhin den Koordinator, ob sie die Transaktion lokal durchführen können (Commit) die Transaktion verwerfen müssen (Abort) 3. die jeweilige Subtransaktion wird jedoch noch nicht vollzogen, vielmehr warten die Knoten auf die endgültige Mitteilung des Koordinators 4. der Koordinator sammelt alle Rückmeldungen auf und informiert die Knoten: falls alle Rückmeldungen Commit lauten, mit der Meldung Commit falls wenigstens eine Rückmeldung Abort lautet, mit Abort 5. die Knoten vollziehen ihre Aktion auf Grund der endgültigen Meldung des Koordinators Zwei-Phasen-Sperrprotokoll: Phase 1: Eine Transaktion belegt jedes Datenobjekt, auf das sie zugreift, mit einer entsprechenden Sperre Phase 2: Nach Freigabe der einer Sperre darf die Transaktion keine weiteren Sperren anfordern d.h. in der ersten Phase werden alle Sperren angesammelt und nach erfogten Änderungen in der zweiten wieder freigegeben. Am einfachsten zu implementieren: Freigabe aller Sperren am Ende der Transaktion Sperren werden in Sperrtabelle vermerkt, Einträge müssen zumindest enthalten Transaktionsnummer gesperrtes Objekt Art der Sperre Zugriff auf Sperrtabelle muss exklusiv erfolgen bei verteilten Systemen könnte zentrale Sperre verwendet werden Vorteil: Synchronisation der Transaktionen wie im lokalen System Nachteile: Kommunikation zum zentralen Knoten sowie Autonomieverlust der übrigen Knoten dezentrale Sperrtabellen: jede Transaktion fordert bei dem jeweiligen lokalen Sperrmanager Sperren an Problem: globale Deadlocks Aufgabe 6 (20 Punkte) WS 1996 In der Vorlesung wurde diskutiert, warum man bei verteilten DBMS zur Identifizierung einer Tabelle nicht den Knotennamen derjenigen DB verwenden möchte, an dem die Tabelle zur Zeit gespeichert ist. Versuchen Sie eine kurze Begründung zu geben und erläutern Sie, warum zur Zeit die meisten DBMS-Hersteller dennoch diesen Weg gehen. Lösung: Die meisten DBMS-Hersteller benutzen zur Identifizierung ihrer verteilten Tabellen heutzutage die Domäne. Die Domäne setzt sich zusammen aus Katalog-, Schemata- und Objekt-Name und ist damit innerhalb einer DBUmgebung eindeutig. Zudem wird der Knoten über die I-Domäne adressiert. Diese Kombination ist weltweit eindeutig. Wenn sich der Knotenname ändert, entsteht dann aber auch eine neue ID, was ein Problem darstellt. Die DBMS-Hersteller benutzen dieses Verfahren, da als Kommunikationsmedium das I-Net dient. Es wird also auf die I-Net-Adressierung aufgesetzt. Aufgabe 7 (25 Punkte) 2001 Begründen Sie, warum man bei einem Datawarehouse-Design häufig auf Normalisierung verzichtet. Skizzieren Sie eine dafür geeignete Datenstruktur. Beschreiben Sie möglichst viele Möglichkeiten, Informationen aus dem OLTP-System in ein Datawarehouse zu bringen. Lösung: Auf Normalisierung wird häufig verzichtet, um keine teueren Joins bei Lesezugriffen zu haben. [Tabellen werden deswegen nicht vollständig normalisiert, da die nachfolgenden Normalformen zu einer Aufblähung der Datenbank in Form weiterer Tabellen führen würden. Dies hätte zur Folge, dass man vermehrt auf Joins zurückgreifen müsste. Da ein Join eine teure Operation ist, würde dies die Performance des Systems beeinträchtigen. Ein Nachteil des Normalisierungsverzichts ist die redundante Datenspeicherung] Dies wird aber in Kauf genommen. Realisiert wird dies durch das Star-Schema. [HTML Doku] OLTP->Datawarehouse Sicherung einspielen komplette DB kopieren mit allen Dateien und Verzeichnissen. Das Dictionary muss dann auf dem Zielrechner noch angepasst werden. Einspielen über Export- und Importmechanismen Direkter Zugriff auf DB mit CREATE, SELECT etc. Flat Filesystem wird unterstützt Aufgabe 3 (20 Punkte) WS 2001 Warum kann man bei den Erweiterungen von Oracle bislang nicht von Objekt-Orientiert, sondern nur von Objekt-Relational sprechen? Lösung: objekt-relational o keine vollständige Datenkapselung o keine OID o keine Vererbung o OR-Mapping Aufgabe 9 (15 Punkte) SS 2000 Gibt es (bislang noch) Vorteile rel. DBMS gegenüber OODBMS? Lösung: schnell, weitverbreitet optimiert standardisiert, Aufgabe 8 (20 Punkte) WS 2000 Geben Sie Begründungen, warum es zur Entwicklung von OODBMS kam. Lösung: Durch den vermehrten Einsatz von Anwendungen im wissenschaftlich-technischen Bereich - z.B. CAD, BüroInformationssysteme, GIS, Multimedia-Systeme usw. - die ebenfalls DBMS-Unterstützung verlangen, verschieben sich die Anforderungen: Modellierung komplexer Objekte und Datentypen, ggf. Modellierung von Verhalten, d.h. objekt-spezifische Methoden, die durch das Datenmodell beschreibbar sind. Dies führt zu bekannten OO-Forderungen: Typdeklarationen sollen ähnlich wie in Programmiersprachen aufgestellt werden können, d.h. Strukturen sollen beliebig verschachtelt werden können, Information soll wiederverwendet werden können: bereits vorhandene Information soll durch Referenzierung zu neuer Information aggregiert werden können, durch Vererbung sollen Spezialisierungen gebildet werden können. Entitäten können mit speziellem "Verhalten" ausgestattet werden, die jeweiligen Operationen (Methoden) werden exklusiv an diese gebunden, eine hierarchische Vererbung von Struktur und Verhalten soll ermöglicht werden. Darüber hinaus ist wünschenswert, dass Struktur sowie Verhalten erweiterbar ist, Objektidentität unterstützt wird und eine einheitliche Sprache für Daten-Definition, -Manipulation, -Verwaltung und AnwendungsProgrammierung existiert Wo könnten zur Zeit noch Vorteile von rel. DBMS liegen? Lösung: schnell, weitverbreitet optimiert standardisiert, Aufgabe 7 (10 Punkte) WS 2000 Was bedeutet ,,Objekt-Identität``? Skizzieren Sie ein Beispiel, anhand dessen Sie zeigen können, dass dies in einer rel. DB nicht gegeben ist. Lösung: Beim relationalen Ansatz ist nicht direkt entscheidbar, ob zwei Objekte "gleich" oder "identisch" sind, in manchen Fällen muss dazu erst ein künstlicher Schlüssel eingeführt werden. Objekt-Identität vermeidet diese Schwierigkeit: gleiche Objekte werden als zwei Objekte mit gleichen Werten erkannt. Im Gegensatz zum "künstlichen" Schlüssel handelt es sich bei Objekt-Identität um eine systemseitig bereitgestellte Eigenschaft. Beispiel siehe Aufgabe Aufgabe 8 (20 Punkte) WS 2000 Aufgabe 3 (20 Punkte) SS 1998 Für das Studentensekretariat wird eine Tabelle Stud mit folgender Struktur eingerichtet: Matrikelnummer Char( 7), Name Char(30), HStrasse Char(20), HPLZ Char( 5), HOrt Char(20), ... Um den Zugriff, der alternativ über die Matrikelnummer oder über den Namen erfolgt, zu beschleunigen, soll folgender Index eingerichtet werden: CREATE INDEX IStud ON Stud (Matrikelnummer, Name) Kommentieren Sie den Vorschlag. Lösung: Die angegebene Lösung stellt keine Optimierung da. Es sollen zwei komplementäre Ziele über einen Index optimiert werden, was nicht funktioniert. Alternativ sollten zwei einzelne Indexe einerseits über Matrikelnummer und andererseits über Name eingerichtet werden. Aufgabe 2 (30 Punkte) SS 1998 Stellen Sie sich vor, Studenten- und Prüfungssekretariat würden ihre Daten in einer verteilten DB-Anwendung auf zwei vernetzten Rechnern halten. Im Studentensekretariat muss unter anderem auf die Information Matrikelnummer, Name, Heimatanschrift, aktuelle Studienanschrift (mit Gültigkeitsdatum), vorherige Studienanschrift zugegriffen werden können. Die Daten müssen dort auch geändert werden können. Das Prüfungssekretariat muss neben den eigenen Daten nur auf Matrikelnummer, Name zugreifen können. Machen Sie alternative Vorschläge, wie die Daten auf den Rechnern verteilt und Inkonsistenzen ausgeschlossen werden können, und diskutieren Sie Vor- und Nachteile Ihres Vorschlages. Lösung: Das Studentensekretariat arbeitet auf der Original-Tabelle, wobei Ihnen voller Zugriff ermöglicht wird. Das Prüfungssekretariat erhält ein Replikat dieser Tabelle, allerdings nur der Spalten Matrikelnummer und Name mit lesendem Zugriff plus einer Tabelle mit der Spalte Matrikelnummer und ihren eigenen Daten mit vollem Zugriff. Dies birgt mehrere Vorteile. Es können nun Namensänderungen vom Studentensekretariat vorgenommen werden, ohne das dadurch die Datentabelle des Prüfungsamtes editiert werden muss. Es kann zu keinen Inkonsistenzen kommen, da Änderungen nur aus einer Richtung vorgenommen werden. Der Datenschutz ist gewährt. Aufgabe 5 (15 Punkte) SS 1998 Was besagt der Transaktionsbegriff? Wie wird er in heute üblichen DBMSen unterstützt? Entstehen durch diese Unterstützung ggf. andere Probleme? Lösung: Eine Transaktion ist eine logisch zusammenhängende Menge von Update-Operationen auf der Datenbank, die entweder ganz oder gar nicht ausgeführt werden. Basis der Transaktionen ist wiederum das ACID-Prinzip: - Atomarität Eine Transaktion ist unteilbar. Sie wird ganz oder gar nicht ausgeführt. Müssen Transaktionen abgebrochen werden, wird die Datenbank in den konsistenten Zustand vor Beginn der Transaktion zurückgesetzt. Erst nach Abschluss oder Rücksetzen einer Transaktion ist der geänderte Zustand der Datenbank für andere Nutzer verfügbar. - Konsistenz Transaktionen müssen alle Integritätsbedingungen einhalten oder sie werden zurückgesetzt. - Isolation Transaktionen werden isoliert von anderen Transaktionen bearbeitet. Die Daten, auf denen sie operieren sind immer konsistent. - Dauerhaftigkeit Datenänderungen einer Transaktion nach deren Beendigung bleiben erhalten (auch wenn dann ein Systemabsturz erfolgt.) Es besteht die Gefahr der Deadlocks, dh. dass zwei gleichzeitig ausgeführte Transaktionen darauf warten das jeweils die andere ihre Sperren auflöst. Aufgabe 1 (30 Punkte) SS 1998 Erläutern Sie den Begriff ,,Zugriffspfad``. Welche Komponenten eines DBMS sind dafür zuständig? Welche Vorbzw. Nachteile hat die Speicherung eines Zugriffspfades? Welche organisatorischen Maßnahmen müssen getroffen werden, wenn ein Zugriffspfad gespeichert wird? Lösung: Der Zugriffspfad adressiert einen Datensatz auf höhere Ebene. Die mengenorientierte Komponente optimiert den Zugriffspfad entweder regel- oder kostenbasiert. Je nach DBMS kann der Zugriffspfad ermittelt und in der DB gespeichert werden, damit entfällt das Berechnen während der Ausführungsphase. Einzig Rechte müssen noch überprüft werden. Mit der Speicherung des Zugriffspfades sind aber auch Wartungsaufgaben verbunden. Folgende Fragen könnten sich ergeben: Ist der Zugriffspfad noch gültig? Wenn der Datensatz aus der Datenbank entfernt wurde, sollte natürlich auch der Zugriffspfad aus dem Speicher genommen werden. USW. Aufgabe 4 (25 Punkte) SS 1998 Skizzieren Sie, welche Überlegungen in System R dazu führten, dass die Knoten, an denen sich Tabellen derzeit befinden, nicht spezifiziert werden müssen Aufgabe 4 (15 Punkte) SS 1996 Wozu dient das COMMIT-Statement? Warum und in welcher Form muss COMMIT für den Einsatz in einer verteilten Datenbank-Anwendung erweitert werden? Lösung: Siehe Aufgabe Aufgabe 6 (15 Punkte) SS 1999 Aufgabe 3 (20 Punkte) WS 1997 Warum muss in SQL eine Anweisung wie COMMIT bereitgestellt werden? Begründen Sie, warum für verteilte DBMS die ursprüngliche Wirkung des Kommandos nicht mehr ausreicht und erläutern Sie die Wirkung des geänderten Kommandos. Lösung: Ein lokales Commit kann in einer globalen DB-Umgebung zur Entscheidungsfindung nicht benutzt werden, da es global nicht ausreicht wenn ein Knoten der Transaktion zustimmt. Zur globalen Entscheidungsfindung werden zum Beispiel Mehrheitssysteme oder auch Einstimmigkeitssysteme benutzt. Das üblicherweise verwendete Protokoll ist das Zwei-Phasen-Commit-Protokoll. Dieses Protokoll kennzeichnet für jede Transaktion einen Knoten besonders aus, wobei derjenige Knoten "Koordinator" ist, an dem die Transaktion gestartet wird. Abschluss der Transaktion: der Koordinator schickt an alle an der Transaktion beteiligten Knoten die Meldung Prepare-to-commit die Knoten informieren daraufhin den Koordinator, ob sie o die Transaktion lokal durchführen können (Commit) o die Transaktion verwerfen müssen (Abort) o die jeweilige Subtransaktion wird jedoch noch nicht vollzogen, vielmehr warten die Knoten auf die endgültige Mitteilung des Koordinators der Koordinator sammelt alle Rückmeldungen auf und informiert die Knoten: o falls alle Rückmeldungen Commit lauten, mit der Meldung Commit o falls wenigstens eine Rückmeldung Abort lautet, mit Abort o die Knoten vollziehen ihre Aktion auf Grund der endgültigen Meldung des Koordinators Aufgabe 5 (10 Punkte) SS 1998 Warum reicht für ein verteiltes DBMS nicht die Funktionalität des Commit für nicht verteilte DBMSe aus, um Transaktionen zu gewährleisten? Lösung: Siehe Aufgabe 3 (20 Punkte) WS 1997 Aufgabe 5 (15 Punkte) WS 1999 Gilt die Beziehung AVG(sp) = SUM(sp)/COUNT(sp)? Begründen Sie Ihre Aussage. Diese Beziehung gilt nicht, da das Statement Count(sp) nicht zulässig ist. Eine Count-Anweisung kann nur auf alle Datensätze einer Tabelle angewendet werden und nicht auf eine Ergebnismenge. Aufgabe 7 (25 Punkte) SS 1999 Warum kann ein Query-Optimizer bei einer AND-Verknüpfung Indexe einsetzen, bei einer OR-Verknüpfung hingegen (in der Regel) nicht? Zwei Tupel T1(1,0) und T2(1,1) sind angesichts einer OR-Verknüpfung gleichwertig, bei einer ANDVerknüpfung ist allerdings T2 besser als T1, wodurch eine Reihenfolge ablesbar wird. Eine Reihenfolge festlegen zu können , ist Voraussetzung um einen Index einzurichten. Aufgabe 8 (25 Punkte) SS 1999 In einem Regallager wird pro Lagerplatz, der durch Regalnummer (R_NR) und Fachnummer (F_NR) eindeutig gekennzeichnet ist, höchstens eine Ware gelagert. Die Ware wird durch eine Warennummer (WID) eindeutig gekennzeichnet. Jede Ware wird, sofern vorhanden, an nur einem Lagerort gelagert. Die Information wird in einer Tabelle gehalten, die durch CREATE TABLE LAGER ( R_NR SMALLINT, F_NR SMALLINT, WID CHARACTER( 5) UNIQUE, MENGE SMALLINT, .... PRIMARY KEY (R_NR, F_NR), FOREIGN KEY (WID) REFERENCES ...) vereinbart ist. Um direkten Zugriff sowohl über Regal und Fachnummer als auch über die Warennummer zu erhalten, wird folgender Index vereinbart: CREATE INDEX ILAGER ON LAGER (R_NR, F_NR, WID) Ihr Kommentar? Aufgabe 1 (10 Punkte) WS 2000 In einer rel. DB ist eine Tabelle test folgendermaßen vereinbart: CREATE TABLE test ( schluessel INT PRIMARY KEY, wert INT UNIQUE ). Was geschieht, wenn nach dem Anlegen der Tabelle mit folgenden zwei Anweisungen Daten in die Tabelle eingefügt werden sollen: INSERT INTO test VALUES ( 1, NULL ) INSERT INTO test VALUES ( 2, NULL ) Begründen Sie Ihre Aussage. Schon beim Einfügen des ersten INSERT-Statements wird uns das DBMS eine Fehlermeldung liefern („Einstelliges Tupel erwartet“). NULL ??? Aufgabe 2 (20 Punkte) WS 2000 Eine rel. DB enthält eine Tabelle mit folgender Definition: CREATE TABLE demo ( sp1 INT NOT NULL, sp2 INT NOT NULL, w1 CHAR(120), w2 CHAR(120), PRIMARY KEY ( sp1, sp2 ) ) Der DB-Administrator entscheidet sich aus gewissen Gründen dafür, diese Tabelle vertikal zu zerlegen. Beantworten Sie bitte folgende Punkte: 1) Wie sieht die neue Struktur aus? 2) Was muss der DB-Admin machen, damit die SQL-Anweisungen in den Anwendungen weiterhin funktionieren? 3) Wo sind besondere Probleme zu erwarten? 4) Welche Möglichkeiten bietet Ihnen eine neuere Oracle-Version diesbezüglich? 1) Mit der vertikalen Zerlegung entstehen zwei Tabellen die jeweils die Spalten SP1 und SP2 als Primary Key und die Spalte w1 bzw. w2 haben. 2) Der DB-Admin sollte falls möglich benutzerabhängige Views zum Bearbeiten der Tabellen einrichten. 3) Lösungsansatz wird derzeit von relationalen DBMS nicht unterstützt. 4) Referenzen? Aufgabe 2 (15 Punkte) WS 2001 Warum stellen rel. DBMS die LOCK-Anweisung bereit? Lösung: Da mehr als ein Benutzer (DB Anwendung) gleichzeitig auf die im DBMS verwalteten Daten zugreifen darf, muss aufgrund dieser Zugriffs-Parallelität sichergestellt sein, dass nicht zwei Benutzer gleichzeitig änderend auf den gleichen Datensatz zugreifen können. Dies wird durch die Lock-Anweisung in Form einer Sperre realisiert. Diese Sperre hinderte einen User daran auf Datensätze zurückzugreifen, die gerade durch einen anderen geändert wird oder beabsichtigt wird diese zu ändern. Aufgabe 2 (15 Punkte) WS 1996 Sie stehen vor dem Problem, eine Anwendungsentwicklung mit Hilfe eines relationalen DBMS durchzuführen. Dabei soll eine Abhängigkeit vom jeweiligen DBMS-Hersteller weitgehend vermieden werden. Worauf sollten Sie achten, was sollten Sie vermeiden? Lösung: Bei der Anwendungsentwicklung sollte der Datenbankzugriff als Modul gekapselt werden und auf das Standard SQL92 aufbauen, wobei keine DBMS-Optimierungen eingebaut werden sollten. Darüber hinaus kann eine einheitliche Struktur wird über externe Sichten realisiert werden. Intern wird die Realisierung den einzelnen DBHerstellern überlassen. Aufgabe 1 (20 Punkte) SS 1996 Was bedeutet ,,referentielle Integrität``. Diskutieren Sie diesen Begriff und seine Bedeutung für den logischen Entwurf einer Datenbank. Referential integrity is a feature of Oracle that ensures that all references to external objects within each database object are valid. Was muss ein DB-System aufweisen, damit zusätzlich allgemeine Geschäftsregeln durch das DB-System überwacht werden können. Aufgabe 2 (20 Punkte) SS 1996 Wie muss man bei der Implementation einer Datenbank vorgehen, wenn allgemeine Geschäftsregeln überwacht werden sollen, auch wenn das DB-System dies nicht unterstützt? Aufgabe 1 (25 Punkte) WS 1997 Ein bekanntes DBMS wies in einer vorhergehenden Version folgendes Verhalten auf: bei großen Tabellen betrug die Laufzeit der Anweisung SELECT MIN(sp1), MAX(sp1) FROM tabelle ein Vielfaches der Laufzeit der Anweisungen SELECT MIN(sp1) FROM tabelle und SELECT MAX(sp1) FROM tabelle sp1 sei eine numerische Spalte der Tabelle tabelle, auf die ein Index errichtet ist. Versuchen Sie, dieses Verhalten verständlich zu machen. Lösung: Aufgrund der Anwendung eines Query-Optimizers (wird von DBMS bereitgestellt) auf diese Tabelle wird die Anfrage auf das Minimum bzw. Maximum optimiert, welches die Einzelanfragen stark begünstigt. Bei der gleichzeitigen Suche nach Min und Max wird der Optimizer so ausgehebelt, das eines der beiden Elemente erst nach dem kompletten Durchlaufen der Tabelle gefunden werden kann. Siehe auch Aufgabe 3 (40 Punkte) WS 1999 Aufgabe 1 (25 Punkte) SS 1997 In der Phase des logischen Designs einer Datenbank haben Sie eine Tabelle erhalten, die einen aus drei Spalten P1, P2 und P3 zusammengesetzten Primärschlüssel sowie 20 weitere Spalten SP1 bis SP20 enthält. Folgende Informationen bzgl. des zu erwartenden Anwendungsprofils sind im Hinblick auf diese Tabelle bekannt: Ca. 45% aller Zugriffe auf diese Tabelle benötigen neben dem Primärschlüssel nur die Spalten SP1 bis SP5. Weniger als 2/3 der Zugriffe sind Anfragen. Bei Anfragen wird zu 60% SP1 und zu 30% die Spalte SP2 als Sortierungskriterium benutzt. Ca. 35% aller Zugriffe benutzen neben dem Primärschlüssel nur die Spalten SP10 bis SP15, bei 70% aller Anfragen wird dabei auf eine Sortierung der Spalte SP15 zurückgegriffen. Ca. 25% aller Zugriffe benötigen außer dem Primärschlüssel nur die Spalten SP14 bis SP17, alle Anfragen benutzen SP15 und SP16 als gemeinsames Sortierungskriterium. Die restlichen Zugriffe benötigen alle Spalten, neben SP1, SP2, SP15 und SP16 werden auch Spalten SP3 oder SP4 als Sortierkriterium benutzt. Welche Entscheidungen würden Sie daraus hinsichtlich der physischen Implementation fällen? Begründen Sie Ihre Entscheidung. Lösung: Aufgrund der hauptsächlich auftretenden lesenden Zugriffe würde ich die Tabelle in sortierte Tabellen aufsplitten und nicht normalisieren. Durch auftretende Inkonsistenzen werden schreibende Zugriffe sehr teuer. Eventuell lassen sich dann die SP15 und SP16 aufgrund des gemeinsamen Sortierkriteriums in einer Spalte zusammenfassen. Eine physische Verteilung der Tabellen auf mehrere Platten oder Cluster-Knoten könnte die Geschwindigkeit erhöhen.... Siehe Replikation Aufgabe 2 (20 Punkte) SS 1997 Referentielle Integrität wird heute überlicherweise von jedem DB-System unterstützt. Erläutern Sie diesen Begriff. Geben Sie ein sinnvolles Beispiel für eine Regel, die über die üblicherweise von einem DB-System unterstützten Regeln hinausgehen und begründen Sie, warum man dennoch von einem DB-System erwarten sollte, auch die von Ihnen als Beispiel aufgestellte Regel zu unterstützen. Zeigen Sie Wege auf, bei Implementation einer DB-Anwendung diese Regel unabhängig vom Anwendungsprogrammierer bzw. Endanwender zu überwachen, auch wenn das DBMS dies nicht unterstützt. Aufgabe 7 (10 Punkte) SS 2000 Nicht jeder theoretisch änderbare View wird auch durch die rel. DBMS als änderbar akzeptiert. Welche Maßnahmen stellt diesbezüglich Oracle bereit? Lösung: Änderbare Views über mehrere Tabellen durch Joins werden idR. nicht unterstützt, sind aber in SQL vorgesehen. Oracle unterstützt nur „create view ... for update“ für eine Tabelle. Möglich sein müsste ein Insert in die View, dass durch Trigger mit Inserts auf die Tabellen abgebildet wird. Probleme dürften nur auftreten bei Views die Tabellen mit Muss-Feldern nicht enthalten. Aufgabe 4 (20 Punkte) SS 1999 Warum ist nicht jeder View änderbar? Geben Sie ein Beispiel eines prinzipiell nicht änderbaren Views. Typischerweise akzeptieren kommerzielle DBMS höchstens solche prinzipiell änderbaren Views als änderbar, die sich nur auf eine Basistabelle beziehen. Welche Möglichkeit bietet Oracle an dieser Stelle? Lösung: Falls Inkonsistenzen in der Basistabelle auftreten kann es zu Problemen kommen ( Tabelle ist normalisierbar ). Views mit Joins auf nicht normalisierte Tabellen sind theoretisch nicht änderbar, da Datensätze nicht löschbar sind, wenn nicht alle Abhängigkeiten aufgelöst werden können. Oracle kann nur änderbare Views auf eine normalisierte Tabelle verwalten. Siehe auch Aufgabe 7 (10 Punkte) SS 2000 Aufgabe 5 (15 Punkte) WS 1997 Warum können Sie prinzipiell nicht erwarten, dass jeder VIEW einer Tabelle Änderungen zuläßt? Begründen Sie dies und bilden Sie ein Beispiel. Lösung: Siehe auch Aufgabe 7 (10 Punkte) SS 2000 Aufgabe 1 (20 Punkte) SS 1999 Geben Sie ein Beispiel für einen auch theoretisch nicht änderbaren View. Unter welchen Voraussetzungen lassen die bekannten DBMS Änderungen eines Views zu? Geben Sie ein Beispiel für einen theoretisch änderbaren View, der in der Regel nicht von einem der üblichen DBMS geändert werden kann. Lösung: Views mit Joins auf nicht normalisierte Tabellen sind auch theoretisch nicht änderbar, da Datensätze nicht löschbar sind, wenn nicht alle Abhängigkeiten auflösbar sind. Änderbare Views werden von derzeitigen DBMS unterstützt, solange sie keine Joins beinhalten, also nur auf eine Basistabelle zugreifen.Theoretisch wäre eine View mit Join auf normalisierte Tabellen änderbar. Siehe auch Aufgabe 7 (10 Punkte) SS 2000 Aufgabe 2 (20Punkte) WS 1998 Geben Sie an, unter welchen Voraussetzungen die bekannten DBMSe Änderungen eines Views zulassen. Geben Sie ein Beispiel für einen View, der nicht änderbar ist sowie für einen theoretisch änderbaren View, der von den üblichen DBMS nicht geändert werden kann. Lösung: Siehe auch Aufgabe 7 (10 Punkte) SS 2000 Aufgabe 5 (25 Punkte) WS 1998 Eine Geschäftsregel eines Versandhauses lautet: Die Bestellung eines Kunde darf nur dann angenommen werden, wenn der Wert der bestellten Ware und die von früheren Bestellung außenstehenden Bestände 500,00 DM nicht überschreiten und Eine Bestellung im Werte über 100,00 DM darf nur angenommen werden, wenn der Kunde älter als 18 Jahre ist. Diskutieren Sie die Implementation einer solchen Geschäftsregel beim Einsatz heute gängiger relationaler DBMSe. Lösung: Bei den verschachtelten DBMS-Anfragen können Widersprüche und Situationen auftreten die ein QueryOptimizer nicht optimieren kann. Zudem sind Joins so teuer, dass man in einem Datawarehouse große Ansichtstabellen erstellen würde.