Klausur WS 2000/2001 - Institut für Informatik

Werbung
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.
Herunterladen