-1- Klausur Datenmanagement im SS 2009 Themensteller: Prof. Dr. Jörg Becker Die Bearbeitungszeit für die Klausur beträgt 120 Minuten. Bearbeiten Sie alle 5 Aufgaben. Sie können maximal 120 Punkte erreichen. Nutzen Sie im Klausurheft bitte Vorder- und Rückseiten. Das Aufgabenheft umfasst 11 Seiten. AUFGABE 1: MODELLIERUNG MIT ERM (35 PUNKTE) Ein städtisches Krankenhaus möchte Patientenverwaltungssystem mittels einer relationalen Datenbank unterstützen. Sie werden damit beauftragt, die fachkonzeptionelle Spezifikation der Datenstrukturen zu erstellen. Der Chef des Hospitals gibt Ihnen dazu die folgenden Informationen: „Vielleicht sage ich zunächst etwas zu unseren Verwaltungsstrukturen. Wir teilen unser Personal generell in zwei Kategorien: Verwaltungspersonal und medizinisches Personal. Medizinisches Personal wird für einen bestimmten Zeitraum einer Station zugeordnet, d.h. in dieser Zeit arbeiten die Leute in der jeweiligen Station. Diese Mitarbeiter können im Zeitverlauf anderen Stationen zugeordnet werden. Bei medizinischem Personal wird noch weiter unterschieden in Pflegepersonal und Ärzte. Einer Station wird immer ein Arzt als medizinische Leitung zugeordnet, über verschiedene Zeiträume kann diese Rolle durch unterschiedliche Ärzte wahrgenommen werden. Kommen Patienten zu einem Zeitpunkt zu uns, sprechen wir von einer Aufnahme. Einer Aufnahme können mehrere Untersuchungen folgen, mindestens jedoch eine – die Untersuchungen beziehen sich immer auf genau eine Aufnahme. Jede Untersuchung wird von einem Arzt durchgeführt, darüber hinaus soll für alle Untersuchungen der Zeitpunkt und der jeweilige Befund festgehalten werden. Aus einer Untersuchung kann eine Therapie resultieren, das muss jedoch nicht sein. Die verordnete Therapie muss jedoch genau auf die entsprechende Untersuchung verweisen, zu der sie verordnet wurde. Bei den Therapien unterscheiden wir medikamentöse Behandlung und die Operation. Oftmals ist auch beides Bestandteil einer Therapie, darüber hinaus gibt es noch andere Therapieformen (z.B. ReHa-Maßnahmen usw.). Eine Operation wird immer von mindestens einem Arzt durchgeführt. Patienten können stationär aufgenommen werden. Im System heißt das: ein Patient belegt ein Bett für einen bestimmten Zeitraum. Alle Betten sind jeweils genau einer Station zugeordnet, eine Station kann keine (Ambulanz) bis beliebig viele Betten haben. Eine Station kann darüber hinaus über Operationssäle verfügen. Alle Operationen finden entsprechend immer in genau einem solchen einer Station zugeordneten OP-Saal statt.“ -2a) Erstellen Sie mit Hilfe der oben ausgeführten Informationen ein Datenmodell in der EntityRelationship-Notation. Beachten Sie dabei folgende Richtlinien: • Auf die Modellierung von Attributen kann verzichtet werden. • Zeit(raum)abhängige Typen sind so zu modellieren, dass sichergestellt wird, dass die Zeit zum Primärschlüsselbestandteil des jeweiligen Typen wird. • Generalisieren Sie sinnvoll. Geben Sie dabei immer den Typ der Generalisierung/Spezialisierung an. • Relationshiptypen sind grundsätzlich zu benennen. Auf eine Benennung kann jedoch verzichtet werden, wenn aus dem Relationshiptyp bei der Überführung in ein Relationenschema keine Tabelle resultiert. • Das Modell sollte zur besseren Lesbarkeit in Teilmodelle gegliedert werden. Dabei sind redundant modellierte Knoten mit einer gemeinsamen Nummer als identisch zu kennzeichnen (siehe Bild). (30 Punkte) b) Das folgende ERM repräsentiert eine Datenbankstruktur, die in einer SQL-Datenbank implementiert wurde. Die Datenbank wurde so implementiert, dass die referentielle Integrität gemäß dem dargestellten Modell jederzeit garantiert ist. 150 C (0,1) 250 A 40 (0,n) X (1,n) Folgendes ist Ihnen über die Daten in der Datenbank bekannt: B -3• Tabelle A enthält genau 250 Datensätze • Tabelle B enthält genau 40 Datensätze • Tabelle C enthält genau 150 Datensätze Beantworten Sie folgende Fragen: I) Wie viele Datensätze enthält die Tabelle X mindestens und wie viele Datensätze kann sie höchstens enthalten? (2 Punkte) II) Aus der Tabelle B werden 10 Datensätze gelöscht. Wie viele Datensätze enthält die Tabelle X nach dieser Transaktion minimal bzw. maximal? (3 Punkte) -4- AUFGABE 2: MODELLÜBERFÜHRUNG (20 PUNKTE) a) Die Transformationsregeln zur Überführung eines ERMs in ein Relationenschema sind nicht immer eindeutig. Teilweise gibt es mehrere Möglichkeiten, ein ERM in ein Relationenschema zu überführen. Gegeben ist das folgende ERM: Stellen Sie zwei unterschiedliche Transformationsmöglichkeiten für dieses ERM in Relationenschemata dar, die zu unterschiedlichen Anzahlen von Tabellen führen. Nennen Sie dabei für jede Tabelle den Namen, unterstreichen Sie Primärschlüsselattribute, kennzeichnen Sie Fremdschlüsselattribute mit einer Raute (#) und machen Sie deutlich auf welche Tabelle sich der Fremdschlüssel bezieht. Geben Sie auch entsprechende Constraints an, sofern diese notwendig sind. (4 Punkte) b) Stellen sie kurz (in einem Satz) die Vor- bzw. Nachteile der unterschiedlichen Möglichkeiten aus a) dar. (1 Punkt) c) Gegeben ist das folgende ERM: -5Aus Gründen der Übersichtlichkeit wurden die Attribute der einzelnen Entity- und Relationshiptypen in einer Tabelle zusammen gefasst, dabei sind alle mit * gekennzeichneten Attribute Pflichtfelder. Fremdschlüssel sind nicht in der Tabelle erfasst: Objekttyp Attribut Beschreibung Autobauer ABId* Fortlaufende Nummer, die jeden ‚ Autobauer identifiziert Name* Der Name der Firma aktiv* Gibt an, ob der Autobauer noch aktiv Autos baut, oder nicht mehr im Geschäft ist Gründungsdatum Das Gründungsdatum des Autobauers FId* Fortlaufende Nummer, die jedes Fahrzeug eindeutig identifiziert Bezeichnung* Typ-Bezeichnung des Fahrzeugs KW Die Leistung des Fahrzeugs (in Kilowatt) Verbrauch Der Kraftstoffverbrauch des Fahrzeugs in l/100 km. EId* Fortlaufende Nummer, die jeden Eigentümer eindeutig identifiziert Name* Der Name des Eigentümers ETyp Der Eigentümertyp. Ein Eigentümer kann entweder „privat“, „gemeinnützig“ oder „gewerblich“ sein. Tel Telefonnummer des Eigentümers Fahrzeug Eigentümer Überführen Sie die Elemente dieses Modells in Relationen (Tabellen). Entscheiden Sie, welche Elemente des Modells zu Tabellen werden. Nennen Sie dabei für jede Tabelle den Namen, unterstreichen Sie Primärschlüsselattribute, kennzeichnen Sie Fremdschlüsselattribute mit einer Raute (#) und machen Sie deutlich auf welche Tabelle sich der Fremdschlüssel bezieht. Geben Sie auch entsprechende Constraints an, sofern diese notwendig sind. (6 Punkte) d) Formulieren Sie für die Relationen aus c) geeignete CREATE-STATEMENTS in SQL. Vergeben Sie dabei die notwendigen Fremdschlüssel, achten Sie auf referentielle Integrität und explizieren Sie dabei ihre Überlegungen, auch wenn es sich um SQL-Default-Werte handelt. Wählen Sie für die Spalten der Tabellen geeignete Datentypen. Trigger und Constraints müssten NICHT definiert werden. (9 Punkte) -6- AUFGABE 3: DATENBANKNORMALISIERUNG (30 PUNKTE) Die Müller Cargo Tier KG ist ein mittelständischer Logistikdienstleister, der sich auf Transporte verschiedenster Art spezialisiert hat. Um für die Auftragsplanung einen Überblick über die verschiedenen Frachtarten sowie die zu deren Beförderung zur Verfügung stehenden Fahrzeugtypen und Fahrer zu bekommen, ist die Entwicklung einer webbasierten, Datenbanklösung geplant. Der zuständige Projektleiter unterbreitet Ihnen einen Vorschlag für ein Relationenschema und gibt Ihnen noch zusätzlich die folgenden Hinweise. Zentrales Anliegen der Datenbanklösung ist es, den Disponenten darüber Auskunft zu geben, welche Fahrzeugtypen für die Beförderung der verschiedenen Frachtarten zur Verfügung stehen und welche Fahrer hierfür in Frage kommen. Von Fahrern werden hierzu Namen sowie die Fahrzeugtypen erfasst, die von diesen gelenkt werden dürfen. Ein Fahrzeugtyp kann dabei von mehreren Fahrern gelenkt werden. Ein Fahrer kann ebenfalls die Berechtigung für mehrere Fahrzeugtypen haben. Ein Fahrzeugtyp kann für den Transport mehrerer Frachtarten verfügbar sein. Eine Frachtart wird über die FrachtID identifiziert. Darüber hinaus wird das Frachtgut als Bezeichnung sowie die Gefahrenklasse benötigt. Die Gefahrenklasse ist insbesondere für die Bestimmung des Lagerortes und der Lagerdauer einer jeweiligen Frachtart von besonderem Interesse. Für die Beförderung einer Frachtart können mehrere Fahrzeugtypen zur Verfügung stehen. Einem Fahrer ist es möglich, Fahrzeugtypen mit unterschiedlichen Frachtarten zu lenken. Eine Frachtart kann selbstverständlich auch von mehreren Fahrern unter Verwendung von verschiedenen Fahrzeugtypen befördert werden. Bitte beachten Sie, dass Ihnen mit den Tabellen 1-3 jeweils nur einen Ausschnitt aus dem Gesamtdatenbestand zur Verfügung steht. Alle Teilaufgaben können unabhängig von einander bearbeitet werden. Einzelne Datensätze müssen nur angegeben werden, wenn diese zur Darstellung des Lösungsweges bzw. der Lösung erforderlich sind. a) Definieren Sie den Begriff der ersten Normalform. Bitte erläutern Sie, ob die Tabelle 1 in der ersten Normalform vorliegt. Überführen Sie diese Tabelle ggf. in Relationen der ersten Normalform. (4 Punkte) Tabelle 1 -7b) Definieren Sie den Begriff der zweiten Normalform. Bitte erläutern Sie, ob die Tabelle 2 in der zweiten Normalform vorliegt. Überführen Sie diese Tabelle ggf. in Relationen der zweiten Normalform. (3 Punkte) FahrzeugID FrachtID Gefahrenklasse LKW01 LKW02 LKW10 LKW99 LKW68 LKW01 A102 A225 A678 A153 A225 A678 unkritisch unkritisch ultrakritisch kritisch unkritisch ultrakritisch Tabelle 2 c) Definieren Sie den Begriff der dritten Normalform. Bitte erläutern Sie, ob die Tabelle 3 in der dritten Normalform vorliegt. Überführen Sie diese Tabelle ggf. in Relationen der dritten Normalform. (3 Punkte) Tabelle 3 d) Die beiden nachfolgend gegebenen Modelle in ERM-Notation beschreiben jeweils Beziehungen zwischen den Entitäten Fahrer, Frachtart und Fahrzeugtyp. Beschreiben Sie die inhaltliche Aussage der beiden Modelle und stellen Sie den inhaltlichen Unterschied zwischen Modell 1 und Modell 2 heraus. (4 Punkte) Modell 1 Fahrer Modell 2 (0,n) F-K-R-ZuO (0,m) Fahrzeugtyp Fahrzeugtyp Frachtart (0,m) (0,m) (0,n) Frachtart Fahrerlaubnis (0,n) Fahrer (0,n) Beförderungserlaubnis Gehen Sie im Weiteren abweichend von Aufgabe a) bis d) davon aus, dass Ihnen jeweils der vollständige Datenbestand vorliegt. Die nachfolgend gegebenen Tabellen stellen die Beziehungen zwischen den drei Entitäten Fahrer, Frachtart und Fahrzeugtyp dar. -8e) Definieren Sie den Begriff der vierten Normalform. Bitte erläutern Sie, ob die Tabelle 4 in der vierten Normalform vorliegt. Überführen Sie diese Tabelle ggf. in Relationen der vierten Normalform. (5 Punkte) FahzeugID FahrerID FrachtID LKW01 LKW10 LKW99 LKW68 LKW02 LKW10 LKW02 LKW68 P010 P120 P140 P050 P010 P140 P120 P050 A225 A678 A859 A225 A225 A859 A678 A325 Tabelle 4 f) Definieren Sie den Begriff der fünften Normalform. Erläutern Sie das Prinzip, welches der Prüfung auf fünfte Normalform zu Grunde liegt, anhand von Modellen in ERM-Notation. Beschreiben Sie die inhaltliche Aussage der einzelnen Modelle und stellen Unterschiede zwischen diesen heraus. Beziehen Sie sich dabei auf das Beispiel in Tabelle 5. (6 Punkte) Tabelle 5 g) Bitte erläutern Sie, ob Tabelle 5 in der fünften Normalform vorliegt und überführen sie diese ggf. in Relationen der fünften Normalform. Beschreiben Sie hierbei Ihr Vorgehen. Sie können davon ausgehen, dass sich die Tabelle bereits in der vierten Normalform befindet. (5 Punkte) -9- AUFGABE 4: STRUCTURED QUERY LANGUAGE (25 PUNKTE) Gegeben ist das in Abb. 4.1. dargestellte ERM als fachliche Spezifikation eines datenbankbasierten Systems zur Bestellungsabwicklung in einem Imbissstand. Es handelt sich hierbei um einen vereinfachten Ausschnitt. Die angebotenen Gerichte setzen sich ausschließlich aus einer Wurst- und einer Pommes-Komponente zusammen. Jede Wurst besitzt einen spezifischen Schärfegrad, der durch eine natürliche Zahl repräsentiert wird. Eine Übersicht über das zugrunde liegende Datenbankschema gibt Abb. 4.2. Abb. 4.1: Datenschema in ER-Notation Abb. 4.2: Datenschema in EER-Notation - 10 Formulieren Sie SQL-Abfragen, welche die folgenden Fragestellungen beantworten. Die Ergebnismenge der jeweiligen Abfragen soll vollständig und ausschließlich die gewünschten Informationen beinhalten. Die Abfragen sollen nicht komplexer als nötig sein (Es sollen z. B. nur die Tabellen verknüpft werden, die für das Ergebnis notwendig sind.). a) Formulieren Sie einen SQL-Befehl, der eine neue Bestellung des Stammkunden „Stefan Schmerz“ hinzufügt. Der Kunde (der im System die kundenID 666 besitzt) gab die Bestellung am 2009-01-01 um 10:00 Uhr ab. (2 Punkte) b) Formulieren Sie einen SQL-Befehl, der alle Würste löscht, welche einen Schärfegrad unter 5 aufweisen. (2 Punkte) c) Beim Einpflegen der Wurst „Zorn Gottes“, die unter der wurstID 777 gespeichert wurde, wurde fälschlicherweise der Schärfegrad 1 eingetragen. Der richtige Schärfegrad beträgt jedoch 8! Schreiben Sie einen SQL-Befehl, der diesen gefährlichen Fehler korrigiert. (2 Punkte) d) Schreiben Sie einen SQL-Befehl, der eine Liste mit Bezeichnungen der Würste ausgibt, welche einen Schärfegrad von mindestens 5 aufweisen. (2 Punkte) e) Geben Sie den durchschnittlichen Wert aller bisher abgegebenen Bestellungen aus. (Hinweis: Der Wert einer Bestellung ergibt sich aus der Summe der Preise der bestellten Gerichte, die jeweils mit der bestellten Menge multipliziert werden. Wenn z. B. ein Gericht für 3,50 € und zwei Gerichte für 3,00 € bestellt wurden, dann beträgt der Wert dieser Bestellung 1 * 3,50 € + 2 * 3,00 € = 9,50 €) (5 Punkte) f) Sie wollen wissen, für welche Schärfen sich der Kunde mit dem Namen „Flinsch“ interessiert. Basierend darauf, wie häufig dieser Kunde Würste mit der jeweiligen Schärfe bestellt hat, geben Sie eine Liste der Schärfegrade mit der jeweiligen Bestellhäufigkeit aus. (4 Punkte) g) Wie viele Kunden haben bereits die schärfsten angebotenen Würste bestellt und welchen Schärfegrad weisen diese auf? Schreiben Sie einen SQL-Befehl, der diese Information liefert. (5 Punkte) h) Formulieren Sie eine SQL-Abfrage, die eine Liste von Kunden ausgibt, welche im System zwar gepflegt sind, aber bisher noch keine Bestellung abgegeben haben. (3 Punkte) - 11 - AUFGABE 5: DATENBANKANOMALIEN UND TRANSAKTIONEN (10 PUNKTE) a) Welche Anomalien bei konkurrierenden Zugriffen auf Daten sind Ihnen bekannt? Nennen Sie diese und beschreiben Sie sie kurz. (4 Punkte) b) Geben Sie die Ergebnisse folgender Transaktionen sowohl bei einer seriellen, als auch bei einer parallelen Ausführung an. Nennen Sie ggf. den Namen der jeweiligen Ausführungsanomalie: (6 Punkte) b1) Datenbank: A = 10 TRANSAKTION 1 write 7 -> A TRANSAKTION 2 read x2 <- A print x2 commit rollback ------------------------------------------------------b2) In einer Datenbank sind 150 Ausdauerläufer eingetragen. TRANSAKTION 1 read l <- count(Läufer) TRANSAKTION 2 insert into Läufer commit read m <- sum(MaxDistanz) M = m / l print M commit ------------------------------------------------------b3) Datenbank: A = 10 TRANSAKTION 1 read x1 <- A TRANSAKTION 2 read x2 <- A X1 = x1 + 5 X2 = x2 + 10 write X1 -> A write X2 -> A commit commit -------------------------------------------------------