Fachhochschule Regensburg Klausur (Aufgabenblatt Nr.4) Prüfungsfach: DB Name: ___________________________ Aufgabensteller: Prof. Sauer Vorname:_________________________ Semester: ________________________ Prüfungstermin: Januar 2000 Zugelassene Hilfsmittel: Skriptum Arbeitszeit: 120 Minuten Bitte beachten Sie die folgenden Hinweise zu den Aufgabenstellungen bzgl der SQL-Angaben: Entry-SQL (entspricht dem ANSI-89-Standard, auch SQL/89 genannt) und kennzeichnet die untere Ebene des SQL/92 (auch SQL2 genannt). Full-Level-SQL umfaßt die vollständige Realisierung von SQL/92 Ohne spezielle Hinweise sind SQL-Anweisungen in Oracle-SQL (SQL*Plus) anzugeben. Bezugspunkt in Oracle Version 7. Aufgaben 1. Gegeben sind die Namen von Haupt- und Unterprogrammen: „h1, h2, h3, h4, u5, u6, u7, u8, u9, u10“. Hauptprogramm „h1“ ruft „h2“, „h3“ und „u9“ auf, Hauptprogramm „h2“ ruft „h4“, „u9“, „u10“ auf, Hauptprogramm „h3“ ruft „u5“, „u6“, „u7“ auf und Hauptprogramm „h4“ ruft „u6“, „u7“ und „u8“ auf. a) Gib das Schema dieser relationalen Datenbank an! Prozedur Proz-NR Struktur OProzNr UProzNr b) Gib (vollständig) Aufbau und Daten der relationalen Datenbank an! _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ 2. Nimm an, die unter 1. angegebene relationale Datenbank wurde implementiert. Gib die SQLAnweisungen auf diese Datenbank an, die folgende Aufgaben (Fragen) bzgl. der Datenbank lösen: a) Gib zuerst das gerufene Programm und dann das rufende Programm aus. Die Ausgabe soll nach dem Programm-Namen des gerufenen Programm sortiert sein. ______________________________________________ ______________________________________________ ______________________________________________ ______________________________________________ b) Gib die „Select“-Anweisung an, die rufendes Programm mit der Anzahl der Aufrufe auf dem Bildschirm des Datensichtgeräts darstellt. _________________________________________ _________________________________________ _________________________________________ _________________________________________ c) Gib die „Select-Anweisung“ an, die nur die Programme (über den Programm-Namen) auflistet, die 3 oder mehr Programmaufrufe enthalten. _________________________________________ _________________________________________ _________________________________________ _________________________________________ d) Die Aufrufstruktur der Programme soll über SQL-Anweisungen ermittelt werden. So ruft bspw. „h1“ „h2“ auf, „h2“ ruft anschließend „h4“ und „h4“ ruft „u6“ auf. Die Aufrufstruktur umfaßt Pfade unterschiedlicher Länge. 1) Ermittle die Aufrufstruktur der Programme, die die Pfadlänge 1 besitzen und gib sie in einer Tabelle folgender Struktur aus: Stufe_1 Stufe_2 -------------------h1 h2 ................ _________________________________________ _________________________________________ _________________________________________ 2 _________________________________________ 2) Ermittle die Aufrufstruktur der Programme, die die Pfadlänge 2 besitzen und gib sie in einer Tabelle folgender Struktur aus: Stufe_1 Stufe_2 Stufe_3 --------------------------------h1 h2 h4 ................ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ 3) Ermittle die Aufrufstruktur der Programme, die die Pfadlänge 3 besitzen und gib sie in einer Tabelle folgender Struktur aus: Stufe_1 Stufe_2 Stufe_3 Stufe_4 ---------------------------------------------h1 h2 h4 u6 ................ ______________________________________________ ______________________________________________ ______________________________________________ ______________________________________________ _________________________________________ _________________________________________ _________________________________________ 5. Gib in Oracle-SQL die SQL-Anweisungen für die Erzeugung der unter 1a) entworfenen relationalen Datenbank an. Die Datenbank soll über Constraint-Klauseln Entitätsintegritäten und referentielle Integritäten sicherstellen. Die Constraint-Angaben sollen eindeutig bezeichnet werden. ______________________________________________ ______________________________________________ ______________________________________________ ______________________________________________ ______________________________________________ ______________________________________________ ______________________________________________ ______________________________________________ ______________________________________________ 3 ______________________________________________ ______________________________________________ ______________________________________________ ______________________________________________ ______________________________________________ ______________________________________________ ______________________________________________ ______________________________________________ ______________________________________________ ______________________________________________ ______________________________________________ 3a) Mit welcher Klausel können in Oracle-SQL die unter 2d) ermittelten Anweisungen weitaus einfacher formulliert werden? ____________________ 3b) Formuliere die zugehörigen SQL-Anweisungen zu den Angaben unter 2d) in Oracle-SQL. ______________________________________________ ______________________________________________ ______________________________________________ ______________________________________________ _________________________________________ ______________________________________________ ______________________________________________ ______________________________________________ ______________________________________________ ______________________________________________ ______________________________________________ ______________________________________________ ______________________________________________ 4. Angenommen in das Programmverzeichnis wurden die Programme „h8“ und „h9“ aufgenommen, die in der Aufrufstruktur der Programme aber nicht vorkommen. Über welche SELECT-Anweisung kann festgestellt werden, das diese beiden Programme in der Aufrufstruktur nicht vorkommen. ______________________________________________ ______________________________________________ ______________________________________________ ______________________________________________ ______________________________________________ 5. Gib eine SQL-Anweisung in ORACLE-SQL aus, die die Aufrufstruktur in der folgenden Form wiederspiegelt. h2 4 h4 u6 u7 u8 h3 .... ______________________________________________ ______________________________________________ ______________________________________________ ______________________________________________ ______________________________________________ 6. Welche Programme fließen in „h1“ ein? ______________________________________________ ______________________________________________ ______________________________________________ ______________________________________________ ______________________________________________ 7a) Können Sie eine SQL-Anweisung angeben, die folgende Ausgabe direkt (ohne Hilfstabellen) realisiert. h1 ruft h2, h3, u6 auf h2 ruft ......... ___________ 7b) Falls Sie eine derartige Anweisung kennen, geben Sie diese SQL-Anweisung an. _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ 7c) Gib den Ablaufplan (Nassi-Shneidermann-Diagramm) eines Embedded-SQL-Programms an, das die angegebene Ausgabe über eine „Host-Language“ mit Hilfe eingebetteter SQL-Anweisungen löst. 5 7d) Überführe das unter 7c) beschriebene Embedded-SQL-Programm in ein ablauffähiges CProgramm, das auch eine allgemeine Routine zur Bearbeitung aufgetretener Fehler enthält. _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ 6 _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ 7e) Realisiere den unter c) angegebenen Programmablaufplan in PL/SQL. _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ 7