Universität Dortmund Fachbereich Informatik, Lehrstuhl 6 Prof. Dr. Norbert Fuhr Informationssysteme (WS 2001/2002) Prof. Dr. Norbert Fuhr Leitung der Übungen: Christian Altenschmidt und Ralf Menzel Übungsblatt Nr. 7 Abgabetermin: 11. Dezember 2001, 1200 Uhr, Briefkasten 36 Aufgabe 1 (Hierarchische Anfragen) In der Datenbank ist die Tabelle Angestellte abgelegt, die die hierarchische Struktur eines Unternehmens darstellen soll. Hier ist zu jedem Angestellten abgespeichert, wie er heißt, wer sein direkter Vorgesetzter ist und in welcher Abteilung er arbeitet. Formuliert die folgenden Fragen als SQL-Anfragen an diese Tabelle: 1. Wer sind die Untergebenen von Smith? 2. Wie viele Vorgesetzte hat Bess? 3. Welche Untergebenen von King arbeiten in Abteilung 1? Punkte 3 × 2 = 6 Aufgabe 2 (SQL, Indexe) 1. Legt Kopien der Tabellen President und Election mittels der folgenden SQLBefehle an: CREATE TABLE my_President AS SELECT * FROM President; CREATE TABLE my_Election AS SELECT * FROM Election; 2. Erzeugt drei Indexe zu den Tabellen, so dass die folgenden drei Anfragen dadurch unterstützt werden. SELECT Candidate FROM my_Election WHERE Candidate LIKE ’R%’; SELECT DISTINCT Election_Year FROM my_Election WHERE Election_Year < 1900; SELECT Pres_Name FROM my_President, my_Election WHERE Pres_Name = Candidate; 3. Lasst Eure Tabellen mittels ANALYZE ... analysieren und überprüft dann mittels des Befehls EXPLAIN PLAN ... und der beiden Skripte ?/rdbms/admin/utlxplan und ?/rdbms/admin/utlxpls, dass die Indexe auch wirklich benutzt werden. Punkte 0 + 6 + 3 = 9 1 Informationssysteme Übungsblatt Nr. 7 Hinweis: Bei der folgenden Aufgabe sollt Ihr JDBC benutzen, die Datenbankschnittstelle von JAVA. Auch Oracle stellt einen JDBC-Treiber zur Verfügung. In Oracle 9i JDBC Developer’s Guide and Reference Kapitel 3 steht, wie man damit umgeht. Ihr findet das Kapitel unter http://www-software.cs.uni-dortmund.de/packets/oracle/ 9.0.1/oracledoc/java.901/a90211/basic.htm Außerdem findet Ihr eine Beispielanwendung auf unserer Homepage http://ls6-www.cs.uni-dortmund.de/ir/teaching/lectures/is_ws01-02/. Weitere Information zum Thema JDBC gibt es in der Java Platform API Specification lokal an den Uni-Rechnern unter file:/app/unido-inf/sun4_55/jdk/1.2.1/docs/ api/java/sql/package-summary.html Unter anderem werdet Ihr feststellen, dass Ihr zum Verbindungsaufbau mit der Datenbank die Adresse derselben braucht. Diese Adresse lautet für die Datenbank im Pool jdbc:oracle:thin:@calzium:1521:fbi. Aufgabe 3 (Oracle-Anwendung) Implementiert eine kleine JAVA-Anwendung, die in die Tabelle USER_TEILNEHMER einträgt, ob Ihr am Ende des Semesters einen Schein zu den Übungen erwerben wollt oder nicht (keine Sorge, der Eintrag ist nicht verbindlich und hat auch sonst keine Auswirkungen). Euer Programm soll folgende Anforderungen erfüllen: • Der Datenbankzugriff soll mit JDBC erfolgen. • Jegliche Benutzerinteraktion soll im Textmodus stattfinden, d. h. Ihr sollt weder AWT noch Swing benutzen. • Euer Passwort für die Oracle-Datenbank darf aus naheliegenden Gründen nicht im Klartext im Quellcode zu finden sein! Lest das Passwort am besten interaktiv von der Konsole ein. Achtet darauf, bei der Eingabe des Passwortes das Konsolen-Echo auszuschalten, z. B. indem Ihr es von vornherein am Terminal abschaltet: bash-2.05$ stty -echo; java <classname> ; stty echo Punkte 15 2