Übung zur Vorlesung ”Einführung in die Informatik für Hörer anderer Fachrichtungen (WZW)” IN8003, SS 2011 Prof. Dr. J. Schlichter Dr. Georg Groh, Dipl.Inform. Dipl.Geogr. Jan Herrmann, Florian Schulze BSc., Andrea Koelle, Thomas Parsch http://www11.in.tum.de/Veranstaltungen/EinfuehrungInformatikWzwSS11/uebung Lösung zu Blatt 1 • Empfohlener Bearbeitungszeitraum: 06.05. - 20.05. • Die Aufgaben können selbständig aber auch gut in der Gruppe bearbeitet werden. Sie sind nicht abzugeben. Es werden detaillierte Musterlösungen bereit gestellt. Wenn Fragen zu Ihrer Lösung auch nach Vergleich mit der Musterlösung bleiben, können Sie Ihre Fragen im Forum posten. • Zur groben Orientierung ist zu jeder Aufgabe eine Einschätzung des Schwierigkeitsgrades bzw. Aufwandes angegeben: * Eher einfach und straightforward ** Schon schwierig oder zumindest aufwändig *** Ziemlich schwierig oder sehr umfangreich. Wenn man diese Aufgabe halbwegs erfolgreich gemeistert hat, kann man ein wenig stolz auf sich sein. Stoff Es wird empfohlen folgendes Material anzusehen: • Folien zur Zentralübung Sitzung 1: Datenbanksysteme - Überblick und Einführung • A. Kemper , A. Eickler; Datenbanksysteme - Eine Einführung. Oldenbourg Verlag, 2009. 7. Auflage. Kapitel 1 und relevante Teile aus Kapitel 2. Aufgabe 1: Konzipieren eines Krankenhausverwaltungssystems *** Konzipieren Sie ein Krankenhausverwaltungssystem. • Welche Daten müssen verwaltet werden? • Welche Probleme können auftreten, wenn man kein DBMS verwendet, um das Krankenhausverwaltungssystem zu realisieren? Gehen Sie dabei insbesondere auf Datenabhängigkeiten ein, die von Ihrem System überprüft werden müssen. • Geben Sie (informell) einige Anfragen an, die typischerweise an ein derartiges Krankenhausverwaltungssystem gestellt werden. • Erstellen Sie eine ER-Modellierung für das Krankenhausverwaltungssystem. (Hinweis: ER-Modellierung wird voraussichtlich erst in der zweiten Zentralübung vollständig vorgestellt.) Lösung zu Aufgabe 1 Daten: Folgende Informationen sollten in einem Verwaltungssystem für ein Krankenhaus verwaltet werden: • Patienten, die in dem Krankenhaus stationär aufgenommen wurden. Attribute, die einen Patienten beschreiben, sind sein Name, seine Krankheit und eine PatientNr. • Personal, das auf den Krankenhausstationen arbeitet, z.B Ärzte mit möglichen Attributen wie Fachgebiet und Rang, Pflegepersonal mit zugeordneter Qualifikation, ... • Stationen, ein Krankenhaus hat verschiedene Stationen, die unterschiedliche Namen und Stationsnummern besitzen. • Zimmer, jeder Station stehen eine feste Anzahl von Zimmern zur Verfügung, die durch die Raumnummer und die Anzahl der Betten gekennzeichnet sind. Nutzen von Datenbanksystemen: Ein Datenbanksystem gewährleistet einen stabilen Betrieb, indem es • durch Ausfallsicherheit und Backup/Recovery eine sichere Datenhaltung gewährleistet; • die Nebenläufigkeit von Anfragen unterstützt (d.h. die gleichzeitige Ausführung unabhängiger Anfragen zulässt); • die Festlegung einer anwendungsspezifischen Zugriffskontrolle zulässt (z.B. sollten Patientendaten nicht für jeden einsehbar sein); • eine einheitliche Datenhaltung mit standardisierten Schnittstellen ermöglicht. Informationen werden nicht in unterschiedlichen (Datei-) Formaten gespeichert. Der Zugriff darauf erfolgt über Abfragesprachen wie SQL oder XQuery. • Außerdem ermöglicht ein DBMS die Formulierung und die Gewährleistung von Integritätsbedingungen, z.B.: – Ein Patient kann nicht für dieselbe Zeitspanne in verschiedenen Zimmern liegen. – In einem Zimmer können höchstens soviele Patienten liegen wie Betten vorhanden sind. Figure 1: Modellierung einer Krankenhausverwaltung Anfragen: Typische Anfragen an ein derartiges Verwaltungssystem sind beispielsweise: • Welche Station hat die größte Belastung, d.h. behandelt die meisten Patienten pro Personal? • Welcher Arzt behandelt die meisten Patienten? • Welcher Arzt behandelt das größte Krankheitsspektrum, d.h. die meisten unterschiedlichen Krankheiten? • Wieviele Betten eines Zimmers sind durchschnittlich belegt? ER-Modell Abbildung 1 zeigt eine mögliche Modellierung für ein Krankenhausverwaltungssystem. Kandidaten für Entitytypen Aus der Aufgabenstellung lassen sich folgende Entitätstypen ableiten: Patienten, Stationen, Ärzte, Pflegepersonal und Zimmer. Beziehungen und Konsistenzbedingungen • Patienten sind stationär in Zimmern untergebracht. • Zimmer sind Stationen zugeordnet und sind daher existenzabhängig zu modellieren. • Einem Patienten sind behandelnde Ärzte zugeordnet. • Ärzte und Pflegepersonal sind Stationen zugeordnet und sind von dem allgemeineren Typ Stationspersonal abgeleitet. • Die Beziehung zwischen Pflegepersonal und Patienten besteht nur indirekt über die Station. Aufgabe 2: Kontrollierte Redundanz ** Unkontrollierte Redundanz ist unerwünscht. Können Sie sich eine sinnvolle Einsatzmöglichkeit für eine durch das DBMS kontrollierte Redundanz vorstellen? Lösung zu Aufgabe 2 Redundante Datenhaltung zur Performancesteigerung Kontrollierte redundante Datenhaltung kann aus Performancegesichtspunkten sinnvoll sein. Als Beispiel betrachte man die Personenverwaltung einer Universität. So sind etwa Verwaltungsangestellte, Professoren, wissenschaftliche Mitarbeiter und Studenten Angehörige einer Universität, deren personenbezogene Daten in einem Datenbankverwaltungssystem abgelegt werden. Anfragen, die an die Datenbasis gestellt werden, können sich auf alle Personen beziehen (z.B. Einladung zu einer Fakultätsfeier), auf bestimmte Personengruppen (z.B. Erstellen der Lohnabrechnung für alle Angestellten) oder auch nur selektiv auf Teilgruppen (z.B. Einladung zu einer Informationsveranstaltung für alle Studenten im 4. Semester). Die einzelnen Personengruppen sind aber unterschiedlich groß. So ist davon auszugehen, dass es deutlich mehr Studenten als wissenschaftliche Mitarbeiter und mehr wissenschaftliche Mitarbeiter als Professoren gibt. Häufig auftretende Anfragen, die sich nur auf Professoren beziehen, sind dann ineffizient, wenn alle Personendaten zentral in einer Relation abgespeichert sind. In diesem Fall wäre das Überprüfen aller Universitätsangehörigen und das Auswählen der Professoren notwendig. Speichert man in einer Relation all die Informationen, die sich auf alle Personen beziehen (Name, Anschrift, etc.), und in spezialisierten Relationen die Informationen für Studenten (Name, Anschrift, Semester, Studienrichtung), Professoren (Name, Anschrift, Rang, Raum) usw., so können beide Anfragetypen effizient ausgewertet werden: Es ist dann möglich, allgemeine Anfragen, die sich auf alle Universitätsangehörigen beziehen, wie auch selektive Anfragen, die sich nur auf Personengruppen beziehen, getrennt zu behandeln. Die redundante Datenspeicherung, in diesem Fall also das doppelte Ablegen allgemeiner personenbezogener Daten, wie Name und Anschrift, muss vom Datenbanksystem kontrolliert werden. Um einen konsistenten, d.h. stimmigen Dateninhalt zu gewährleisten, müssen Änderungen des Datenbestands (Einfügen, Löschen oder Modifikation einzelner Datensätze) sowohl in den spezialisierten Datensätzen, wie auch in dem globalen Datensatz der Personendaten durchgeführt werden. Dieses Vorgehen wird auch als Generalisierung bezeichnet. Replizierte Datenhaltung für mobile Anwendungen Replizierte Datenbanken spielen insbesondere auch bei mobilen Anwendungen eine wichtige Rolle. So werden Teile der globalen Datenbank auf den Laptops von Außendienstmitarbeitern repliziert und regelmäßig (z.B. abends nach den Kundengesprächen) synchronisiert. Replizierte Datenhaltung bei verteilten Datenbanken Redundante Datenhaltung ist mitunter auch bei verteilten Informationssystemen erforderlich. Für Anfragen, die von einem verteilten System verarbeitet werden, lässt sich eine höhere Performance ggf. dadurch erreichen, dass häufig abgefragte Daten, die zudem relativ statisch sind, d.h. selten modifiziert werden, an den Knoten im Netzwerk repliziert werden, an denen die Anfrageauswertung erfolgt. Das heißt, die Anfragebearbeitung erfolgt nahe bei den Daten und eine teure Übermittlung von Daten wird nach Möglichkeit vermieden. Je nach Anwendungsfall muss dann natürlich die Konsistenz, d.h. die Gültigkeit oder auch die “Frische” der replizierten Daten durch das verteilte Datenbanksystem überwacht werden.