Lehrstuhl für Datenbanken und Informationssysteme Universität Augsburg, Institut für Informatik Prof. Dr. Werner Kießling A. Leubner, M. Wagner Wintersemester 1999/2000 25. Februar 2000 Datenbanksysteme I Klausur zum Praktikum Aufgabe 1: ER-Modellierung 1 + 2 = 3 Punkte Erstellen Sie ein ER-Modell zu einer Diplomprüfung. Benutzen Sie folgende Informationen: Professoren, Beisitzer und Studierende sind Personen. Mehrere Professoren prüfen mit genau einem Beisitzer genau einen Studenten. Aufgabe 2: RelA, DRC, SQL 2 + 2 + 1 = 5 Punkte Gegeben sei folgendes relationales Datenbankschema (ohne Angabe der Domänen und Schlüsselinformationen): Ware(Artikelnr, Bezeichnung, Preis) Anbieter(Artikelnr, Firmenbezeichnung, Ort) Kunde(Kundenr, Name, Artikelnr) Gegeben ist die folgende Anfrage: Wie heißen die Kunden, die vom Anbieter Putzi aus Hamburg den Artikel Zahnweiß bestellen? Formulieren Sie diese Query a) in relationaler Algebra, b) im Domänen-Kalkül und c) mittels SQL. Aufgabe 3: SQL, SELECT, UPDATE, DELETE 6 * 1 = 6 Punkte Gegeben sind die folgenden Relationen. id 1 2 3 4 5 COUNTRY name person Argentina 1 Canada 2 Cuba 2 Germany 1 France 7 cities 10 20 10 0 5 STAFF id lastname 1 Jones 2 Smith Beantworten Sie folgende Fragen lediglich durch die Angabe der richtigen Antwort(en) aus den möglichen Antworten A), B), C) oder D). a) Wieviele Zeilen liefert die folgende Query zurück? SELECT DISTINCT s.id FROM staff s, country c WHERE s.id = c.person A) 1 B) 2 C) 3 D) 4 b) Wie lautet das korrekte SQL-Statement zur Aktualisierung jedes Tupel der Relation STAFF? A) UPDATE lastname IN staff SET lastname = ’Greyson’ B) UPDATE lastname IN staff SET lastname TO ’Greyson’ C) UPDATE staff SET lastname = ’Greyson’ D) UPDATE staff WHERE lastname SET TO ’Greyson’ c) Wieviel Zeilen werden durch das folgende SQL-Statement in die Relation STAFF eingefügt? INSERT INTO staff SELECT person, ’Greyson’ FROM country WHERE person > 2 A) 0 B) 1 C) 2 D) 3 E) 4 d) Welcher der folgenden Ausdrücke liefert nicht genau eine einzige Zeile als Ergebnis zurück? A) SELECT person FROM country WHERE name LIKE ’G%’ B) SELECT person FROM country WHERE name LIKE ’ ba’ C) SELECT COUNT(*) FROM country D) SELECT id, name FROM country WHERE person BETWEEN 7 AND 7 e) Welcher der folgenden Ausdrücke entfernt alle Tupel aus der Relation STAFF bei denen ein NULL-Wert für lastname gesetzt ist? A) DELETE ALL FROM staff WHERE lastname IS NULL B) DELETE ALL FROM staff WHERE lastname = ’NULL’ C) DELETE FROM staff WHERE lastname = ’NULL’ D) DELETE FROM staff WHERE lastname IS NULL f) Welcher der folgenden Ausdrücke entfernt alle Tupel aus der Relation COUNTRY, die im Attribut person bereits Einträge haben die gleichermaßen im Attribut id in der Relation STAFF vorkommen? A) DELETE FROM country WHERE id IN (SELECT id FROM staff) B) DELETE FROM country WHERE id IN (SELECT person FROM staff) C) DELETE FROM country WHERE person IN (SELECT id FROM staff) D) DELETE FROM country WHERE person IN (SELECT person FROM staff) Aufgabe 4: SQL, DDL 5 * 1 = 5 Punkte Beantworten Sie folgende Fragen ebenfalls durch die Angabe der richtigen Antwort(en) aus den möglichen Antworten A), B), C) oder D). a) Gegeben ist der DDL-Ausdruck CREATE TABLE table1 (c1 CHAR(5) NOT NULL) Welcher der folgenden Einträge ist zulässig? A) NULL B) 5 C) ’abcdef’ D) ’abce’ b) Die folgende Transaktion sei ausgeführt. INSERT INTO staff VALUES (3, ’Gaylord’) ROLLBACK WORK INSERT INTO staff VALUES (4, ’Colbert’) INSERT INTO staff VALUES (5, ’Certius’) COMMIT Wieviele neue Zeilen befinden sich nun in der Relation STAFF? A) 0 B) 1 C) 2 D) 3 c) Welches der folgenden DDL-Statements legt eine neue Relation an in der das Attribut employid eindeutig ist? A) CREATE TABLE t1 (UNIQUE employid INTEGER) B) CREATE TABLE t1 (employid UNIQUE INTEGER) C) CREATE TABLE t1 (UNIQUE employid INTEGER NOT NULL) D) CREATE TABLE t1 (employid INTEGER NOT NULL, PRIMARY KEY (employid)) d) Gegeben sei der folgende DDL-Ausdruck. CREATE VIEW v1 AS SELECT c1 FROM t1 WHERE c1 =’c’ WITH CHECK OPTION Welches der folgenden SQL-Statements wird Daten in die Tabelle einfügen? A) INSERT INTO V1 VALUES (’ca’) B) INSERT INTO V1 VALUES (’c’) C) INSERT INTO V1 VALUES (’d’) D) INSERT INTO V1 VALUES (c) e) Das Volltext-Prädikat ”CONTAINS ( ’database’ [1,3] ’systems’ )” paßt auf A) alle Texte, die ’database’ und zwischen 1 bis 3 Vorkommen von ’systems’ enthalten. B) z.B. auf ’... database and information systems ...’ C) z.B. auf ’... database systems ...’ D) alle Texte, in denen ’database’ und ’systems’ im Verhältnis 1:3 vorkommen. Aufgabe 5: Trigger 4 Punkte Gegeben sind die beiden Relationen: Kunde(knr Integer, name Char(20), vorname Char(20)) KundeAlt(datum Date, knr integer, name Char(20), vorname Char(20)) Erstellen Sie einen Oracle-Trigger, der beim Update der kundennummer (Attribut knr) in der Relation Kunde eine Kopie des bisherigen Datensatzes mit vorangestelltem aktuellen Datum in die Relation KundeAlt schreibt. Aufgabe 6: ER-Transformation 5 Punkte Gegeben sei folgendes ER-Modell. Hierbei sind Schlüssel fett gedruckt. Globetrotter Stadt Personalausweisnr Name Vorname Anzahl_bereister_Städte Name Land Postleitzahl Einwohnerzahl war_in Transformieren Sie dieses ER-Modell in DDL-SQL-Statements. Wählen Sie hierzu geeignete Domänen. Dabei sollen in Globetrotter nur Datensätze mit einer Anzahl bereister Städte von mindestens fünf eingegeben werden können. Diese Beschränkung soll als verzögerbar deklariert werden. Hinweis: Zyklen in den Beziehungen zwischen Schlüsselattributen und ihre systemspezifische Auflösung können hier ignoriert werden. Aufgabe 7: SQL-Programmierung 1 + 1 + 3 + 1 + 3 = 9 Punkte Gegeben ist die folgende Relation. ANR 111 512 633 517 916 197 Artikelgruppe 1 8 8 1 4 5 PC BAUTEILE Beschreibung AMD 500 Prozessor Papst Lüfter f. Intel Wärmeleitpaste Pentium III 600 Prozessor Yamuha 10 CD´s Soundblaster Stückzahl 9 17 112 12 9 11 Einkaufspreis 245,44 19,32 2,34 333,33 8,77 34,67 Geben Sie passende SQL-Statements zu den folgenden Aufgabenstellungen an. a) Es kommt eine Lieferung von 5 Stück ’Matrox 400 Grafikkarten’ (ANR 912, Artikelgruppe 3) zum Einkaufspreis von DM 120 an. Verbuchen Sie diesen Eingang! b) Vier Soundblaster wurden verkauft. Verbuchen Sie den Ausgang! c) ) Geben Sie für jede Produktgruppe die Anzahl der Artikel aus, deren Stückzahl größer 11 ist! (Hinweis: Denken Sie auch an Count-Bugs.) d) Löschen Sie nun die Spalte Artikelgruppe. e) Für die Verkäufer soll der Einkaufspreis nicht sichtbar sein. Konstruieren Sie dazu eine geeignete Sicht und erstellen Sie eine Rolle (ROLE aus Oracle 8i) mit entsprechenden Rechte an dieser Sicht. Aufgabe 8: JDBC-Programmierung 1 + 1 + 3 + 1 + 1 = 7 Punkte a) Welche beiden Schritte sind nötig, um einen JDBC-Treiber aus einem Java-Programm anzusprechen und eine Datenbankverbindung aufzubauen? Nehmen Sie hierbei an, daß die JavaUmgebung (CLASSPATH etc.) bereits korrekt gesetzt ist. b) Welche Möglichkeit gibt es, um häufig gestellte JDBC-Anfragen zu beschleunigen? c) Geben Sie schematisch an, wie man mit JDBC die folgende Anfrage umsetzen kann. SELECT * FROM staff Als Lösung dieser Aufgabe genügt eine Quelltext-Skizze, d.h. gewertet wird nicht die exakte Syntax, sondern die prinzipielle Korrektheit der einzelnen Schritte. d) Was ist der Auto-commit-Modus? Wann ist es sinnvoll, ihn zu deaktivieren? e) Wozu dient die SQL Escape-Syntax in JDBC-Programmen? Hinweise Als Hilfsmittel zur Klausur sind lediglich Schreibzeug und der Multimedia-Kurs Datenbanksysteme zugelassen! Versehen Sie Ihre Klausur mit Namen, Vornamen und Matrikelnummer. Die angegebenen Punktzahlen verstehen sich als Hinweise und sind noch nicht endgültig. Die Verleihung der gemeinsam durch den Lehrstuhl und die Firma Oracle gezeichneten Oracle-Zertifikate erfolgt im Rahmen einer kleinen Feier am 29. Februar im Hörsaal 1005. Beginn 12:30 Uhr. In diesem Rahmen werden auch die Scheine zur Vorlesung vergeben.