Hochschule Karlsruhe – Technik und Wirtschaft Sommersemester 2009 Fakultät:
Seite 1/15
Fakultät für Informatik und Wirtschaftsinformatik Semester:
Prüfungsfach: Datenbanken I Dozent:
Dr. Peter Steininger
Hilfsmittel:
Ein handbeschriebenes DIN-A4-Blatt
Name:
Fachnummer:
Zeit:
BC3 D4 I 3B71 I 4D51
90 Minuten
Matrikelnummer:
Hinweise: Tragen Sie unbedingt Ihren Namen und Ihre Matrikelnummer ein! Die angegebenen Punktzahlen sind gleichzeitig als maximale Bearbeitungszeit aufzufassen. Orientieren Sie sich beim Antworten an dem Freiraum, der jeweils nach der Aufgabenstellung freigelassenen ist. Falls Ihnen der Platz – wegen einer Streichung zum Beispiel – nicht ausreicht, verwenden Sie bitte die Rückseiten der Aufgabenblätter. Das verwendete Datenmodell und dessen Daten sind im Anhang angegeben!
1.
Aufgabenblock zum Thema „DBMS im Allgemeinen“ – 15 Punkte
1.1 Wofür steht die Bezeichnung SQL? - 1 Punkt
1.2 Wofür steht die Bezeichnung DBMS? - 1 Punkt
1.3 Erklären Sie unter Bezug auf Datenbanken den Begriff „Zugriffslücke“. - 2 Punkte
1.4 Mit welcher Technik versucht eine Datenbank die „Zugriffslücke“ zu minimieren? - 3 Punkte
Sommersemester 2009 Prüfungsfach:
Datenbanken I
Seite 2/15 Matrikelnummer:
1.5 Was bewirken die Indizes in einer Datenbank und warum bewirken sie dies? - 4 Punkte
1.6 Welche Nachteile werden durch die Nutzung von Indizes in Kauf genommen? Benennen und erläutern Sie zwei Nachteile. - 4 Punkte
Sommersemester 2009 Prüfungsfach:
2.
Datenbanken I
Seite 3/15 Matrikelnummer:
Aufgabenblock zum Thema „Architektur“ – 20 Punkte
2.1 Erläutern Sie die Abkürzung „ACID“, jeden bezeichneten Begriff und deren jeweilige Bedeutung für ein DBMS. - 12 Punkte
Sommersemester 2009 Prüfungsfach:
Datenbanken I
Seite 4/15 Matrikelnummer:
2.2 Erläutern Sie warum das Client-Server-Architekturmodell eingesetzt wird. Benennen Sie in der Erläuterung einzelne Architekturblöcke. - 8 Punkte
Sommersemester 2009 Prüfungsfach:
3.
Datenbanken I
Seite 5/15 Matrikelnummer:
Aufgabenblock zum Thema „Datenbankabfragen“ – 20 Punkte
3.1 Schreiben Sie zu den angegebenen Ausgaben die entsprechende SQL-Anweisung 3.1.1 Ausgabe der Kunden, Kundengruppe und der Telefonnummer sortiert nach Name. 3 Punkte strName strKundengruppenname strTelefonnummer ------------------------------------------------------Christine Geschäftskunde 491743333333 Dieter Privatkunde 491727654321 Hans Privatkunde 491711234567 Madonna VIP-Kunde 491754444444 Ralf Geschäftskunde 491732222222 Schröder VIP-Kunde 491709988776
3.1.2 Ausgabe der Kundengruppen mit deren Anzahl an Kunden, absteigend sortiert nach Kundengruppen - 4 Punkte Kundengruppenn -------------------------------------------------VIP-Kunde Privatkunde Geschäftskunde
Kundenanzahl -----------2 2 2
Sommersemester 2009 Prüfungsfach:
Seite 6/15
Datenbanken I
Matrikelnummer:
3.2 Datenveränderung 3.2.1 Sie stellen fest, dass Sie einen neuen Kunden einfügen müssen, der einer neuen Kundengruppe angehört und eine neue Telefonnummer hat. Schreiben Sie die SQLStatements mit den folgenden Daten: - 3 Punkte strName strKundengruppenname strTelefonnummer
Michael Billigtarif 491778765430
3.2.2 Erläutern Sie kurz, auf welcher Basis Sie die Reihenfolge der Einfügeanweisungen bestimmt haben und woran dies liegt? - 3 Punkte
3.3 Die Regulierungsbehörde für Telekommunikation möchte wissen welche Rufnummern in der Datenbank ohne Kundenreferenz gespeichert sind. Wie lautet die SQL-Anweisung dafür, falls es solche Telefonnummern gäbe. - 3 Punkte
Sommersemester 2009 Prüfungsfach:
Datenbanken I
Seite 7/15 Matrikelnummer:
3.4 Sie sollen für jeden Kundennamen die zu einzelnen Gesprächen gehörende Gesprächsdauer berechnen. Schreiben Sie das entsprechende SQL-Statement. Sie können die Funktion DATEDIFF (minute , Startdatum , Enddatum) als gegeben voraussetzen, welche Ihnen die Differenz von zwei Datumswerten in Minuten errechnet. - 4 Punkte
Sommersemester 2009 Prüfungsfach:
4.
Datenbanken I
Seite 8/15 Matrikelnummer:
Aufgabenblock zum Thema „Programmieren von DBMS mit Java“ – 20 Punkte
4.1 Gegeben sei folgendes SQLJ-Programm, welches für alle Kunden die gespeicherten Telefonnummer ausgeben soll. Grundlage für diese Aufgabe ist das erweiterte Datenmodell mit der Ergänzung der Mehrfachtelefonnummer. package MakeMeReady; import java.sql.*; import sqlj.runtime.ref.DefaultContext; import javax.swing.JOptionPane; // // Frage 4.2 // // // Frage 4.4 // #sql iterator Kunden
public class Exam { public static void main(String[] args) { try { String dburl="jdbc:oracle:thin:"+"@10.10.10.10:1521:XYZ"; String dbdriver="oracle.jdbc.driver.MyDBMSDriver"; Class.forName(dbdriver).newInstance(); DefaultContext context=new DefaultContext( DriverManager.getConnection(dburl)); DefaultContext.setDefaultContext(context); System.out.println("Alle Kunden und deren Rufnummer:"); // // Frage 4.4 //
}// try catch (Exception e1) { e1.printStackTrace(); } // e1 } // main } // class MakeMeReady
Sommersemester 2009 Prüfungsfach:
Seite 10/15
Datenbanken I
Matrikelnummer:
4.2 Wozu dient die Zeile bei Kommentar // Frage 4.2 ? - 3 Punkte
4.3 Was macht der SQLJ-Vorübersetzer aus einem „#sql iterator“? - 3 Punkte
4.4 Schreiben Sie den Iterator und eine SQL-Anweisung, die alle Kunden und deren Rufnummern ausgibt. - 7 Punkte
4.5 Schreiben Sie den Iterator und eine SQL-Anweisung, die für einen vorgegebenen Kunden alle Telefonumsätze wie im folgenden Beispiel ausgibt: - 7 Punkte strName strTelefonnummer -------------------------------Dieter 491727654321 Dieter 491727654321
5. Aufgabenblock zum Thema „Transaktionen“ – 15 Punkte Gegeben ist folgendes Szenario zweier parallel ablaufender Transaktionen, die alleine (d.h. es gibt keine weiteren Transaktionen) auf dem gleichen Datenbestand arbeiten: Zeile/Zeit Transaktion T1 1
Transaktion T2
UPDATE emp
3
SET sal = 9999
4
WHERE empno = 666;
SET TRANSACTION
t2 -- Mittagspause
ISOLATION LEVEL READ
6
COMMITTED;
7
BEGIN TRAN
8
SELECT empno
9
Ausgabe T2
t1 BEGIN TRAN
2
5
Ausgabe T1
t3
FROM emp
10
WHERE empno < 777;
11
COMMIT;
12 13 14 15 16 17 18 19 20 21
t4 COMMIT; 1 row(s) affected
22
empno
23
-----------
24
555
25
666
26 27 28 29 30
Die Transaktion T2 wartet somit bis nach Zeitpunkt t4.
2 row(s) affected
Sommersemester 2009 Prüfungsfach:
Datenbanken I
Seite 12/15 Matrikelnummer:
5.1 Warum wartet die Transaktion T2 bis zum Zeitpunkt t4? – 5 Punkte Verwenden Sie in Ihrer Begründung bitte die Begriffe Dirty Read, Sperrgranulat, Transaktion, Transaktionsebene, X-Lock, Zeilensperre. Nehmen Sie in Ihrer Begründung bitte auch Bezug auf die in der linken Spalte angegebenen Zeitpunkte bzw. Zeilennummern.
5.2 Die in Zeile 20 durch Transaktion T2 gesetzte Transaktionsebene schützt nicht vor Phantom Reads. Was sind Phantom Reads? – 5 Punkte
Sommersemester 2009 Prüfungsfach:
Datenbanken I
Seite 13/15 Matrikelnummer:
5.3 Die in Zeile 20 durch Transaktion T2 gesetzte Transaktionsebene schützt wie gesagt nicht vor Phantom Reads. Vor welcher weiteren Fehlerklasse ist T2 nicht geschützt? Der Name reicht. – 5 Punkte
Sommersemester 2009 Prüfungsfach:
Seite 14/15
Datenbanken I
Anhang Datenbankschema für Aufgabe 3 tbl_Kunden
tbl_Umsatz
Spaltenname
Datentyp
NULL-Werte zulassen
Spaltenname
Datentyp
id
bigint
id
bigint
strName
nvarchar(255)
fk_Telefon
bigint
fk_Telefon
bigint
dtStart
datetime
fk_Kundengruppe
bigint
dtEnd
datetime
tbl_Kundengruppe
NULL-Werte zulassen
tbl_Telefon
Spaltenname
Datentyp
NULL-Werte zulassen
Spaltenname
Datentyp
id
bigint
id
bigint
strKundengruppenname
nvarchar(50)
strTelefonnummer
varchar(12)
NULL-Werte zulassen
Daten der Tabellen: tbl_Kunden id -------------------2 3 4 5 6 7