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: 18. Juni 2004 Dauer: 90 Minuten 40 Punkte zu erreichen: Wissen 16, Anwendung 16 und Transfer 8 Punkte. Bestanden ab 20 Punkte. TEIL I: WISSEN (25 MINUTEN) Aufgabe 1 (2 Punkte): Sei folgende Tabellendefinition in Oracle gegeben: create table t (c1 number, c2 number); Dann führen die Statements insert into t values (1,2); insert into t values (1,2); auf der Basis einer zunächst leeren Tabelle zu zwei Zeilen. Warum stimmt das eigentlich nicht mit der relationalen Semantik überein? Was muss man in Oracle tun, damit eine Tabelle t mit identischen zwei Zeilen als Inhalt unmöglich wird? Aufgabe 2 (3 Punkte): In jedem Select-Statement (Syntax) der allgemeinen Form select an1.sn1, an2.sn2, ... anm.snm from t1 a1, ... tk ak where “condition”; werden gleichzeitig drei semantische Operationen angewendet: (a) Die Bildung eines kartesischen Produkts, (b) eine mengenmäßige Aussonderung und (c) eine Projektion aus einem Produkt. Welche syntaktischen Teile des Select-Statements formulieren diese drei semantischen Operationen? Aufgabe 3 (2 Punkte): Normalisierung von relationalen Schemata beseitigt viele Probleme bei ????? der Tabellen, erhöht aber den Aufwand bei ????? Aufgabe 4 (2 Punkte): Was ist ein View? Wozu benutzt man Views? Aufgabe 5 (2 Punkte): Was hat Serialisierung von Transaktionen mit Isolation zu tun? Aufgabe 6 (3 Punkte): Was ist Starvation? Welches Sperrkonzept kann zu Starvation führen? Geben Sie ein Beispiel an! Aufgabe 7 (2 Punkte): Warum muss man für die Vergabe von Primärschlüsseln spezielle Mechanismen – wie etwa Sequencer in Oracle – einsetzen? TEIL II: ANWENDUNG ( 45 MINUTEN) Aufgabe 8 (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 9 (7 Punkte): Übersetzen Sie folgendes Klassendiagramm in relationale Tabellenstrukturen und zwar nach der Methode „Eine Tabelle pro Vererbungshierarchie“! Dokumentieren Sie die resultierenden 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 10 (3 Punkte): Schreiben Sie für die Tabellenstruktur aus Aufgabe 9 eine Abfrage, die die Haftpflichtverträge juristischer Personen mit Telefon ermittelt! TEIL III: TRANSFER ( 20 MINUTEN) Aufgabe 11 (3 Punkte): Transaktionen und kritische Abschnitte (Mutex) sind Hilfsmittel zur Beherrschung von Parallelität oder Multi-User-Betrieb. Was haben beide Konzepte (in ihrer Reinform) gemeinsam? Wo liegen die Unterschiede? Aufgabe 12 (2 Punkte): Welches grundsätzliche Problem ergibt sich, wenn zwei der „fetten“ JavaKlienten, wie wir sie in der Vorlesung kennen gelernt haben, parallel auf dasselbe Schema im selben Oracle-Server zugreifen? Aufgabe 13 (3 Punkte): Interfaces oder Mehrfachvererbung machen das Verfahren zur Übersetzung von Klassenmodellen in relationale Schemata nach dem Muster „Eine Tabelle pro Klassenhierarchie“ deutlich komplizierter. Warum? 2