Fragen aus alten Klausuren: Aufgabe 1 (20 Punkte) Wie können SQL-Anweisungen in einen Quelltext (z.B. PL/I, COBOL, Pascal usw.) eingebettet werden? Wie arbeitet der dazu benötigte Precompiler? Aufgabe 2 (25 Punkte) Beschreiben Sie den Zugriff auf eine Datenbank mit JDBC. Insbesondere soll wiederholt mit wechselnden Parametern eine Abfrage SELECT * FROM tab WHERE regal = ? auf eine Tabelle mit den Character-Spalten nr, fach, regal, ware durchgeführt werden. Aufgabe 3 (15 Punkte) Warum sind in relationalen DBMS Indexe in der Regel als Bäume und nicht als HashVerfahren implementiert? Gibt es ggf. auch bei Bäumen gewisse Probleme? Aufgabe 4 (25 Punkte) Begründen Sie, warum man die von Oracle vorgenommenen Erweiterungen des RDBMS als ,,objekt-relational`` und nicht als ,,objekt-orientiert`` bezeichnen muss. Aufgabe 5 (25 Punkte) Skizzieren Sie die Möglichkeiten, die Performance eines Datenbank-Servers hinsichtlich einer bestehenden DB-Anwendung zu verbessern. Anmerkung: eine reine Stichwort-Sammlung ist nicht erwünscht, diskutieren Sie jeden Vorschlag mit einem/ein paar kurzen Sätzen. Aufgabe 6 (20 Punkte) Warum werden Trigger unterstützt? Beschreiben Sie Einsatz sowie die Ihrer Meinung nach wichtigsten Grundlagen. Aufgabe 7 (15 Punkte) Was ist ein Deadlock? Was sieht der SQL-Standard zur Vermeidung von Deadlocks vor, welche Mittel stellen die Hersteller von relationalen DBMS zur Verfügung? Aufgabe 8 (40 Punkte) Diskutieren Sie folgenden Ansatz und nehmen Sie Stellung: Bei der Implemenatition der Indexverwaltung, die als Binary Trees verwirklicht werden, verzichtet der DBMS-Hersteller darauf, nicht mehr benötigte Index-Pages freizugeben. 1) Begründen Sie die Überlegung des DBMS-Herstellers. 2) Welche Konsequenzen hat das z.B. für folgende Situation: in einem Transaktionsorientierten System sollen die Transaktionen durch einen Timestamp gekennzeichnet werden. Es ist mit hohem Transaktionsaufkommen zu rechnen. Drei Monate alte Transaktionen werden, um Platz zu sparen, komprimiert und aus der Datenbank entfernt. Aufgabe 9 (20 Punkte) Welche Berechtigung gibt es für den DRDA-Ansatz, da ja ODBC bereits lange etabliert ist? Aufgabe 10 (15 Punkte) SQL92 (full level) fordert eine einheitliche Struktur für das Data Dictionary. Wie können DBMS-Hersteller dies verwirklichen, ohne ihre speziellen DBMS-Fähigkeiten und Strukturen aufgeben zu müssen? Aufgabe 11 (20 Punkte) Was ist Ihrer Einschätzung nach die Zielrichtung von Lotus Notes? Ist es ein Werkzeug, um rel. DBMS abzulösen? Aufgabe 12 (15 Punkte) In der Regel wird Information aus einem OLTP-System in ein Data-Ware-House übernommen. Wie kann dies geschehen? Zeigen Sie mehrere Möglichkeiten auf. Aufgabe 13 (25 Punkte) Zugriffe auf eine Datenbank, die von Ihnen administriert wird, werden ein paar Wochen, nachdem die gesamte Anwendung installiert wurde, merklich langsamer. Dabei hat sich nichts an den Anwendungen, die auf die Datenbank zugreifen, geändert. Welche Überlegungen stellen Sie an? Aufgabe 14 (15 Punkte) Es wird eine spezielle Anwendung für die Datenbank geplant, die (in großen Zeitabständen) gestartet werden und dabei mehrere große Tabellen ,,updaten`` soll. Wie kann sichergestellt werden, dass diese Anwendung deadlock-frei und möglichst effizient laufen kann? Was für Folgen hat Ihr Vorschlag für die Zeitpunkte, zu denen diese Anwendung gestartet werden sollte? Aufgabe 15 (25 Punkte) Beschreiben Sie, wie in Embedded SQL, in CLI und in JDBC der Zugriff auf eine Ergebnistabelle erfolgt. Aufgabe 16 (25 Punkte) 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. Aufgabe 17 (15 Punkte) Warum stellen rel. DBMS die LOCK-Anweisung bereit? Aufgabe 18 (20 Punkte) Warum kann man bei den Erweiterungen von Oracle bislang nicht von Objekt-Orientiert, sondern nur von Objekt-Relational sprechen? Aufgabe 19 (20 Punkte) Was versteht man unter dem 2-Phasen-COMMIT-Protokoll? Ist der Ausdruck ,,2-PhasenSperrprotokoll`` nur eine andere Umschreibung oder wird damit etwas Anderes zum Ausdruck gebracht? Aufgabe 20 (20 Punkte) Was versteht man unter ,,Replikation``, wie kann dies sinnvoll eingesetzt werden? Aufgabe 21 (10 Punkte) Welche Spalten bzw. Spaltenkombinationen sind für die Einrichtung eines Indexes besonders geeignet? Warum sollte man nicht beliebige Indexe einrichten? Aufgabe 22 (25 Punkte) 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. Aufgabe 23 (30 Punkte) Vergleichen Sie Embedded SQL und CLI. Vor- und Nachteile, Einsatz, ... Aufgabe 24 (20 Punkte) 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? Aufgabe 25 (20 Punkte) Wie werden Transaktionen bei verteilten rel. DBMSen unterstützt? Aufgabe 26 (30 Punkte) 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? Aufgabe 27 (10 Punkte) Wie erfolgt in JDBC der Zugriff auf die Sätze einer Ergebnistabelle? Skizzieren Sie das Vorgehen. Aufgabe 28 (15 Punkte) 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? Aufgabe 29 (15 Punkte) Zur Beschleunigung des Zugriffes werden Indexe eingesetzt. Warum ist dann die Aussage ,,je mehr Indexe, desto besser`` falsch? Aufgabe 30 (10 Punkte) Nicht jeder theoretisch änderbare View wird auch durch die rel. DBMS als änderbar akzeptiert. Welche Maßnahmen stellt diesbezüglich Oracle bereit? Aufgabe 31 (25 Punkte) Was sind ,,Optimistische Synchronisationsverfahren``? Gibt es Situationen, in denen Sie diese Verfahren für besonders geeignet halten? Aufgabe 32 (15 Punkte) Gibt es (bislang noch) Vorteile rel. DBMS gegenüber OODBMS? Aufgabe 33 (10 Punkte) 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. Aufgabe 34 (20 Punkte) 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? Aufgabe 35 (15 Punkte) Wozu werden Sperrtabellen von einem DBMS eingesetzt? Was ist bei einem verteilten DBMS der Vor- und Nachteil einer zentralisierten Sperrtabelle? Welchen Nachteil hat in diesem Falle der Einsatz rein lokaler Sperrtabellen? Aufgabe 36 (25 Punkte) Wozu dienen ,,Optimistische Synchronisationsverfahren``? Warum werden sie nicht standardmäßig in allen DBMS-Implementationen eingesetzt? Aufgabe 37 (25 Punkte) Wozu wird Replikation eingesetzt? Was versteht man unter dem ,,Primary Copy`` Verfahren? Versuchen Sie zu begründen, warum alle namhaften Hersteller relationaler verteilter DBMS zumindest dieses Replikationsverfahren implementieren. Aufgabe 38 (25 Punkte) Wozu dient Normalisierung? In welchen Situationen darf Normalisierung (geplant!) vernachlässigt werden? Aufgabe 39 (10 Punkte) Was bedeutet ,,Objekt-Identität``? Skizzieren Sie ein Beispiel, anhand dessen Sie zeigen können, dass dies in einer rel. DB nicht gegeben ist. Aufgabe 40 (20 Punkte) Geben Sie Begründungen, warum es zur Entwicklung von OODBMS kam. Wo könnten zur Zeit noch Vorteile von rel. DBMS liegen? Aufgabe 41 (10 Punkte) Warum muss JDBC die Klasse ResultSet bereitstellen? Aufgabe 42 (20 Punkte) 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. Aufgabe 43 (20 Punkte) Was ist ein Trigger? Welche Bedeutung hat der für Oracle spezifische Trigger INSTEAD OF? Aufgabe 44 (20 Punkte) Was versteht man unter ,,dynamischem SQL``? Worin liegen die besonderen Probleme? Ist dynamisches SQL in jeder Umgebung einsetzbar? Aufgabe 45 (10 Punkte) Bei der Installation des DBMS wurde die Partition für das Dictonary auf dem gleichen Laufwerk installiert wie die Partition für den Log. Welche Effekte sind zu erwarten? Aufgabe 46 (10 Punkte) Wie kann bei der Installation einer DB-Anwendung auf Datenschutz geachtet werden? Aufgabe 47 (15 Punkte) Was bewirkt ein COMMIT? Beschreiben Sie dies zunächst für die einfache Form, sodann für den Fall des Zwei-Phasen-Commits. Aufgabe 48 (25 Punkte) Warum kann ein Query-Optimizer bei einer AND-Verknüpfung Indexe einsetzen, bei einer ORVerknüpfung hingegen (in der Regel) nicht? Aufgabe 49 (25 Punkte) 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 LABER ( 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 50 (15 Punkte) 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 51 (15 Punkte) 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. Aufgabe 52 (15 Punkte) Warum wird trotz der Mächtigkeit von SQL Embedded SQL benötigt? Zeigen Sie an einem einfachen Beispiel, daß programmierte SQL-Anweisungen nötig sind. Aufgabe 53 (40 Punkte) 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? Aufgabe 54 (20 Punkte) Was wird durch die Anweisung COMMIT bewirkt? Aufgabe 55 (15 Punkte) Gilt die Beziehung AVG(sp) = SUM(sp)/COUNT(sp)? Begründen Sie Ihre Aussage. Aufgabe 56 (15 Punkte) Beschreiben Sie die Fehlerarten, bei denen der DBA zur Administrierung auf ein komplettes Backup zurückgreifen muß, sowie diejenigen, bei denen die Information des LOGs ausreicht. Aufgabe 57 (15 Punkte) Was ist Verteil, wenn ein Precompiler einen Zugriffsplan erstellt und speichert, was ist der Nachteil dieses Vorgehens? Aufgabe 58 (25 Punkte) Die Schnittstelle CLI bietet Vorteile gegenüber Embedded SQL. Versuchen Sie diese Vorteile darzustellen. Aufgabe 59 (30 Punkte) Erläutern Sie den Begriff ,,Zugriffspfad``. Welche Komponenten eines DBMS sind dafür zuständig? Welceh Vor- bzw. Nachteile hat die Speicherung eines Zugriffspfades? Welche organisatorischen Maßnahmen müssen getroffen werden, wenn ein Zugriffspfad gespeichert wird? Aufgabe 60 (30 Punkte) Stellen Sie sich vor, Studenten- und Prüfungssekretariat würden ihre Daten in einer verteilten DB-Anwedungung auf zwei vernetzten Rechnern halten. Im Studentensekretariat muß 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 muß 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. Aufgabe 61 (20 Punkte) 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. Aufgabe 62 (15 Punkte) Beschreiben Sie mit der Normalisierung verträgiche Methoden, um in einem RDBMS den Zugriff auf Daten zu beschleunigen. Aufgabe 63 (15 Punkte) Was besagt der Transaktionsbegriff? Wie wird er in heute üblichen DBMSen unterstützt? Entstehen durch diese Unterstützung ggf. andere Probleme? Aufgabe 64 (15 Punkte) Beschreiben Sie, wie eine Applikation mit eingebetteten SQL-Anweisungen auf ,,Exceptions`` des DBMS reagieren kann. Aufgabe 65 (15 Punkte) Worin liegen die Probleme, dynamische SQL-Anweisungen zu schreiben? Was versteht man überhaupt unter diesem Begriff? Aufgabe 66 (20 Punkte) Welche Überlegungen muß der DBA bzgl. der Sicherungsstrategie anstellen. Gibt es diesbezüglich etwas, das vor bzw. zur Installationszeit des DBMS festgelegt werden muß?