Klausurvorbereitung

Werbung
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.
Herunterladen