Hochschule Karlsruhe Technik und Wirtschaft

Hochschule Karlsruhe – Technik und Wirtschaft Sommersemester 2009 Fakultät: Seite 1/15 Fakultät für Informatik und Wirtschaftsinformatik Semester: ...
2 downloads 4 Views 727KB Size
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 //

Sommersemester 2009 Prüfungsfach:

Datenbanken I

Seite 9/15 Matrikelnummer:

System.out.println("\n\nKunde '" + args[0] +"' hat telefoniert:"); // // Frage 4.5 //

}// 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

dtStart ----------------------2009-07-04 20:54:47.700 2009-07-04 20:57:33.477

dtEnd ----------------------2009-07-04 20:54:47.700 2009-07-04 20:57:33.477

Gesprächsdauer -------------0 0

Sommersemester 2009 Prüfungsfach:

Seite 11/15

Datenbanken I

Matrikelnummer:

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

strName fk_Telefon fk_Kundengruppe ------------------------------------------------------Hans 1 1 Dieter 2 1 Ralf 3 2 Christine 4 2 Madonna 5 3 Schröder 6 3

tbl_Kundengruppe id -------------------1 2 3

tbl_Telefon strKundengruppenname ---------------------Privatkunde Geschäftskunde VIP-Kunde

id -------------------1 2 3 4 5 6

strTelefonnummer ---------------491711234567 491727654321 491732222222 491743333333 491754444444 491709988776

tbl_Umsatz id -------------------1 2 3 4 5 8 9 10 11 12 13 14 15

fk_Telefon -------------------2 1 3 4 5 2 1 1 1 3 2 5 1

dtStart ----------------------2009-07-04 20:54:47.700 2009-07-04 20:54:47.700 2009-07-04 20:54:47.700 2009-07-04 20:54:47.700 2009-07-04 20:54:47.700 2009-07-04 20:54:47.700 2009-07-04 20:54:47.700 2009-07-04 20:54:47.700 2009-07-04 20:54:47.700 2009-07-04 20:57:33.477 2009-07-04 20:57:33.477 2009-07-04 20:57:33.477 2009-07-04 20:57:33.477

dtEnd ----------------------2009-07-04 21:54:47.700 2009-07-04 20:55:57.700 2009-07-04 20:58:47.700 2009-07-04 20:55:10.700 2009-07-04 20:56:47.700 2009-07-04 20:57:47.700 2009-07-04 20:55:00.700 2009-07-04 20:56:18.700 2009-07-04 20:55:47.700 2009-07-04 20:59:33.477 2009-07-04 21:17:33.477 2009-07-04 21:07:33.477 2009-07-04 20:59:33.477

Sommersemester 2009 Prüfungsfach:

Seite 15/15

Datenbanken I

Datenbankschema (erweitert) für Aufgabe 4 tbl_Kunden2Telefon * Spaltenname

tbl_Kunden * Spaltenname

Datentyp

id

bigint

strName

nvarchar(255)

fk_Telefon

bigint

fk_Kundengruppe

bigint

Datentyp

id

bigint

fk_Kunden

bigint

fk_Telefon

bigint

NULL-Werte zulassen

tbl_Telefon *

NULL-Werte zulassen

Spaltenname

Datentyp

id

bigint

strTelefonnummer

varchar(12)

NULL-Werte zulassen

tbl_Umsatz Spaltenname

tbl_Kundengruppe Spaltenname

Datentyp

id

bigint

strKundengruppenname

nvarchar(50)

NULL-Werte zulassen

Datentyp

id

bigint

fk_Telefon

bigint

dtStart

datetime

dtEnd

datetime

Daten der neuen und veränderten Tabelle: tbl_Kunden id -------------------2 3 4 5 6 7

strName fk_Telefon fk_Kundengruppe ------------------------------------------------------Hans NULL 1 Dieter NULL 1 Ralf NULL 2 Christine NULL 2 Madonna NULL 3 Schröder NULL 3

tbl_Kunden2Telefon id -------------------1 2 3 4 5 6 7

fk_Kunden -------------------2 2 3 4 5 6 7

fk_Telefon -------------------2 1 3 4 6 5 7

NULL-Werte zulassen

Suggest Documents