Fachhochschule Darmstadt Fachbereich Informatik - Prof. Dr. Wolfgang Weber - Darmstadt, den 15.01.02 Klausur-DB_WS01_02 KLAUSUR zur Lehrveranstaltung "Datenbanken" Teilnehmer(in) Name: Vorname: Matrikel-Nr: Hinweise: - Tragen Sie bitte sofort Ihren Namen, Vornamen und Matrikelnummer ein. - Legen Sie bitte Ihren Personalausweis zur Einsicht bereit. - Die Bearbeitungszeit beträgt 75 Minuten. - Zur Bearbeitung sind keine Unterlagen bzw. Hilfsmittel zugelassen. - Bitte schreiben Sie deutlich. - Alle Fragen sind zu beantworten. - Schreiben Sie die Lösung jeweils auf die Rückseite des vorhergehenden Blattes _______________________________________________________________ Aufgabe 1 2 3 4 5 6 SUM _______________________________________________________________ max. Punkte: 17 23 21 9 3 8 81 _______________________________________________________________ erreichte Punkte: _______________________________________________________________ NOTE: 1 Aufgabe 1: Konstruktion eines E-R-Diagramms (17 Punkte) Für die Firma Maier Kfz-Ersatzteilhandel GmbH ist eine Auftragsabwicklung zu schreiben. Als ersten Schritt dazu sollen Sie ein ER-Diagramm entwerfen. Ein Auftrag der Firma Maier Kfz-Ersatzteilhandel GmbH sieht folgendermaßen aus: ________________________________________________________________ F. Müller AG Im Feld 13 37657 Musterstadt An Firma Maier Kfz-Ersatzteilhandel GmbH Postfach 4711 64378 Darmstadt 15.01.02 Unsere Auftragsnummer: 4711 Hiermit bestellen wir gemäß Ihrer Preisliste: 3 Stück 7 Stück Artikel Nr. 12345 Artikel Nr. 23456 Kupplungsscheiben Kolbenrückzugsfedern Mit freundlichen Grüßen F. Müller __________________________________________________________________ Nach Eingang der Bestellung wird eine Auftragsbestätigung geschrieben, in der zusätzlich die Listenpreise für die bestellten Artikel angegeben sind. Erstellen Sie als Grundlage für das zu erstellende System ein vollständiges ER-Diagramm mit Angabe der Komplexitäten und der Attribute. Im zu entwickelnden System sollen alle für die zur weiteren Verarbeitung in der Auftragsabwicklung benötigten und in der Auftragsbestätigung auszudruckenden Daten abgelegt werden können. Bedenken Sie: Zum Schreiben der Auftragsbestätigung benötigen Sie die Listenpreise, die irgendwo zugreifbar sein müssen. Während der Abwicklung des Auftrages können sich die Listenpreise ändern. Bei der späteren Rechnungsschreibung müssen allerdings die in der Auftragsbestätigung angegebenen Preise fakturiert werden. Auch die Auftragsbestätigung habe ein Datum. Die Rechnungsverwaltung sei ein eigenes System, d. h. in unserem ER-Diagramm wollen wir keine Rechnungen modellieren. Obwohl Auftrag und Auftragsbestätigung eigentlich verschiedene Datenobjekte sind, ist es Ihnen in dieser Aufgabe freigestellt, in Ihrem ER-Modell beide Datenobjekte durch ein Entity zu modellieren. 2 3 Aufgabe 3: SQL-Anweisungen (21 Punkte) Gegeben sei folgendes relationale Schema: Mitarbeiter (Mitarb-Nr, Mitarb-Name) Projekt (Proj-Nr, Proj-Name, Proj-Leiter-Nr) Proj-Leiter-Nr sei Fremdschlüssel mit Referenz auf Mitarbeiter Mitarbeiter_arbeitet_in_Projekt (Mitarb-Nr, Proj-Nr, Prozent_der_Arbeitszeit) Mitarb-Nr und Proj-Nr seien Fremdschlüssel mit Referenz auf Mitarbeiter und Projekt 3a. (3P) Definieren Sie die Relation Mitarbeiter_arbeitet_in_Projekt in SQL mit Schlüssel- und Fremdschlüssel-Definition. Alle Attribute seien vom Typ Integer. Generieren Sie aus der Datenbank mit den oben angegebenen Relationen SQL-Anweisungen, die folgende Ausgaben erzeugen: 3b. (3P) Geben Sie zu allen Projekten mit Projektleiter Maier Proj-Nr und Mitarb-Name des Projektleiters aus. In der Überschrift der Liste stehe statt Proj-Nr Projektnummer und statt Mitarb-Name Projektleitername. 3c. (5P) Generieren Sie die Liste aller im Projekt 4711 und Projekt 4712 mitarbeitenden Mitarbeiter. Geben Sie jeweils Proj-Nr, Proj-Name, Mitarb-Name und Prozent_der_Arbeitszeit aus. 3d. (7P) Geben Sie zu allen Projekten Proj-Name und Anzahl der Mitarbeiterstunden pro Tag aus. Anzahl der Mitarbeiterstunden pro Tag sei die Summe der (Prozent_der_Arbeitszeit/100)*8. 3e. (3P) Definieren Sie eine Sicht (view) Maiers_und_Muellers_Projekte, die nur Projekte, die von Herrn Maier oder Herrn Mueller geleitet werden enthält und in der nur Proj-Nr, Proj-Name und Name_Projektleiter enthalten sind. 4 Aufgabe 4: Embedded SQL (9 Punkte) 4a. (4P) Definieren Sie einen Cursor AktMitarbeiter_Cursor über der Relation Mitarbeiter aus Aufgabe 3. (Es handele sich um die gesamte Mitarbeiter-Relation mit allen Attributen.) 4b ( 2P) Definieren Sie einen Record AktMitarbeiter_Record zur Aufnahme eines durch das FetchKommando aus der Mitarbeiter-Relation herausgeholten Mitarbeiter-Records (Verwendung der %Rowtype-Operation) oder definieren sie andere Variablen, in die Sie die Attribute eines Mitarbeiter-Datensatzes hineinbringen können. 4c. ( 3P) Holen Sie per Fetch-Befehl den ersten Mitarbeiter-Datensatz in den unter 4b. definierten Record AktMitarbeiter_Record. (oder in die in 4b. definierten Variablen). Aufgabe 5: Objektorientierte Datenbanksysteme allgemein (3 Punkte) Nennen Sie mindestens 3 Eigenschaften von objektorientierten Systemen, die relationale Systeme nicht haben Aufgabe 6: Objektorientiertes Datenbanksystem POET (8 Punkte) 5a. (5P) Wie wird die Beziehung Marke 1 0,..* Auto im objektorientierten Datenbanksystem POET dargestellt? (Man soll von einem Auto zur dazugehörigen Marke und von der Marke zu den zugehörigen Autos navigieren können.) Schreiben Sie jeweils die Zeile der entsprechenden Attributdefinition in Auto und in Marke auf. 5b. (3P) Wie rufen Sie (z. B. von der print-Operation der Klasse Auto) die Funktion print() im in Beziehung stehenden Objekt der Klasse Marke auf. Schreiben Sie die entsprechende Programmzeile. 5