UNIVERSITÄT BASEL Prof. Dr. Heiko Schuldt Ihab Al Kabary, MSc Ilir Fetai, MSc Nenad Stojni¢, MSc cs243: Datenbanken Übung 2 FS 2013 Abgabe: 19.03.2013 (23:59 Uhr) Aufgabe 1: Transformation ER-Modell nach SQL (5 Punkte) Abbildung 1 stellt ein ER-Modell einer Miniuniversität dar. Wandeln Sie das gegebene ER-Modell in ein relationales Datenbankschema um und bilden Sie dieses auf ein ausführbares SQL Skript ab. Bestimmen Sie dabei alle Primär- und Fremdschlüssel und führen Sie wo nötig künstliche Schlüssel ein. Wählen Sie eine der möglichen Varianten um die Vererbung aus dem ER-Modell zu implementieren. Geben Sie an welche Variante Sie gewählt haben und begründen Sie kurz Ihre Wahl. Abbildung 1: Das Datenbankschema im Entity-Relationship-Modell 1 Aufgabe 2: Objektrelationale Datenbanken (25 Punkte) a) Vervollständigen Sie das unten gegebene Objektrelationale Datenbankschema. Dieses unvollständige Schema implementiert Teile des Datenmodells aus der Aufgabe 1 unter Verwendung von objektrelatonalen Konstrukten. Beachten Sie, dass ein neuer Typ teachingAssistant_obj hinzugefügt wurde. Tipp: Sie können sich an der Syntax aus der Oracle Dokumentation orientieren, die Sie unter http://docs.oracle.com/cd/E14072_01/appdev.112/e10472/create_ type.htm nden können. DROP DROP DROP DROP DROP DROP DROP DROP DROP TABLE teachingAssistant; TABLE lecture; TYPE professor_obj; TYPE phdStudent_obj; TYPE address_obj; TYPE hobbies_varray; TYPE person_obj; TYPE teachingAssistant_obj; TYPE lecture_obj; CREATE TYPE person_obj AS object ( firstName varchar(30), lastName varchar(30), hobbies hobbies_varray, address address_obj ) NOT FINAL NOT INSTANTIABLE; CREATE TYPE teachingAssistant_obj UNDER universityStaff_obj ( institute varchar(30) ) NOT FINAL; CREATE TYPE lecture_obj AS object ( title varchar(30), [date] date, location varchar(30) ) NOT FINAL; (10 Punkte) 2 b) Fügen Sie Beispieldaten in das relationale und das objektrelationale Schema ein. Betachten Sie für das Füllen des objektrelationalen Schemas das folgende Beispiel: INSERT INTO teachingAssistant VALUES ( teachingAssistant_obj('Edgar', 'Codd', hobbies_varray('Mathematik', 'Datenbanken', 'Fussball'), address_obj('Bernoullistrasse', 16, 'Basel', 4056), 1100, 'Departement für Mathematik und Informatik') ); (8 Punkte) c) Geben Sie für das relationale und für das objektrelationalen Schema alle Personen aus der Datenbank zurück. Tipp: Geben Sie die die gesamte Extension von Person zurück. Geben Sie ausserdem alle PhD Studenten und alle Professoren zurück. (7 Punkte) Zusatzaufgabe (5 Punkte) Schreiben Sie eine ausführbare Funktion, die für den Type Professor die Anzahl Lehr- veranstaltungen berechnet, die vom Professor gehalten werden. Tipp: Sie können sich an der Syntax aus den Vorlesungsfolien oder der Oracle Dokumentation orientieren, die Sie unter http://docs.oracle.com/cd/E11882_01/appdev.112/ e25519/create_type_body.htm nden können. 3