Gruppe B Bitte tragen Sie SOFORT und LESERLICH Namen und Matrikelnr. ein, und legen Sie Ihren Studentenausweis bereit. PRÜFUNG AUS DATENMODELLIERUNG (181.117) GRUPPE B MUSTERLÖSUNG Matrikelnr. Familienname 19. 1. 2011 Vorname Arbeitszeit: 60 Minuten. Die Aufgaben sind auf den vorgesehenen Blättern zu lösen; Zusatzblätter werden nicht gewertet. Aufgabe 1: (13) a) Bestimmen Sie für folgendes Relationenschema (R, F ), R = ABCDEF G, alle Schlüssel. Berechnen Sie eine verlustlose und abhängigkeitstreue Zerlegung in 3NF mit Hilfe des Synthesealgorithmus (F ist schon in kanonischer Form). Unterstreichen Sie in jeder Relation der Zerlegung einen Schlüssel. [5] F = { C→ABDG, BF→A, AC→BG } RS R Schlüssel CEF . . . . . . . Zerlegung in 3NF (Einen Schlüssel in jeder Relation unterstreichen) R1 CABDG . . . . . R2 BFA . . . . . . . R5 R6 ........... R3 CEF . . . . . . . R4 ........... ........... b) Geben Sie für die folgenden Relationenschemata (Ri , Fi ), i ∈ {1, 2}, Ri = ABCDEF G, sämtliche Schlüssel an. Weiters geben Sie an, welche Normalform sie erfüllen, indem Sie die richtigen Antworten ankreuzen. [8] Achtung: pro korrekter Lösung: 1 Punkt, pro falscher Lösung -1 Punkt, insgesamt zumindestens 0 Punkte. Abhängigkeiten Schlüssel 3NF F1 ={ABDE→CFG, DEF→A} F2 ={B→BEF, DE→AC, A→BDG } ABDE, BDEF A,BD,DE . . ja × ja BCNF nein nein × ja ja nein × nein × Aufgabe 2: (4) Gegeben ist ein Relationenschema ABCDEFG und die Menge F von funktionalen Abhängigkeiten. Bestimmen Sie die kanonische Überdeckung. F = { BG→F, CG→AE, ABE→D, A→BD, ACEG→AE, CG→D, FG→C } Fc ={ A→BD, BG→F, CG→AE, FG→C } Aufgabe 3: (16) Eine Reederei bietet ihren Kunden Kreuzfahrten zu den schönsten Orten der Welt an und benötigt dafür eine Datenbank. Zeichnen Sie aufgrund der vorliegenden Informationen ein ER-Diagramm. Verwenden Sie dabei die [min,max] Notation. Es sind keine Nullwerte erlaubt. Jede angebotene Kreuzfahrt wird in der Datenbank vermerkt: Der Name der Kreuzfahrt (NAME) in Kombination mit dem Beginndatum (BEGINN) identifizieren die Kreuzfahrt eindeutig. Zusätzlich ist das Enddatum der Kreuzfahrtreise (ENDE) bekannt. Jede Kreuzfahrt besteht aus mehreren Teilstrecken, mindestens allerdings aus drei. Jede Teilstrecke hat eine pro Kreuzfahrt eindeutige Nummer (NUMMER), welche angibt, um die wievielte Teilstrecke der Kreuzfahrt es sich handelt. Weiters werden alle angelaufenen Häfen in der Datenbank vermerkt. Von jedem Hafen sind ein eindeutig identifizierender Name (NAME), der Ort (ORT), das Land (LAND) und der Kontinent (KONTINENT) in dem sich der Hafen befindet, bekannt. Jede Teilstrecke verläuft von genau einem Hafen zu genau einem anderen Hafen. Zusätzlich ist bekannt, wann das Schiff ablegt (ABFAHRT) und wann es im Zielhafen ankommt (ANKUNFT). In der Datenbank speichert man alle Schiffe der Reederei. Ein Schiff hat eine weltweit eindeutige Identifikationsnummer (INO), einen von der Reederei eindeutig vergebenen Namen (NAME), sowie eine bestimmte Klasse (KLASSE) und ein Ankaufsdatum (ANKAUF). Optional kann zu jedem Schiff ein Schiffsplan (PLAN) gespeichert werden. Jeder Kreuzfahrt wird genau ein Schiff zugeordnet, mit dem die Fahrt durchgeführt wird. Jedes Schiff bietet zehn bis 600 Kabinen an, welche pro Schiff durch eine Kabinennummer (KNR) eindeutig identifiziert werden. Zusätzlich sind die Größe der Kabine (GRÖSSE) sowie eine Kabinenbezeichnung (BEZEICHNUNG) bekannt. Mitarbeiter werden eindeutig identifiziert durch eine ID (MID). Weiters sind Vorname (VORNAME) und Nachname (NACHNAME) bekannt. Man unterscheidet zwischen drei Gruppen von Mitarbeitern: Offizier, Service und Verwaltung. Bei jeder Kreuzfahrt gibt es mindestens drei Offiziere, die das Schiff steuern sowie beliebig viele Mitarbeiter aus dem Servicebereich, die auf dem Schiff arbeiten. Pro Kreuzfahrt muss für jeden Offizier bzw. Servicemitarbeiter gespeichert werden, in welcher Rolle (ROLLE) er auf dieser Kreuzfahrt beschäftigt ist (Ein Offizier kann beispielsweise als ’Kapitän’, ’Erster Offizier’, ’Steuermann’, ... eingeteilt sein, ein Servicemitarbeiter als ’Concierge’, ’Koch’, ’Butler’, ...) In der Datenbank werden alle Buchungen festgehalten: Eine Buchung hat eine eindeutige ID (ID) sowie einen Gesamtpreis (PREIS) und ein Buchungsdatum (DATUM). Zu jeder Buchung wird genau eine gebuchte Kreuzfahrt gespeichert. Reisende werden ebenfalls gespeichert: Diese werden durch ihre Passnummer (PNR) eindeutig identifiziert. Weiters sind der Vorname (VORNAME), Nachname (NACHNAME) sowie das Geburtsdatum (GEBDAT) bekannt. Pro Buchung können beliebig viele Reisende beliebig viele Kabinen belegen. Es muss daher in der Datenbank ersichtlich sein, welcher Reisende bei welcher Buchung welche Kabine belegt. Aufgabe 4: Gegeben sind die Relationen R(ABC) mit 8 Tupeln, S(BCD) mit 11 Tupeln und T (CDE) mit 6 Tupeln. (6) Geben Sie die minimale bzw. maximale Größe (= Anzahl der Tupel) der durch die folgenden Ausdrücke entstehenden Relationen an: Ausdruck R T ΠB (ΠBC R ∪ ΠBC S) ΠD (σA<3 R × S) min. Ergebnisgröße max. Ergebnisgröße 8 .......... 8 .......... 0 .......... 48 . . . . . . . . 19 . . . . . . . . 11 . . . . . . . . Aufgabe 5: Kreuzen Sie die zuteffende Antwort zu den folgenden Aussagen an. (6) 1. Es kann in gewissen Relationen vorkommen, dass die Transitivität von Funktionalen Abhängigkeiten (FDs) nicht gilt. Also es gilt α → β und β → γ, aber nicht α → γ. wahr falsch × 2. In SQL werden bei der Vereinigung mittels UNION mehrfach vorkommende Ergebnistupel entfernt. wahr × falsch 3. Um Speicherplatz zu sparen und Redundanzen zu vermeiden, werden immer alle Entitäten bei der Überführung ins Relationenmodell durch Beziehungen dargestellt. wahr falsch × 4. Immer wenn ein Relationenschema in BCNF ist, ist es auch in 3. Normalform. wahr × falsch 5. Der Unterschied zwischen einem Superschlüssel und einem Schlüssel besteht darin, dass der Schlüssel nicht minimal sein muss. wahr falsch × 6. Der Mengendurschnitt R ∩ S lässt sich im Allgemeinen auch wie folgt ausdruecken: (R × R) ∪ (S × S) R − (S − R) (S × R) − (S × R) R − (R − S) × Keine der genannten (Pro korrekter Antwort 1 Punkt, pro inkorrekter Antwort -1 Punkt, pro nicht beantworteter Frage 0 Punkte, für die gesamte Aufgabe mindestens 0 Punkte) Gesamtpunkte: 45