Prfg_Dbs1_Aug11_Walkthrough 1 - HSR-Wiki

Werbung
Modul Datenbanksysteme 1
Prüfung (Auszug)
Seite
1
Modul Datenbanksysteme 1
Prüfung (Auszug)
Name: ______________________ Note: ____
Nr.
Aufgaben
Punkte
1 Grundlagen
2 Datenmodellierung und DB-Entwurf
3 DB-Entwurf
4 Relationenmodell und Relationale Algebra
5 SQL
6 JDBC
7 Security
8 Transaktionen
9 O/R-Frameworks
Total:
Hinweise allgemein:
• Unterlagen: Es ist eine Zusammenfassung von 1 A4-Blatt zugelassen, allenfalls beidseitig bedruckt (keine 2 A4-Blätter einseitig bedruckt). Alles darauf soll ohne spezielle Hilfsmittel lesbar
sein.
• Es sind keine elektronischen Hilfsmittel zugelassen; Handy auf lautlos geschaltet?
• Keine Fragen während der Prüfung. Bei Unklarheiten sind sinnvolle Annahmen zu treffen und
diese klar zu dokumentieren.
• Keine rote Farbe und Bleistift nur mit auf dem Prüfungsblatt vermerkter Begründung verwenden.
Hinweise zum Prüfungsbeginn:
• Allfällig bereitliegende Prüfung nicht umdrehen oder umblättern bis die Aufsichtsperson explizit
das Ok dazu gegeben hat.
• HSR-Badge oder pers. Ausweis (ID/Fahrausweis mit Foto) sichtbar auf den Tisch legen.
• Versehen Sie mindestens die Titelblätter mit Ihrem Namen.
• Alles in leserlicher Schrift!
• Bitte nur jemand aufs Mal austreten.
Hinweise zur Prüfungsabgabe:
• Kontrollieren Sie nochmals ob die Prüfung mit Ihrem Namen versehen ist. Geben Sie alle Blätter – auch von nicht gelösten Aufgaben – geordnet und wenn möglich geheftet ab.
• Bis 20 min. vor Prüfungsende: Geben Sie ein Zeichen und lassen Sie sich die Prüfung von der
Aufsichtsperson abholen. Verlassen Sie dann leise den Raum.
• Ab 20 min. vor Prüfungsende: Drehen Sie Ihre Prüfung um und warten Sie bis Prüfungsende.
• Zuspätkommende müssen die Prüfung mit den Anderen abgeben.
Hinweise zur Prüfungsbewertung:
• Die Antworten und Lösungen müssen nachvollziehbar sein.
• Die Bewertungspunkte der Aufgaben können nach der Korrektur noch geringfügig variiert werden.
• Die Prüfung kann Multiple Choice-Fragen enthalten. Beachten Sie dort den Begleittext.
Prfg_Dbs1_Aug11_Walkthrough.doc
Modul Datenbanksysteme 1
Prüfung (Auszug)
Seite
2
Aufgaben 1 Grundlagen
Aufgabe (2 Punkte)
Was versteht man unter "Dangling Tuples" in der relationalen Algebra? (Multiple Choice)
[_] Tupel, die nicht gesichert werden.
[_] Tupel, denen bei Join-Operationen die entsprechenden Tupel in der anderen Relation fehlen,
mit denen sie verknüpft werden könnten.
[_] Tupel, denen Attributwerte fehlen.
[_] Tupel in einer Relation, deren Werte in den Fremdschlüssel-Attributen auf Werte in der anderen
Relation verweisen, die dort nicht (mehr) existieren.
Aufgabe 1.3 JOINs (4 Punkte)
Bestimmen Sie den linken Outer-Join der folgenden beiden Relationen über R1.S1 = R2.S3!
R1:
S1 S2
A
W
C
Y
R2:
S3 S4
C
Y
D
Z
Bitte die richtige Antwort ankreuzen (Multiple Choice):
[_]
S1 S2
A W
C Y
? ?
S3
?
C
D
S4
?
Y
Z
[_] Keine dieser Ergebnismengen ist richtig.
[_]
S1 S2 S3 S4
C Y C Y
[_]
S1 S2 S3 S4
A W ? ?
C Y C Y
[_]
S1 S2 S3 S4
C Y C Y
? ? D Z
Prfg_Dbs1_Aug11_Walkthrough.doc
Modul Datenbanksysteme 1
Prüfung (Auszug)
Seite
3
Aufgaben 2 Datenmodellierung
Aufgabe 2.1 (10 Punkte)
Vervollständigen Sie das folgende UML-Diagramm für eine Schule um Identifikatoren und vollständig definierten Beziehungen…
Prfg_Dbs1_Aug11_Walkthrough.doc
Modul Datenbanksysteme 1
Prüfung (Auszug)
Seite
4
Aufgaben 3 DB-Entwurf
Aufgabe Abbildungsregeln (4 Punkte)
Abbildung einer Assoziativen Klasse: Setzen Sie das folgende UML-Diagramm in die relationale
Schreibweise um. Führen Sie wo nötig zusätzliche Attribute ein. Es ist aus folgenden Attributtypen
auszuwählen: NUMBER, INT[EGER], DECIMAL[(10,2)], STRING [(30)], DATE, TIME, DATETIME
und BOOLEAN.
Figur: UML-Diagramm für mehrsprachige (Frage-)TextElemente, die über die Tabelle „Frage“ verwaltet werden. Ein Beispiel für isoCode und isoBezeichnung ist „de“ und „Deutsch“.
Prfg_Dbs1_Aug11_Walkthrough.doc
Modul Datenbanksysteme 1
Prüfung (Auszug)
Seite
5
Aufgaben 4 Relationenmodell und Relationale Algebra
Aufgabe 4.2: Relationale Algebra (2 Punkte):
Wenn zwei Relationen R und S in SQL mit einem Natural Join verbunden werden, dann
[_] muss Relation R mehr Tupel als Relation S beinhalten
[_] ermittelt man alle Tupel aus R und S, die übereinstimmen
[_] müssen die Relationen R und S mindestens ein gleich bezeichnetes Attribut haben
=> 3.
Auszug aus PG-Manual: “NATURAL is a shorthand form of USING: it
forms a USING list consisting of exactly those column names that
appear in both input tables. As with USING, these columns appear
only once in the output table.”
Aufgabe 4.3 Normalisierung (2 Punkte)
Gegeben sei das Relationenschema einer Relation R(A, B, C) mit den mit funktionalen Abhängigkeiten A -> B, C und B -> C.
Welche der folgenden Antworten entspricht einer verlustfreien und abhängigkeitstreuen Zerlegung
in die 2NF?
[_] R={A,B,C}
[_] R1={A,B,C} und R2 ={A,C}
[_] R1={A,B,C} und R2 ={B,C}
[_] R1={A,B} und R2 ={B,C}
=> 1.
Erklärung: In der 2.NF werden partielle funktionale Abhängigkeiten aufgelöst. Hier handelt es sich jedoch um eine transitive
funktionale Abhängigkeit, die jedoch erst in der 3.NF aufgelöst
wird. Daher gilt hier 1.NF=2.NF.
Eine Relation R ist in der ersten Normalform (1NF), wenn alle
Attribute nur atomare Werte (keine mengenwertigen Datentypen)
enthalten.
Eine Relation R mit Primärschlüssel S befindet sich in der zweiten Normalform (2NF), wenn sie (1NF) ist und jedes Nichtschlüsselattribut voll funktional abhängig vom Primärschlüssel S ist.
Eine Relation R ist in der dritten Normalform (3NF), wenn sie
sich in der ersten und der zweiten Normalform befindet und kein
Nichtschlüsselattribut transitiv abhängig von einem Schlüsselattribut ist.
Prfg_Dbs1_Aug11_Walkthrough.doc
Modul Datenbanksysteme 1
Prüfung (Auszug)
Seite
6
Aufgaben 5 SQL
Aufgabe 5.1 SQL-DML (6 Punkte)
Gegeben sei folgender Ausschnitt eines relationalen Schemas einer Datenbank (GrossKleinschreibung irrelevant):
Spieler (Spieler_id, Name, Adresse, Geburtsdatum)
Vereine (V_Kuerzel, Vereinsname, Ort, Gruendungsjahr)
Spiele (Spiel_id, Heim_V_Kuerzel, Gast_V_Kuerzel, Spieltag, Ergebnis, Anzahl_Zuschauer)
Spieleinsatz (Spiel_id, Spieler_id, von_Minute, bis_Minute)
Welche der angegeben SQL-Abfragen beantworten die Anfrage: Welche Vereine (Kürzel, Name)
haben wenigstens ein Auswärtsspiel, also wenigstens ein Spiel als Gastmannschaft in der Rückrunde (Spieltag 18-34) absolviert? (Multiple Choice)
[_] SELECT v_kuerzel, vereinsname
FROM verein, spiele
WHERE v_kuerzel = gast_v_kuerzel
AND spieltag BETWEEN 18 AND 34;
[_] SELECT v_kuerzel, vereinsname
FROM verein, spiele
WHERE v_kuerzel = gast_v_kuerzel
AND spieltag >= 18 AND spieltag =< 34;
[_] SELECT v_kuerzel, vereinsname FROM verein
WHERE v_kuerzel IN
(SELECT * FROM spiele
WHERE spieltag BETWEEN 18 AND 34);
[_] SELECT v_kuerzel, vereinsname FROM verein
WHERE EXISTS
(SELECT * FROM spiele
WHERE spieltag BETWEEN 18 AND 34
AND gast_v_kuerzel = v_kuerzel);
=> RICHTIG sind: Alle ausser 3.
Die Teilaussage "...welche Vereine haben gespielt..." kann durch
einen (Natural) Join, einen IN- oder auch einen EXISTS-Operator
formuliert werden. Da der BETWEEN-Operator die Grenzen mit einschliesst, muss die Simulation <= und >= verwenden. Die dritte
Anfrage wird korrekt, wenn * mit „gast_v_kuerzel“ ersetzt wird.
Aufgabe 5.6 SQL-DML (8 Punkte)
Betrachten Sie die folgende Frage an eine Auftrags-/Kunden-Tabelle: Schreiben Sie ein SQLAnfrage „Kunden, die einen Auftrag aufgegeben haben“
Prfg_Dbs1_Aug11_Walkthrough.doc
Modul Datenbanksysteme 1
Prüfung (Auszug)
Seite
7
Aufgaben 6 JDBC
Aufgabe 6.1 JDBC (8 Punkte)
Sie werden als Programmierer mit der Realisierung eines Personalverwaltungssystems beauftragt,
wo Sie auch für die Datenbank zuständig.
Notieren Sie den vollständigen Java-Code einer Methode, welche die Anzahl Mitarbeiter berechnet
und das Resultat mit System.out.println() ausgibt. Beachten Sie dabei, dass das Netzwerk möglichst wenig belastet wird.
private static void anzAngestellte() {
Connection conn = null;
try {
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection("jdbc:postgresql://localhost/firma",
"test", "test");
Prfg_Dbs1_Aug11_Walkthrough.doc
Modul Datenbanksysteme 1
Prüfung (Auszug)
Seite
8
Aufgaben 7 Security und Transaktionen
Aufgabe 7.1 Konzepte (4 Punkte)
Was versteht man unter den ACID-Eigenschaften einer Transaktion, bzw. einer Datenbank? (Begriffe bitte in Englisch eintragen) und mit einem, zwei ganzen (deutschen) Sätzen definieren.
=> Atomicity, Consistency, Isolation, Durability.
Aufgabe 7.4 WAL (4 Punkte)
Erklären Sie das WAL-Prinzip in einigen klaren Sätzen.
=> Siehe Folien
Aufgabe 7.5 Rechte (4 Punkte)
Was passiert mit den Rechten von Benutzer C wenn Benutzer A dem Benutzer B die Rechte entzieht, die vorher er C weitergegeben hat?
=> kommt auf die Option an: Mit „With Cascade“ wird sie C auch
entzogen.
Prfg_Dbs1_Aug11_Walkthrough.doc
Modul Datenbanksysteme 1
Prüfung (Auszug)
Seite
9
Aufgabe 7.5 Transaktionen Schedules (12 Punkte)
Eine Datenbank hat die folgenden aktuellen Werte: X=20, Y=50.
Gegeben sind zwei Transaktionen T1 und T2 mit folgenden Operationen:
T1: B1 : begin transaction, R1(Y) : y=read(Y), R1(X) : x=read(X), W1(Y) : write(y+(x*0.5),Y), C1 :
commit;
T2: B2 : begin transaction, R2(X) : x=read(X), R2(Y) : y=read(Y), W2(X) : write(x+(y*0.2), X), C2 :
commit;
a) Erstellen Sie eine serialisierbare Schedule S1 der Operationen. Nutzen Sie B1, R1(X), R1(Y)
etc. als Identifier für die Schritte. (1 Punkt)
Schritt
1
2
3
4
5
6
7
8
9
10
Operation:
Wert von X
nach Schritt
Wert von Y
nach Schritt
b) Wie sind die Werte von X und Y nach der Ausführung dieser Schedule? (1 Punkt)
X=
; Y=
c) Geben Sie eine andere serialisierbare Schedule S2 an, welche zu einem ein anderes Ergebnis
für X und Y führt. Geben Sie das Ergebnis an. (2 Punkte)
S2:
Schritt
Operation:
1
2
3
Wert von X
nach Schritt
Wert von Y
nach Schritt
X=
Prfg_Dbs1_Aug11_Walkthrough.doc
;
Y=
4
5
6
7
8
9
10
Herunterladen