F A C H H O C H S C H U L E F Ü R D I E W I R T S C H A F T F H D W , H A N N O V E R I N FO RM ATI ON S S Y TE M E K L AU SUR Studiengang: Informatik/Wirtschaftsinformatik Studienquartal: III. Theoriequartal Prüfungsumfang: Vorlesungen und Vorbereitungsmaterial vom 16. März 2004. Dozent: Löwe Termin: 26. März 2004 Dauer: 100 Minuten 40 Punkte zu erreichen: Wissen 16, Anwendung 16 und Transfer 8 Punkte. Bestanden ab 20 Punkte. TEIL I: WISSEN (35 MINUTEN) Aufgabe 1 (4 Punkte): Schlüssel (engl. Keys) spielen in Datenbanken eine wichtige Rolle: (a) Was ist ein Primary Key? (b) Was ist ein Foreign Key? (c) Sind für Foreign Keys null-Werte zulässig? (d) Welchem Konzept aus der Objektorientierung entsprechen Foreign Keys? (e) Warum sollen Key’s immer nur aus einem Feld von numerischem Typ bestehen? (f) Warum erfordert die Vergabe von Primary Keys bei Mehrbenutzerbetrieb besondere Mechanismen? Aufgabe 2 (1 Punkt): Warum soll man null-Werte zur Repräsentation vernünftiger Daten vermeiden? Aufgabe 3 (1 Punkt): Transaktionen sind ein Abstraktionskonzept. Wovon wird abstrahiert? Aufgabe 4 (2 Punkte): Transaktionen sollten die ACID-Eigenschaften besitzen. Benennen und erläutern sie die vier Eigenschaften kurz und knapp! Aufgabe 5 (3 Punkte): Was ist ein Deadlock? Welches Sperrkonzept führt zu Deadlocks? Geben Sie ein Beispiel, in der eine Transaktion an zwei verschiedenen Deadlocks beteiligt ist! Aufgabe 6 (1 Punkt): Stored Procedures in Datenbanken dienen der Abstraktion! Wovon wird abstrahiert! Aufgabe 7 (2 Punkte): Wozu setzt man das Proxi-Pattern bei objektorientierten Klienten relationaler Datenbanksysteme ein? Aufgabe 8 (2 Punkte): Warum muss die Persistenzschicht eines objektorientierten Klienten für ein relationales Datenbanksystem die aus der Datenbank entnommenen Objekte in einem Cache speichern? TEIL II: ANWENDUNG ( 45 MINUTEN) Aufgabe 9 (6 Punkte): Partielle Ordnungen (z. B. die Vererbungshierarchie auch bei Mehrfachvererbung) können auf zwei verschiedene Weisen in Relationenschemata abgebildet werden: (1) Normalisiert durch Ablegen nur der erzeugenden Relation R oder (2) denormalisiert, indem der transitive und reflexive Abschluss von R abgelegt und bei Veränderungen konsistent gehalten wird. Das Schema ist dabei gleich: create table Set(id number primary key,……); create table PartialOrder(ancestor number foreign key references Set(id), descendant number foreign key references Set(id), constraint Relation unique (ancestor,descendant)); (a) Unter welchen Umständen wählen Sie die erste Abbildung? (b) Unter welchen Umständen bevorzugen Sie die zweite? Wir betrachten jetzt die zweite Darstellung, also den reflexiven und transitiven Abschluss: (c) Schreiben Sie das Select-Statement, das alle Paare ermittelt, die man (einzeln) in R einfügen kann. (d) Schreiben Sie das Select-Statement, das die Paare ermittelt, die man in R einfügen muss, wenn man ein neues Paar (x, y) einfügen will. Setzen Sie hier Einfügbarkeit voraus! (e) Schreiben Sie das Select-Statement, das die erzeugende Relation R herausfiltert! Jetzt betrachten wir die erste Darstellung, also nur die Speicherung der erzeugenden Relation R: (f) Geben Sie das Select-Statement an, das den transitiven und reflexiven Abschluss liefert! (Achtung!!!) Aufgabe 10 (7 Punkte): Übersetzen Sie folgendes Klassendiagramm in relationale Tabellenstrukturen und zwar nach der Methode „Eine Tabelle pro Klasse mit Fremdschlüsselbeziehungen als Realisierung der Vererbung“! Dokumentieren Sie die Tabellen in Form von „create-table-Anweisungen“ in SQL! VersicherungsVertrag partner Person * kanal Kommunikationskanal name: String HaftpflichtVertrag DeckungsSumme: Integer Natürliche Person SachVertrag Telefon Adresse Nummer: Integer Straße: String Ort: String Juristische Person VersicherungsSumme: Integer Aufgabe 11 (3 Punkte): Schreiben Sie für die Tabellenstruktur aus Aufgabe 10 eine Abfrage, die die Haftpflichtverträge juristischer Personen mit Telefon ermittelt! TEIL III: TRANSFER ( 20 MINUTEN) Aufgabe 12 (2 Punkte): Betrachten Sie folgende Tabellendefinitionen: create table Set (id number primary key); create table Relation(left number not null foreign key references Set(id), right number not null foreign key references Set(id), constraint Relation unique (left,right)); Geben sie ein Select-Statement an, das eine minimale Menge von Paaren ermittelt, die aus der Tabelle Relation entfernt werden müssen, damit der Inhalt danach antisymmetrisch ist! Warum ist diese Menge nicht eindeutig bestimmt? (Achtung schwer, nutzen Sie auch die Eigenschaften der Elemente von Set!) Aufgabe 13 (3 Punkte): Sei T die Menge der Offenen Transaktionen zu einem Zeitpunkt t in einem Datenbanksystem und W T T die Wartet-auf-Relation, i. e. falls (t1, t2) W, dann wartet t1 auf t2. (a) Wie viele Elemente muss W mindestens haben, wenn zwei verschiedene Deadlocks existieren? (b) Wie viele Elemente hat W mindestens, wenn alle Transaktionen aus T in ein und demselben Deadlock festsitzen? (c) Wie viele Elemente kann W höchstens haben, ohne dass ein Deadlock vorliegt? Aufgabe 14 (3 Punkte): Deadlocks sind zu vermeiden, wenn es gelingt, alle Ressourcen total zu ordnen, und Transaktionen alle benötigten Ressourcen in der Reihenfolge ihrer Ordnungskennziffer sperren. (a) Warum kann es dann keine Deadlocks mehr geben? (b) Warum können Transaktionen i. A. nicht zu Beginn alle Ressourcen kennen, die sie sperren möchte? Wir retten das Verfahren im allgemeinen Fall dadurch, dass jede Transaktion, die eine Ressource mit der Ordnungszahl x sperren möchte, zuvor alle bereits gesperrten Ressourcen mit größerer Ordnungskennzahl freigibt und nach der erfolgreichen Sperre auf x wieder versucht zu sperren. (c) Gibt es jetzt ein Starvationproblem? Wenn ja, warum? Wenn nicht, warum nicht? 2