Übungsaufgaben Datenbanksysteme Aufgabe 1: Gegeben sei folgende relationale Datenbanktabelle TelAbr für die Abrechnung privater Telefongespräche in einem Unternehmen: Name Sauer Ehrig Ahrend Mehlig Gabriel Müller Schulze Schulze Köhler Müller Müller Müller Bauer Lehmann Vorname Erika Ricardo Martha Karl-Heinz Anna Alfred Jutta Jutta Horst Erich Sabine Anton Siegfried Hannelore TelNr 143 215 261 143 271 301 261 700 260 425 425 850 702 362 Einheiten 134 287 122 21 63 29 292 361 57 123 428 13 53 328 a) Formulieren Sie SQL-Befehle, die diese Tabelle implementieren und mit einem Datensatz füllen. Welchen Teilmengen der Datenbanksprache SQL ordnen Sie diese Befehle zu? b) Formulieren Sie SQL-Abfragen, die folgende Informationen liefern: 1. 2. 3. 4. 5. 6. 7. Wer hat die Telefonnummer 425? (Name und Vorname) Erzeugen Sie eine Liste aller Mitarbeiter, alphabetisch sortiert. Wie heißt Herr Ehrig mit Vornamen. Wer hat die höchste, wer die niedrigste Telefonrechnung. Wie viele verschiedene Telefonnummern gibt es. Wie viele Mitarbeiter sind in der Tabelle erfasst. Wie hoch sind die Telefongebühren der einzelnen Mitarbeiter, wenn die Einheit mit 0,21 DM abgerechnet wird. 8. Erzeugen Sie eine Liste aller Müllers, nach dem Vornamen sortiert. 9. Wer hat die gleiche Telefonnummer wie Ricardo Ehrig. 10. Wer hat überdurchschnittlich viele Einheiten verbraucht. (Durchschnitt: SQL Funktion avg) Tobias Hoppe 1 Übungsaufgaben Datenbanksysteme Lösung Aufgabe 1a) 1. DDL: create table TelAbr (Name char(20), Vorname char(20), TelNr number, Einheiten number); 2. DML: insert into TelAbr (Name, Vorname, TelNr, Einheiten) values (‘Sauer’, ‘Erika’, 143, 134); Lösung Aufgabe 1b) 1. 2. 3. 4. 5. 6. 7. 8. select Name, Vorname from TelAbr where TelNr = 333; select distinct Name, Vorname from TelAbr order by Name; select Vorname from TelAbr where Name = ‘Ehrig’; select Name from TelAbr where Einheiten = (select max(Einheiten) from TelAbr); select Name from TelAbr where Einheiten = (select min(Einheiten) from TelAbr); select Name, Einheiten * 0.12 from TelAbr; select Name, Vorname from TelAbr where name = ‘Müller’ order by Vorname; select Name, Vorname from TelAbr where TelNr = (select TelNr from TelAbr where Name = ‘Müller’ and Vorname = ‘Erich’); select Name, Vorname, Einheiten from TelAbr where Einheiten > (select avg(Einheiten) from TelAbr); Tobias Hoppe 2 Übungsaufgaben Datenbanksysteme Aufgabe 2: Ein Krankenhaus will mit Hilfe eines Datenbanksystems seine Patientenverwaltung rationalisieren. Es behandelt Patienten, die die Eigenschaften Namen, Geburtsdatum, PLZ, Wohnort und Straße besitzen. Sie werden stationär auf verschiedenen Stationen für eine bestimmte Zeit wegen bestimmter Erkrankungen aufgenommen. Die Stationen haben ein bestimmtes Profil von Erkrankungen, jeweils einen zuständigen Stationsarzt und einen zuständigen Oberarzt sowie eine maximale Bettenkapazität. Bei den festgelegten möglichen Erkrankungen sind eine Reihe von Leistungen definiert (Laboruntersuchungen, Röntgen, EKG, bestimmte Medikamente, ...). Der Erhalt einzelner Leistungen aus dem Therapieangebot einzelner Erkrankungen soll im Datenbanksystem für jeden Krankenhausaufenthalt eines Patienten dokumentiert werden. Modellieren Sie diesen Sachverhalt in Form eines semantischen Datenmodells. Verwenden Sie dazu die Beschreibungselemente des Informationsstrukturmodells (ISM). Gehen Sie dabei insbesondere auf den Verknüpfungstyp der vorhandenen relevanten Beziehungen und die relevanten Merkmalsklassen ein. Fügen Sie bei Bedarf geeignete künstliche identifizierende Merkmalsklassen ein. Lösung Aufgabe 2 IOK und MMK: o PATIENTEN (Patient_ID, Name, Geburtsdatum, PLZ, Wohnort, Strasse) o STATIONEN (Stations-ID, Stationsarzt, Oberarztm, Bettenkapazität) o STATIONÄRE AUFENTHALTE (Aufenthalt_ID, Start_Datum, End_Datum) o ERKRANKUNGEN (Erkrankungs_ID, Name) o LEISTUNGEN (Leistungs_ID, Name) Verknüpfungen und Beziehungen: o PATIENTEN / STATIONÄRE AUFENTHALTE : „besitzen“ (1:n) o STATIONÄRE AUFENTHALTE / STATIONEN : „finden statt in“ (1:N) o STATIONEN / ERKRANGUNGEN : „behandeln“ (1:n) o LEISTUNGEN / ERKRANGUNGEN : „therapieren“ (n:m) o STATIONÄRE AUFENTHALTE / ERKRANGUNGEN : „heilen“ (1:n) o STATIONÄRE AUFENTHALTE / LEISTUNGEN : „verursachen“ (1:n) ISM-Modell: PATIENTEN besitzen STATIONÄRE AUFENTHALT verursachen finden statt in STATIONEN heilen behandeln LEISTUNGEN Tobias Hoppe therapieren ERKRANKUNGEN 3 Übungsaufgaben Datenbanksysteme o Zu beachten: o Fremdschlüssel-MMK nicht aufnehmen o Künstliche identifizierende MMK bei allen IOK o Plural-Form der IOK o Aktive Verknüpfungsbenennung o Erläuterung der Verknüpfungen (Optionalität als Interpretationsfrage) Aufgabe 3: Data Warehouse- oder OLAP-Systeme werden oft als „multidimensional“ bezeichnet. Erläutern Sie den Begriff der Multidimensionalität in diesem Zusammenhang und beschreiben Sie einige Elemente eines multidimensionalen Datenmodells. Zeigen Sie anhand eines kleinen Beispiels, wie ein multidimensionales Datenmodell mit einem relationalen Datenbanksystem implementiert werden kann. Lösung Aufgabe 3 o Multidimensionale Sichtweise erläutern o Hinweis auf Funktionalitäten mit Erläuterung o Slicing o Dicing/Rotate o Drill Down/Up o Elemente des Datenmodells o Betriebswirtschaftliche Variablen / Kennzahlen o Dimensionen o Dimensionshierarchien o Regeln o Elemente des Datenmodells o Starschema mit Fakten und Dimensionstabelle Tobias Hoppe 4