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 S TA N DA R D -SO FTWA R E K L AUS U R Studiengang: Informatik Studienquartal: VI. Theoriequartal Prüfungsumfang: Vorlesungen und Gruppenarbeiten. Dozent: Löwe Termin: 22. September 2003 Dauer: 90 Minuten 40 Punkte sind zu erreichen: Wissen 16, Anwendung 16 und Transfer 8 Punkte. Bestanden ab 20 Punkte. TEIL I: WISSEN (35 MINUTEN) Aufgabe 1 (4 Punkte): Beschreiben Sie zwei der Standardmethoden, Klassenmodelle in relationale Tabellenschemata abzubilden! Aufgabe 2 (4 Punkte): Stellen Sie Vor- und Nachteile der beiden Methoden aus Aufgabe 1 anhand (zuvor definierter) klarer Kriterien dar! Aufgabe 3 (2 Punkte): Warum sollten Informationssysteme die Versionierung sowohl (1) der Daten selbst als auch (2) der Datenmodelle unterstützen? Aufgabe 4 (4 Punkte): Jede Veränderung von Daten in einer Standardsoftware sollte transaktionsgesichert ablaufen. Was sind Transaktionen? Warum sind sie in einem System, in dem mehrere Nutzer gleichzeitig auf denselben Datenbestand zugreifen, praktisch unverzichtbar? Was ist der Unterschied zwischen langen Transaktionen und kurzen Datenbanktransaktionen? Warum benötigt man kurze Transaktionen, um lange Transaktionen zu realisieren? Aufgabe 5 (2 Punkte): Warum sollten alle (in SQL formulierten) Zugriffe einer „Client“-Software auf einen Datenbank-„Server“ an einer Stelle konzentriert werden? Warum empfiehlt sich darüber hinaus die „Server“-seitige Kapselung der Datenbankzugriffe in Form von „Stored Procedures“? TEIL II: ANWENDUNG ( 35 MINUTEN) Aufgabe 6 (8 Punkte): * Übersetzen Sie Person Kommunikationskanal nebenstehendes name: String Klassendiagramm in eine relationale Adresse Telefon Tabellenstrukturen und postleitzahl: Integer vorwahl: Integer zwar nach der Methode Natürliche Person Juristische Person ort: String durchwahl: Integer „Eine Tabelle pro Klasse vorname: String art: Integer und Realisierung der Vererbung über Postfachadresse Straßenadresse Fremdschlüssel“! nummer: Integer straßenname: String Dokumentieren Sie die nummer: Integer resultierenden Tabellen in Form von „create-table-Anweisungen“ in SQL (Muster siehe Aufgabe 8 )! Aufgabe 7 (4 Punkte): Schreiben Sie für das Ergebnis aus Aufgabe 6 eine select-Abfrage, die vorname, name und (Postfach)nummer der natürlichen Personen mit Postfachadressen ermittelt!1 Aufgabe 8 (4 Punkte): Zur Darstellung der Vererbungsbeziehung existiere folgende Tabelle: create table Inheritance (id number, ancestor number not null, descendant number not null, constraint PKInheritance primary key (id), constraint FKAncestorToClass foreign key (ancestor) references Class (id), constraint FKDescendantToClass foreign key (descendant) references Class (id), constraint UniquePairs unique (ancestor,descendant) ); Hier sind nicht nur die direkten Vererbungsbeziehungen eingetragen sondern auch alle abgeleiteten Beziehungen, um den Zugriff auch alle Vor- und Nachfahren zu beschleunigen. Die Tabelle stellt also eine partielle Ordnung (reflexiv, antisymmetrisch und transitiv) der Paare aus ancestor und descendant dar. Schreiben sie ein Select-Statement, das nur die Schlüssel der direkten Vererbungsbeziehungen ermittelt; d.h. das alle abgeleiteten Paare – transitiv und reflexiv – ausblendet!2 TEIL III: TRANSFER (20 MINUTEN) Aufgabe 9 (3 Punkte): Oracle unterscheidet im Datentyp varchar2 nicht zwischen der leeren Zeichenkette (““) und dem Null-Wert. Die leere Zeichenkette ist der Null-Wert (““ = null). Fügt man z. B. in eine varchar2-Spalte die leere Zeichenkette ein, erhält man bei folgenden Abfragen null zurück. Das stört! Und zwar so sehr, dass man varchar2 z. B. in Metamodellen für objektorientierte Systeme nicht einfach als Modell für Zeichenketten benutzen kann. Man muss Zeichenketten, die null und ““ unterscheiden, erst selber in Oracle mit den Mitteln von Oracle realisieren. Wie? Aufgabe 10 (2 Punkte): Warum sind Default-Werte für Assoziationen weder Objekte der Modellebene noch normale Objekte der Instanzebene? Aufgabe 11 (3 Punkte): In der objektorientierten Welt ist jedes Objekt Instanz genau einer Klasse und zwar während seiner gesamten Lebensdauer? In einem Metamodell für objektorientierte Informationssysteme gibt es dennoch Gründe, die revisionssichere Änderung der instanceOf-Beziehung vorzusehen. Welche? Benutzen Sie einen Ihnen geläufigen SQL-Dialekt! Der Inhalt muss stimmen nicht die Syntax! Benutzen Sie einen Ihnen geläufigen SQL-Dialekt! Verwenden Sie Subqueries in einer klar erkennbaren Notation, wo nötig! Der Inhalt muss stimmen nicht die Syntax! 1 2 2