mitp Professional Datenbanken - Grundlagen und Design von Frank Geisler überarbeitet Datenbanken - Grundlagen und Design – Geisler schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv 2011 Verlag C.H. Beck im Internet: www.beck.de ISBN 978 3 8266 9088 4 Inhaltsverzeichnis: Datenbanken - Grundlagen und Design – Geisler • Datenbanksysteme, Datenbankanwendungen und Middleware • Das relationale Datenbankmodell • ER-Datenbankmodellierung und Normalisierung • SQL-Grundlagen • Projektablauf bei der Erstellung einer Datenbank • Transaktionen und konkurrierende Zugriffe • Client-Server-Architektur • Verteilte Datenbanksysteme • Data Warehouses Wertung bei amazon.de: »Tolles Buch - Einfache Erklärungen, aber trotzdem mit Tiefgang.« »Dieses Buch ist einmalig, didaktisch hervorragend aufgebaut ohne mathematische Schnörkel.« Dieses Buch richtet sich an alle, die sich grundlegend und fundiert in das Thema Datenbanken einarbeiten wollen. Der Fokus liegt dabei auf einer strukturierten, leicht nachvollziehbaren und praxisrelevanten Darstellung des Stoffes, der anhand eines durchgängigen Beispiels präsentiert wird. Der Autor stellt die Inhalte soweit möglich herstellerneutral dar, so dass die verwendeten Techniken auf jedem relationalen Datenbanksystem umgesetzt werden können. Zunächst wird der Leser in die unterschiedlichen Datenbankmodelle eingeführt und lernt detailliert das relationale Datenbankmodell sowie die ER-Datenbankmodellierung und die Normalisierung kennen. Nach der Darstellung der Datenbankentwicklung auf konzeptioneller Ebene werden die Umsetzung des Datenbankmodells und die Abfrage von Daten mithilfe von SQL beschrieben. So erhält der Leser zugleich eine praxisorientierte Einführung in SQL. Im Anschluss wird der Projektablauf bei der Erstellung eines Datenbanksystems erläutert, um den Schritt vom Design zur Implementierung zu verdeutlichen, der innerhalb eines professionellen, geordneten SoftwareErstellungsprozesses erfolgt. Im Folgenden lernt der Leser weitere Datenbankkonzepte wie Transaktionen und konkurrierende Zugriffe kennen. Abschließend geht der Autor auf die beiden wichtigsten Datenbankanwendungsarchitekturen Fat und Thin Client ein und beschreibt am Praxisbeispiel die Client-Server-Architektur, verteilte Datenbanksysteme, Data Warehouses und Data Mining. Im letzen Kapitel wird das Thema LINQ als eine mögliche Lösung des konzeptionellen Unterschieds zwischen relationalen Datenbanken und objektorientierten Programmiersprachen vorgestellt. Geisler Frank Geisler 4. Auflage ISBN 978-3-8266-9057-0 ISBN 978-3-8266-5505-0 ISBN 978-3-8266-9156-0 Der Leser wird umfassend in das Thema Datenbanken eingeführt und erhält zugleich eine praxisnahe Sichtweise auf die professionelle Realisierung von Datenbanksystemen von einem seit langem in der Praxis arbeitenden Datenbankentwickler. Datenbanken Aus dem Inhalt: Außerdem bei mitp: Grundlagen und Design Konzepte, Entwurf, Design, Implementierung Konkrete Erläuterungen am Praxisbeispiel Zahlreiche Aufgaben mit Musterlösungen sowie Anregungen für eigene Projekte Datenbanken Grundlagen und Design (D) € 29,95 ISBN ISBN978-3-8266-9088-4 978-3-8266-9088-4 978-3-8266-9088-4_umschlag3.indd 1-3 9/12/2011 3:07:08 PM 00___Datenbanken.book Seite 17 Montag, 12. September 2011 6:21 18 Teil I Grundlagen In diesem Teil: 쐽 Kapitel 1 Einführung in das Thema Datenbanken . . . . . . . . 19 쐽 Kapitel 2 Datenbanksysteme, Datenbankanwendungen und Middleware. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 쐽 Kapitel 3 Das relationale Datenbankmodell. . . . . . . . . . . . . . 93 00___Datenbanken.book Seite 18 Montag, 12. September 2011 6:21 18 00___Datenbanken.book Seite 19 Montag, 12. September 2011 6:21 18 Kapitel 1 Einführung in das Thema Datenbanken Die Umwelt, in der wir leben, wird immer komplexer und vielfältiger. Oft wird der Begriff des Information-Overkills bemüht, wenn es darum geht, die Informationsflut zu beschreiben, die aus den unterschiedlichsten Quellen Tag für Tag auf uns einprasselt. Um gute und richtige Entscheidungen treffen zu können, müssen immer mehr Informationen bedacht, ausgewertet und in Korrelation zueinander gestellt werden. Bei dieser schwierigen Aufgabe, die für uns relevanten Informationen aus dem Datenwust herauszufiltern und zum richtigen Zeitpunkt zur Verfügung zu stellen, sind wir auf die Hilfe von computergestützten Systemen angewiesen. Bevor ich mich näher mit der Thematik Datenbanken an sich beschäftige, sollten Sie einen Blick auf das werfen, was Sie verwalten möchten, die Daten. Daten selbst repräsentieren Fakten. Ein mögliches Datum ist z.B. die Rechnungsnummer 32532, die eine Rechnung trägt, die ich zugestellt bekommen habe. Damit aus Daten Informationen werden, müssen die Daten in einen Zusammenhang gebracht werden. Stellen Sie sich vor, dass Sie einen Mitarbeiter des Unternehmens treffen, das mir die oben genannte Rechnung geschickt hat. Wenn Sie diesen Zeitgenossen außerhalb seines Büros antreffen (abgenabelt von all seinen famosen Computersystemen) und ihn mit der Rechnungsnummer 32532 konfrontieren, wird dies ziemlich wahrscheinlich mit einem Stirnrunzeln beantwortet, da sich der gute Mann unter Rechnungsnummer 32532 nichts vorstellen kann. Die Rechnungsnummer ist einfach ein Datum, das ein Faktum darstellt. Aus dem Zusammenhang gerissen hat dieses Datum für sich alleine keine Bedeutung (der Servicemitarbeiter kann noch nicht einmal sagen, ob es überhaupt eine Rechnung mit Rechnungsnummer 32532 gibt). Damit aus der Rechnungsnummer 32532 eine sinnvolle Information wird, muss diese in einen Zusammenhang gebracht werden. Das Datum muss verarbeitet werden. Hat der Servicemitarbeiter wieder Zugriff auf seinen Computer, so kann er die genannte Rechnungsnummer dort eingeben (Sie werden es sicherlich schon erraten haben – hier läuft irgendwo im Hintergrund eine Datenbank) und in Windeseile erhält er weitere Daten bzw. Fakten, die in direktem Zusammenhang mit der Rechnungsnummer 32532 stehen. Weitere Daten, die in Verbindung mit der Rechnungsnummer stehen, sind z.B., dass der Kunde, auf den diese Rechnung ausge- 19 00___Datenbanken.book Seite 20 Montag, 12. September 2011 6:21 18 Kapitel 1 Einführung in das Thema Datenbanken stellt ist, »Frank Geisler« heißt, dass der Rechnungsbetrag 145,42 € ist und dass diese Rechnung bisher noch nicht bezahlt wurde. Durch die Verknüpfung von einzelnen Daten entstehen Informationen, die wiederum Entscheidungen beeinflussen können oder Handlungen auslösen. In diesem Beispiel veranlasst die Information, dass Frank Geisler die Rechnung 32532, die einen Betrag von 145,42 € aufweist, noch nicht bezahlt hat, dass mir eine Mahnung zugestellt wird. Wir können dieses Beispiel noch ein wenig weiter spinnen. Da der Computer alle von mir getätigten Bestellungen bei der Firma kennt, kann er ohne weiteres Daten über alle von mir getätigten Bestellungen abrufen. Aus diesen Daten ergibt sich die Information, dass ich meine Rechnungen insgesamt nicht so regelmäßig bezahle und dass des Öfteren Mahnungen verschickt worden sind. Das Management dieser Beispielfirma kann nun aufgrund der aus den Daten enthaltenen Informationen Entscheidungen treffen. Eine mögliche Entscheidung ist z.B. die, dass ich bei dieser Firma keine Waren mehr auf Rechnung kaufen darf, sondern dass ich Vorkasse leisten muss, wenn ich etwas kaufen möchte. Verlassen wir das Beispiel an dieser Stelle, bevor es peinlich für mich wird… An dem Beispiel wird nicht nur deutlich, dass erst die Informationen, die aus den Daten gewonnen werden können, das eigentlich Wertvolle und Wichtige sind, sondern dass dieselben Daten, in einen anderen Zusammenhang gebracht, andere Informationen ergeben können. Das Datum, wann eine Rechnung bezahlt wurde, ergibt, bezogen auf eine einzelne Rechnung, die Information, ob diese bereits bezahlt wurde oder nicht. Fügt man das Datum in einen anderen Zusammenhang ein, indem man z.B. alle Zahlungseingänge eines bestimmten Kunden betrachtet, so lassen sich mit denselben Daten Informationen über das Zahlungsverhalten des Kunden, ja sogar ein Zahlungsprofil erstellen. Die Information über das Zahlungsprofil kann zu weiter reichenden Entscheidungen führen. So ist es z.B. möglich, treuen, gut zahlenden Kunden einen bestimmten Rabatt einzuräumen, wohingegen sich die Zahlungsmodalitäten von notorischen Spätzahlern verschlechtern können. Lassen Sie uns nun noch einmal die grundlegenden Aussagen der vorherigen Abschnitte zusammenfassen: 쐽 Informationen setzen sich aus Daten zusammen. 쐽 Durch Datenverarbeitung werden aus Daten Informationen. 쐽 Gute Daten, die zeitnah vorliegen, helfen uns, gute Entscheidungen zu treffen. 쐽 Der Informationsgehalt von Daten hängt vom Zusammenhang ab. Damit aus Daten gute Informationen gewonnen werden können, müssen diese Daten sorgfältig erfasst und in einem Format vorgehalten werden, auf das man leicht zugreifen und das einfach verarbeitet werden kann. Da Daten der Ausgangspunkt aller weiteren Aktivitäten sind, ist es wichtig, dass mit den Daten sehr sorg- 20 00___Datenbanken.book Seite 21 Montag, 12. September 2011 6:21 18 Einführung in das Thema Datenbanken fältig umgegangen wird. Datenfehler pflanzen sich durch das ganze System fort und führen zu fehlerhaften Informationen, die wiederum zu falschen Entscheidungen führen können. Der Umgang mit Daten wird als Datenmanagement bezeichnet. Aufgaben des Datenmanagements sind die Erzeugung, Speicherung und Wiedergabe der Daten. Da Daten eine zentrale Rolle bei der Erzeugung von Informationen spielen, ist es nicht verwunderlich, dass das Datenmanagement in vielen Firmen eine zentrale Rolle spielt. Datenmanagement ist keine Erfindung des IT-Zeitalters. Daten wurden seit jeher in irgendeiner Form verwaltet. Sei es, dass die Daten in Stein geritzt wurden oder meterlange Aktenschränke mit Papier füllten. Die Neuerung, die das IT-Zeitalter gebracht hat, ist die Darstellung von Daten in elektronischer Form, was das Datenmanagement wesentlich vereinfacht und effizienter macht. Eine zentrale Rolle des elektronischen Datenmanagements spielt die Datenbank. Es gibt mindestens so viele Definitionen des Begriffs Datenbank, wie es Programmierer und Datenbankspezialisten gibt. Ich habe einmal zwei Definitionen herausgenommen, die mir am eingängigsten erscheinen und die verdeutlichen, wie der Begriff Datenbank verwendet wird: Wichtig 1. Eine Datenbank ist ein verteiltes, integriertes Computersystem, das Nutzdaten und Metadaten enthält. Nutzdaten sind die Daten, die Benutzer in der Datenbank anlegen und aus denen die Informationen gewonnen werden. Metadaten werden oft auch als Daten über Daten bezeichnet und helfen, die Nutzdaten der Datenbank zu strukturieren. 2. Eine Datenbank ist eine geordnete, selbstbeschreibende Sammlung von Daten, die miteinander in Beziehung stehen. Wichtig Während die erste Definition eher den technischen Aspekt heraushebt und auf die Realisierung einer Datenbank als Computersystem abhebt, stellt die zweite Definition den theoretischen Aspekt in den Vordergrund und ist daher universeller verwendbar als die erste Definition. Lassen Sie uns die zweite Definition noch einmal näher am Beispiel eines Adressbuchs betrachten, das einfach in Form einer Tabelle angelegt ist: Name Telefonnummer Anschrift Ort Max Mustermann 0123 / 456789 Musterstraße 3 Musterhausen Susi Sorglos 0987 / 654321 Sorglosgasse 7 Schlumpfhausen 21 00___Datenbanken.book Seite 22 Montag, 12. September 2011 6:21 18 Kapitel 1 Einführung in das Thema Datenbanken Im dargestellten Adressbuch befindet sich zunächst eine Sammlung von Daten, nämlich die Adressen. Diese sind nach dem Alphabet geordnet. Obwohl es sich bei jeder Adresse um einen Kontakt handelt, stehen diese nicht in einer Beziehung zueinander. Es handelt sich lediglich um Instanzen des Objekts »Leute, die so interessant sind, dass sie in ein Adressbuch eingetragen wurden«. Der Ausdruck »die miteinander in Beziehung stehen« der Definition bezieht sich auf verschiedene Tabellen, die untereinander in Beziehung stehen können. Zu diesem Thema erfahren Sie im weiteren Verlauf des Buches mehr. Eine Selbstbeschreibung des Adressbuchs erfolgt durch die Tabellenüberschriften. Die Überschriften erklären, was der Inhalt der jeweiligen Spalte bedeutet. Diese Beschreibungen der Daten werden, wie bereits aus der ersten Definition des Begriffs Datenbank bekannt, als Metadaten bezeichnet. Offensichtlich ist nach der zweiten Definition ein simples Adressbuch in Form einer Tabelle eine (wenn auch nicht digitale) Datenbank. Die Metadaten werde im Datenbanksystem im so genannten Katalog (auch Data Dictionary) gespeichert. Der Katalog stellt den Teil der Datenbank dar, in dem die Metainformationen abgelegt werden. Um eine Datenbank auf einem Computer zu verwalten, wird in der Regel ein so genanntes Datenbankmanagement-System (DBMS) verwendet, das sich um die Organisation der Daten kümmert und das den Zugriff auf die Daten regelt. Das Datenbankmanagement-System kann entweder aus einem einzelnen Programm bestehen, wie es oft bei Desktop-Datenbanksystemen wie z.B. Microsoft Access der Fall ist, oder es kann aus vielen Programmen bestehen, die zusammenarbeiten und so die Funktionalität eines DBMS bereitstellen. Diese Variante wird oft bei servergestützten Datenbanksystemen verwendet. In Abbildung 1.1 ist das Zusammenspiel zwischen DBMS und Datenbank zu sehen. Ein Anwender formuliert eine Abfrage an die Datenbank, die die benötigten Daten zurückliefern soll. Die Abfrage wird an das DBMS weitergereicht, das die Daten aus der eigentlichen Datenbank heraussucht und diese an den Anwender zurückliefert. Ferner kann man in Abbildung 1.1 sehen, dass in der Datenbank sowohl Metainformationen als auch Nutzdaten vorhanden sind. Die Nutzdaten bestehen im Beispiel aus den Daten in den Tabellen Kunden, Berater und Projekte. Abb. 1.1: 22 Das DBMS verwaltet den Zugriff auf die Datenbank. 00___Datenbanken.book Seite 23 Montag, 12. September 2011 6:21 18 Einführung in das Thema Datenbanken Hinweis Aus Bequemlichkeit wird in der Praxis oft der Begriff Datenbank anstatt Datenbankmanagement-System verwendet. Anwendungen wie z.B. Access oder Oracle werden oft als Datenbanken bezeichnet, obwohl sie in Wirklichkeit Datenbankmanagement-Systeme sind. Wenn Sie also auf den Begriff Datenbank stoßen, so müssen Sie versuchen, aus dem Kontext zu erschließen, was denn nun eigentlich gemeint ist. Geht es um das Datenbankmanagement-System, die technische Ausführung eines Datenbanksystems (also Hard- und Software) oder um das logische Konzept der Datenbank? Datenbankmanagement-Systeme sind aus unserem modernen Leben nicht mehr wegzudenken und bilden sozusagen das Rückgrat der Informationsgesellschaft. Daten, aus denen Informationen gewonnen werden können, sind zu einem wichtigen Rohstoff geworden, der natürlich auch entsprechend behandelt werden muss. Daher stellen moderne Datenbankmanagement-Systeme viele Funktionen zur Verfügung, die für die Pflege und das Auslesen der Daten wichtig sind und den Umgang mit Daten vereinfachen. Ein wichtiger Bestandteil moderner Datenbanksysteme ist die integrierte Abfragesprache, mit der man einfach so genannte Adhoc-Abfragen an die Datenbank absetzen kann. Eine Ad-hoc-Abfrage dient dazu, Informationen abzufragen, die eine bestimmte, aktuelle Fragestellung beantworten sollen. Um auf das Beispiel des Servicemitarbeiters vom Anfang des Kapitels zurückzukommen, könnte dieser, nachdem er sich vom Schock erholt hat, einfach auf der Straße auf die Rechnung mit der Nummer 32532 angesprochen worden zu sein, und in sein Büro zurückgekehrt ist, eine Ad-hoc-Abfrage starten, die die mit der Rechnungsnummer 32532 verknüpften Daten zurückliefert und ihm Informationen zu der durch Rechnungsnummer 32532 identifizierten Rechnung gibt. Mit Hilfe von Datenbankmanagement-Systemen wird eine Umgebung geschaffen, in der Daten besser organisiert werden können, als dies vor der Entwicklung von Datenbankmanagement-Systemen möglich war. Daten können leicht zur Datenbank hinzugefügt, geändert und gelöscht werden und es werden durch das DBMS leistungsfähige Suchfunktionen zur Verfügung gestellt, so dass bestimmte Daten schnell wieder gefunden werden können. Der Erfolg der DBMS ist so groß, dass Microsoft momentan überlegt, den nächsten Windows-Versionen (Codename Longhorn), anstelle eines normalen Dateisystems ein DBMS mitzugeben, das dann die Dateien auf der Festplatte verwaltet. Den Vorteil sieht Microsoft darin, dass nicht nur, wie bisher, Dateien, sondern auch jede andere Art von Daten (z.B. Adressen) im Dateisystem gespeichert, mit anderen Objekten (wie z.B. Dateien) in Zusammenhang gebracht und abgefragt werden kann. Durch den schnellen Zugriff, den Datenbanksysteme auf Daten erlauben, und unter Verwendung von Tools, die die Daten in sinnvolle Informationen umwandeln, ist es dem Nutzer einer Datenbank möglich, sich schnell an die sich ändern- 23 00___Datenbanken.book Seite 24 Montag, 12. September 2011 6:21 18 Kapitel 1 Einführung in das Thema Datenbanken den Anforderungen anzupassen und aufgrund guter Daten schnelle und fundierte Entscheidungen zu treffen, was einen großen Wettbewerbsvorteil ausmacht. Eine gut organisierte Datenbank schafft Transparenz und kann einem Unternehmen so zu mehr Leistungsfähigkeit verhelfen. 1.1 Warum ist Datenbankdesign wichtig? Stellen Sie sich einmal vor, dass Sie ein Haus bauen möchten. Was ist der erste Schritt, nachdem Sie die Finanzierung für Ihr Bauvorhaben unter Dach und Fach gebracht haben? Natürlich – Sie suchen sich einen fähigen Architekten, der sich zunächst einmal nach Ihren Wünschen erkundigt (wie viele Zimmer, mit oder ohne Swimmingpool, wo kommt das Arbeitszimmer hin usw.) und dann auf Basis dieser Wünsche einen Bauplan für Ihr Tramhaus entwickelt. Komischerweise scheinen immer noch viele Menschen zu denken, dass das alles für Software-Projekte nicht gelten soll. Ich habe schon einige Projekte gesehen, in denen ein motivierter Mitarbeiter einfach sein Datenbankprogramm gestartet und angefangen hat. In unserem Architekten-Beispiel wäre das genau so, als ob der Architekt Ihrer Wahl, nachdem er erfahren hat, dass Sie ein Haus planen, sagt, »Klasse – ich fahr dann mal eben zum Baumarkt, hol ein paar Ziegelsteine und dann können wir auch schon direkt loslegen!« Ich denke, in diesem Fall werden Sie sich schnell nach einem anderen Architekten umsehen. Genau wie für ein stabiles Haus, das allen Widrigkeiten seiner Umgebung trotzen soll, ein guter Plan vonnöten ist, der von einem Statiker abgenommen wurde, ist es für eine Datenbank wichtig, dass der eigentlichen Implementierung ein gutes Datenbankdesign vorausgegangen ist. In der Tat sollte der eigentliche Datenbankdesign-Prozess mindestens 80 bis 90% der Datenbankentwicklung ausmachen. Hierbei meine ich die reine Entwicklungszeit der Datenbank, d.h. Struktur der Tabellen, Beziehungen, Einschränkungen etc. Was in dieser Entwicklungszeit nicht berücksichtigt ist, ist die Entwicklungszeit für die Benutzeroberfläche einer Datenbankanwendung (z.B. in einer Hochsprache). Durch cleveres Datenbankdesign (das auch schon im Hinblick auf die zu entwickelnde Anwendung erstellt wurde) lässt sich aber auch die Entwicklungszeit der Datenbankanwendung drastisch verkürzen. Ist erst einmal ein gutes Datenbankdesign vorhanden, so kann dieses leicht in einem der marktüblichen Datenbanksysteme implementiert werden. Es gibt sogar Programme, wie z.B. Microsoft Visio (um Datenbank Re- und Forward-Engineering mit Visio machen zu können, benötigen Sie die Enterprise-Architect-Version, die bei Visual Studio.NET dabei ist) oder Powerbuilder von Sybase, die es ermöglichen, das Design der Datenbank direkt am Rechner durchzuführen. Nachdem Sie auf diese Art und Weise ein Modell Ihrer Datenbank entwickelt haben, erzeugen diese Programme die Implementierung Ihres Modells (z.B. als SQL-Script) automatisch. 24 00___Datenbanken.book Seite 25 Montag, 12. September 2011 6:21 18 1.1 Warum ist Datenbankdesign wichtig? Abb. 1.2: Visio beim Datenbankdesign Weil das gute Design einer Datenbank einer der zentralen Punkte bei der Erstellung einer Datenbankanwendung ist, beschäftigt sich der größere Teil dieses Buches mit dem Design von Datenbankanwendungen. Das tollste DBMS nützt nichts, wenn Ihr Datenbankdesign schlecht ist. Weiter oben haben Sie festgestellt, dass Daten für Unternehmen eine wichtige Ressource darstellen, da aus Daten Informationen gewonnen werden können, die wiederum zu Entscheidungen führen. Da die Qualität der Entscheidungen von der Qualität der zugrunde liegenden Informationen und diese wiederum von der Qualität der zugrunde liegenden Daten abhängt, kann nur eine gut entworfene Datenbank die Qualität der in ihr gespeicherten Daten gewährleisten. Ist das Datenbankdesign schlecht, so können in Ihrer Datenbank redundante Daten auftreten. Unter redundanten Daten versteht man Daten, die unnötigerweise mehrfach in der Datenbank vorkommen. Um zu verdeutlichen, warum das zu einem Problem werden kann, stellen Sie sich folgende Situation in dem Beispiel mit der Rechnung vor: Stellen Sie sich vor, dass die Kundendaten in jedem Datensatz der Tabelle gespeichert werden, in dem auch die Rechnungen gespeichert werden (und zwar nur dort). Um im Beispiel zu bleiben, überlegen wir nun, was passiert, wenn ich umziehe. Da meine Kontaktinformationen in jedem Rechnungsdatensatz gespeichert sind, müssen sie auch in jedem Rechnungsdatensatz geändert werden. Da ich ein guter Kunde bin und schon viel bei der Firma gekauft habe, 25 00___Datenbanken.book Seite 26 Montag, 12. September 2011 6:21 18 Kapitel 1 Einführung in das Thema Datenbanken müssen viele Datensätze geändert werden. Bei der Änderung dieser Datensätze macht der zuständige Mitarbeiter einen Fehler und übersieht einen oder mehrere Datensätze. Arbeitet nun ein anderer Mitarbeiter mit den Daten der Datenbank, wird ihm mit Sicherheit auffallen, dass meine Rechnungen an zwei verschiedene Adressen ausgestellt sind. Da der erste Mitarbeiter (wie üblicherweise in solchen Fällen) nicht verfügbar ist, kann der zweite Mitarbeiter nicht direkt entscheiden, welche der beiden möglichen Adressen die gültige ist. Es beginnt ein aufwändiger Fehlersuchprozess, um meine aktuelle Adresse zu ermitteln. Wichtig Man spricht von redundanten Daten, wenn Daten über ein und dieselbe Entität (eine Entität ist ein Objekt der realen Welt, das in der Datenbank verwaltet werden soll, also z.B. eine Person oder eine Rechnung) mehrfach in der Datenbank gespeichert sind. Solche unerwünschten Redundanzen sind das Ergebnis eines schlechten Datenbankdesigns. Es gibt allerdings auch Fälle, in denen innerhalb von Datenbanken bewusst Datenredundanzen erzeugt werden. Dies ist z.B. bei Datawarehouse-Anwendungen der Fall. Hier wird zusätzliche Geschwindigkeit durch Bereitstellung von redundanten Daten erzeugt. An dieser Stelle ist aber eine unbeabsichtigte Datenredundanz gemeint – und die ist immer schlecht. Da das Datenbankdesign so wichtig für eine stabile, robuste Datenbank ist, die erweiterbar ist und so auch zukünftigen Anforderungen noch genügt, beschäftigt sich dieses Buch ausführlich mit diesem wichtigen Thema. Wenn Sie in die Tiefen der Implementierung von Datenbankmanagement-Systemen eintauchen möchten, so ist dieses Buch mit Sicherheit nicht das richtige. Für diesen Fall empfehle ich Ihnen die Bücher von Heuer und Saake, die auch im mitp-Verlag erschienen sind. Um den nötigen Praxisbezug herzustellen und die in diesem Buch vorgestellten Konzepte zu verdeutlichen, wird der logische Entwurf eines kompletten Beispiels mittlerer Komplexität durchgeführt. Nähere Informationen zu dem Fallbeispiel finden Sie weiter unten im Kapitel unter Abschnitt 1.3, Seite 37. 1.2 Dateisystem und Datenbanken Damit Sie die großen Vereinfachungen und Vorteile verstehen können, die Datenbanksysteme gegenüber einfachen Dateien haben, die im Dateisystem abgespeichert sind, müssen Sie sich zunächst ein wenig mit der Vergangenheit beschäftigen, und sich ansehen, welche Probleme es damals gab. Die Vorteile einer Datenbank gegenüber dem Dateisystem sind in der Tat so groß, dass Microsoft momentan überlegt, das Dateisystem von Windows Longhorn komplett durch eine Datenbank zu ersetzen. WinFS, das neue Dateisystem, ist im Prin- 26 00___Datenbanken.book Seite 27 Montag, 12. September 2011 6:21 18 1.2 Dateisystem und Datenbanken zip nichts anderes als ein im Betriebssystem integrierter SQL-Server. Unter WinFS wird der Anwender die Möglichkeit haben, herkömmliche Dateien, relationale Daten und XML-Dateien zu verknüpfen. Es ist sogar geplant, dass Daten, die in WinFS abgelegt werden, über mehrere Rechner synchronisiert werden können. Nähere Informationen zu WinFS finden Sie unter http://msdn.microsoft. com/Longhorn/understanding/pillars/WinFS/default.aspx. Erst wenn Sie diese Vorteile verstanden haben, werden Sie sehen, warum die Entwicklung zu den Datenbanksystemen geführt hat, die wir heute kennen und schätzen gelernt haben. Die Informationen, die Sie in diesem Abschnitt erhalten, sind auch wichtig, wenn Sie planen, eine bestehende Anwendung, die ihre Daten im Dateisystem ablegt, in eine Anwendung zu transformieren, die die Daten in einer Datenbank speichert. 1.2.1 Historische Wurzeln Die Ablage von Dateien in einem Dateisystem ist sehr ähnlich zu der Art, wie wir Daten aufbewahren würden, wenn es gar keine Computer gäbe. Stellen Sie sich vor, dass Sie einen gewaltigen Berg an Schriftstücken haben, die geordnet und sortiert werden müssen, damit man ein bestimmtes Schriftstück, das man gerade benötigt, schnell wieder finden kann. Eine mögliche Art, dem unausweichlichen Chaos Paroli zu bieten, das bei der Ablage all dieser Schriftstücke auf Ihrem Schreibtisch entstünde, ist es, sich einen Schrank mit einer Hängeregistratur zu kaufen. Sie können die verschiedenen Schubladen des Schrankes unterschiedlich beschriften, z.B. »Rechnungen« und »Schriftverkehr«. In die »Rechnungen«-Schublade können Sie dann einfach Hängeordner hängen, die mit den Namen Ihrer Kunden beschriftet sind. In diesen Hängeordnern befinden sich dann alle Rechnungen zum jeweiligen Kunden. Suchen Sie nun eine bestimmte Rechnung zu einem bestimmten Kunden, so müssen Sie lediglich die Schublade aufziehen, in der die Hängeordner mit Rechnungen hängen, die Akte des gewünschten Kunden heraussuchen und dann innerhalb der Akte nach der gewünschten Rechnung suchen. Das ist recht einfach. Komplizierter wird es, wenn Sie nun alle Rechnungen heraussuchen möchten, die ein bestimmter Sachbearbeiter verfasst hat. Die Namen der Sachbearbeiter stehen zwar jeweils auf den einzelnen Rechnungen, da es aber kein Ordnungskriterium gibt, das die Rechungen den Sachbearbeitern zuweist, bleibt Ihnen in diesem Fall nichts anderes übrig, als alle Rechnungen aus der Hängeregistratur zu nehmen und einzeln daraufhin zu untersuchen, welcher Sachbearbeiter sich mit der Rechnung befasst hat. Dann müssen Sie die Rechungen, die der gewünschte Sachbearbeiter bearbeitet hat, an die Seite legen. Eine ziemlich mühsame Aufgabe, wenn Sie mich fragen. Die Organisation von Dateien im Dateisystem eines Rechners ist diesem Beispiel aus der realen Welt ziemlich stark nachempfunden. Hier werden einzelne, elektronische Dateien in Verzeichnissen gespeichert, die selbst wiederum in anderen Ver- 27 00___Datenbanken.book Seite 28 Montag, 12. September 2011 6:21 18 Kapitel 1 Einführung in das Thema Datenbanken zeichnissen gespeichert sein können. Einer der auffälligsten Unterschiede zur klassischen Hängeregistratur besteht darin, dass die Schachtelungstiefe der Verzeichnisse beliebig ist. Hinweis In der Realität ist die Schachtelungstiefe von Verzeichnissen nicht unbedingt beliebig – das hängt vom Betriebssystem des Rechners ab bzw. vom verwendeten Dateisystem. Gängige Dateisysteme haben im direkten Vergleich zu einer Hängeregistratur allerdings eine so tiefe Schachtelungstiefe, dass man getrost von einer beliebigen Schachtelungstiefe sprechen kann. Die Speicherung von Daten in einer derartigen hierarchischen Struktur im Dateisystem ist legitim, so lange die Anzahl der zu verwaltenden Daten gering ist. Sobald allerdings die Datenmengen und die Anforderungen an die Verknüpfung der Daten untereinander steigen, ist die Ablage von Daten in einem hierarchischen Dateisystem ineffizient. 1.2.2 Probleme bei der Datenhaltung im Dateisystem Zunächst haben Computer, die für wirtschaftliche Zwecke eingesetzt wurden, Daten, die z.B. finanzmathematische Programme benötigten, in einzelnen Dateien abgespeichert. Jedes Programm hatte seine eigenen Dateien, es gab allerdings Überschneidungen in den abgespeicherten Daten, da für verschiedene Zwecke dieselben Informationen benötigt werden. Sehen Sie sich hierzu Abbildung 1.3 an. Abb. 1.3: 28 Unterschiedliche Programme greifen auf unterschiedliche Dateien zu. 00___Datenbanken.book Seite 29 Montag, 12. September 2011 6:21 18 1.2 Dateisystem und Datenbanken Stellen Sie sich vor, dass Sie in einer Beratungsfirma arbeiten, die dafür bezahlt wird, dass die angestellten Berater Firmenkunden in verschiedenen Bereichen des Geschäftslebens beraten (dieses Beispiel greift schon auf das Fallbeispiel vor). Die Beratungsfirma besitzt zwei Programme, einerseits ein Kundenverwaltungsprogramm (in Neu-Deutsch heißt das Customer-Relationship-Management oder kurz CRM), das Kontakte der Berater zu den Kunden verwaltet, auf der anderen Seite ein Lohnabrechnungsprogramm, das berechnet, wie viel Lohn der jeweilige Berater für seine Leistungen bekommt. Wie Sie sich sicherlich schon selbst überlegt haben, werden in beiden Dateien, sowohl in der Datei für das Kundenverwaltungsprogramm als auch in der Lohnabrechnungsdatei, zumindest die Namen der Berater doppelt vorkommen. Einerseits möchte man mit dem Kundenverwaltungsprogramm festhalten, welcher Berater welchen Kunden beraten hat, andererseits möchte man mit der Lohnabrechnung die Löhne der Berater berechnen, daher braucht man in beiden Programmen wenigstens die Namen der Berater. Wenn nun ein Berater seinen Namen ändert (z.B. durch Heirat), so muss diese Namensänderung im Beispiel an zwei Stellen durchgeführt werden. (Unser Beispiel ist natürlich sehr vereinfacht. Ein großes Beratungsunternehmen besitzt sicherlich mehr als zwei Programme, mit denen die Aktivitäten des Unternehmens und auch der für das Unternehmen tätigen Berater festgehalten werden. Sie können also davon ausgehen, dass ein Beraternamen an vielen Stellen geändert werden muss.) Dies kann besonders dann problematisch sein, wenn die beiden Programme unter der Hoheit zweier verschiedener Abteilungen stehen. Es müssen zwei Sachbearbeiter davon in Kenntnis gesetzt werden, dass sich der Name geändert hat, und diese beiden Sachbearbeiter müssen die Änderung dann auch in die jeweiligen Programme einpflegen. In der Hektik des Tagesgeschäfts kann so eine kleine Änderung schon mal schnell übersehen werden, so dass für eine Person plötzlich zwei verschiedene Namen existieren. Die Situation wird besonders dann bedenklich, wenn die Änderung schon etwas länger zurückliegt und sich niemand daran erinnern kann, wie denn nun der richtige Name des Mitarbeiters ist. In diesem Fall muss ein umständlicher und unter Umständen auch teurer Fehlerbereinigungsprozess durchgeführt werden. In unserem Beispiel ist es natürlich einfach, den Fehler zu eliminieren. Man muss lediglich den Berater fragen, wie sein richtiger Name denn nun lautet. Viel kritischer und schwieriger wird die Fehlerbereinigung dann, wenn festgestellt wird, dass z.B. zwei oder drei von Millionen von Messwerten, die aufgezeichnet wurden, in den beiden Programmen, die sie verarbeiten, nicht übereinstimmen. Hier wird es richtig schwierig, den richtigen Messwert im Nachhinein zu ermitteln. Es lassen sich sicherlich noch weitere Überschneidungen finden. Was passiert zum Beispiel, wenn die Berater auf Stundenbasis bezahlt werden? Im schlechtesten Fall (da keines der beiden Programme auf die Datei des anderen Programms zugreifen kann) muss ein Sachbearbeiter zuerst die in einem Monat angefallenen Stunden mit dem Kundenverwaltungsprogramm ausdrucken, um sie dann in das Lohnabrechnungsprogramm per Hand wieder einzugeben. Dies ist ein mühsamer und fehleranfälliger Prozess. 29 00___Datenbanken.book Seite 30 Montag, 12. September 2011 6:21 18 Kapitel 1 Einführung in das Thema Datenbanken Bevor Sie sich weiter mit den Problemen beschäftigen, die die Datenhaltung in proprietären Dateien so mit sich bringt, lassen Sie uns einfach einmal einen Blick in eine solche proprietäre Datei werfen und anhand dieser Datei im Vorfeld schon einige wichtige Begriffe klären, die in Zusammenhang mit der Datenhaltung im Allgemeinen stehen. Diese Begriffe werden in Kapitel 3 wieder aufgegriffen und ausführlich am Konzept der relationalen Datenbank erklärt. Die Datei, die dem Kundenverwaltungsprogramm zugrunde liegt, könnte z.B. so aussehen, wie in Abbildung 1.4 gezeigt. Abb. 1.4: Inhalt der Datei des Kundenverwaltungsprogramms Als Daten bezeichnen wir alle Fakten, die in dieser Datei gespeichert sind. Beispiele für Daten sind z.B. bestimmte Telefonnummern oder Postleitzahlen. Daten selbst besitzen einen geringen Informationsgehalt. Damit Sie aus den Daten sinnvolle Informationen gewinnen können, müssen Sie sie in einen Zusammenhang bringen. Wenn Sie sich die Tabellendarstellung der Datei des Kundenverwaltungsprogramms in Abbildung 1.4 genau ansehen, so stellen Sie fest, dass in einer Spalte stets dieselben Informationen zu finden sind. In der Spalte KUNDE_TELEFON z.B. befinden sich die Telefonnummern der einzelnen Kunden. Eine benannte Einheit, die immer dieselben Daten aufnimmt, wird im Datenbankjargon als Feld bezeichnet. Im Prinzip kann man sagen, dass ein Feld eine Eigenschaft einer Entität darstellt, die in der Datenbank verwaltet wird. Beispiele für Felder in Abbildung 1.4 sind KUNDE, KUNDE_TELEFON, KUNDE_ADRESSE usw. Unter einem Datensatz versteht man eine Sammlung von verknüpften Feldern, die Daten über ein Ding des täglichen Lebens, wie z.B. eine Person oder einen Gegenstand, enthalten. In unserem Beispiel enthält ein Datensatz Daten über einen bestimmten Kundenkontakt und ist aus den Feldern KUNDE, KUNDE_TELEFON, KUNDE_ADRESSE, KUNDE_PLZ, BERATER, KONTAKTDATUM, DAUER, STDSATZ und BERATER_KNOWHOW aufgebaut. In der tabellarischen Darstellung in Abbildung 1.4 entspricht ein Datensatz einer Zeile. Als Datei bezeichnet man eine Menge von Datensätzen, die zusammengehören. In unserem Beispiel bilden alle Datensätze in Abbildung 1.4 die Datei für das Kundenverwaltungsprogramm. Bitte beachten Sie, dass verschiedene Dateien nicht unbe- 30 00___Datenbanken.book Seite 31 Montag, 12. September 2011 6:21 18 1.2 Dateisystem und Datenbanken dingt unterschiedlich aufgebaut sein müssen. Es ist durchaus erlaubt (und auch üblich), dass verschiedene Dateien denselben Aufbau besitzen. So ist es auch denkbar, dass man die Dateien des Kundenverwaltungsprogramms nach Beratern unterteilen kann. In diesem Fall hätten Sie zwei Dateien desselben Aufbaus, wobei die eine Datei nur Datensätze enthält, die Ingo Fuchs zugeordnet sind, und die andere Datei enthält nur Datensätze, die Helena Meier zugeordnet sind. Eine Datei, wie sie in Abbildung 1.4 zu sehen ist, wird auch oft als flache Datei bezeichnet, da sie ein Minimum an Struktur besitzt. Ich habe die Tabellenform der Abbildung 1.4 lediglich aus Gründen der Übersichtlichkeit gewählt. Eine beliebte Form, in der flache Dateien gespeichert werden, ist das CSV-Format (Comma Separated File). Hierbei werden die Felder entweder, wie in Listing 1.1 zu sehen ist, mit Hilfe eines Trennzeichens (in diesem Fall das Semikolon) getrennt, oder es wird für jedes Feld eine bestimmte Zahl an Zeichen definiert. Jeder Datensatz beginnt in einer neuen Zeile. Emil Schmidt;0231-1020449;Kaiserstrasse 5, Musterhausen;12345;Helena Meier;... Hans Müller;0221-2415932;Am Weiher 3, Musterhausen;12345;Ingo Fuchs;... Johanna Schulze;0410-1241221;Alte Poststr. 5, Musterhausen;12345;Helena Meier;... Markus Schulte;04514-123414;Goethestr. 7, Musterburg;12354;Ingo Fuchs;... Hans Müller;0221-2415932;Am Weiher 3, Musterhausen;12345;Helena Meier;... Johanna Schulze;0410-1241221;Alte Poststr. 5, Musterhausen;12345;Helena Meier;... Hans Müller;0221-2415932;Am Weiher 3, Musterhausen;12345;Ingo Fuchs;... Listing 1.1: Beispiel für eine flache Datei Wie Sie sehen können, enthält die in Listing 1.1 dargestellte flache Datei wirklich ein Minimum an Metainformationen. Die einzigen enthaltenen Metainformationen sind die Semikola, die die Daten der einzelnen Felder trennen. Es ist weder eine Information darüber vorhanden, welches Feld welche Bedeutung hat, noch welcher Datentyp verwendet wird. Wenn Ihnen allein diese Datei und die Information vorliegen, dass die Datei Kundenkontakte zu Beratern Ihres Beratungsunternehmens enthält, können Sie aufgrund dieser Darstellung nicht entscheiden, ob z.B. in der ersten Zeile Emil Schmidt oder Helena Meier der Berater ist (es sei denn, Sie kennen Ihre Kollegen). Eine Datei, wie sie in Listing 1.1 zu sehen ist, bringt viele Probleme mit sich, obwohl in der Anfangszeit des Informationszeitalters 20 Jahre lang mit solchen Dateien gearbeitet worden ist. Wenn Sie auf eine solche Datei mit Hilfe einer Hochsprache, wie z.B. C++, Basic oder Pascal zugreifen möchten, müssen Sie komplexe Funktionen und Prozeduren 31 00___Datenbanken.book Seite 32 Montag, 12. September 2011 6:21 18 Kapitel 1 Einführung in das Thema Datenbanken schreiben, die die Daten von der Festplatte laden, ändern und speichern können. Da Sie in diesem Fall in der Hochsprache nicht nur definieren müssen, welche Daten von der Festplatte geladen werden sollen, sondern auch, wie das geschehen soll, kann die Verwaltung flacher Dateien (insbesondere in einem komplexen System, das viele flache Dateien besitzt) sehr komplex werden. Da die Struktur der verschiedenen Dateien unterschiedlich ist – die Datei des Kundenverwaltungsprogramms ist mit Sicherheit anders als die Datei des Lohnabrechnungsprogramms –, muss für jede Datei eine eigene Dateiverwaltung programmiert werden, die folgende Aufgaben erfüllen kann: 쐽 Datei anlegen 쐽 Daten zur Datei hinzufügen 쐽 Daten aus der Datei löschen 쐽 Daten in der Datei ändern 쐽 Daten aus der Datei laden Aufgrund der Abhängigkeit der Dateiverwaltung von der Struktur der zugrunde liegenden Dateien ist es in einem solchen System nicht möglich, Ad-hoc-Abfragen durchzuführen, daher mussten Programme geschrieben werden, die bestimmte Berichtsanforderungen erfüllen konnten. Das Schreiben dieser Programme war natürlich auch aufwändig. Je nach Anforderungen konnte es sein, dass es eine Woche oder einen Monat dauerte, bevor ein Programm erstellt war, das einen Bericht ausgeben konnte, der einen bestimmten Sachverhalt dargestellt hat. Ganz am Anfang dieses Kapitels habe ich erwähnt, dass man, um gute Entscheidungen treffen zu können, gute Informationen benötigt. Diese guten Informationen benötigt man natürlich auch zeitnah, da die Entscheidungen natürlich ziemlich schnell getroffen werden müssen. Wenn es aber eine Woche oder einen Monat lang dauert, die notwendigen Informationen zu besorgen, so ist das Datenbanksystem äußerst ineffizient, da sich die Situation, für die die Informationen benötigt wurden, unter Umständen schon wieder verändert hat, so dass die gelieferten Informationen keinen Wert mehr besitzen, weil sie viel zu spät zur Verfügung stehen. Je mehr Daten in flachen Dateien verwaltet werden und je größer der Bedarf an bestimmten Berichten oder Auswertungen ist, desto komplexer und schwieriger wird es, ein auf flachen Dateien basierendes System zu verwalten und zu steuern. Dass die Fehleranfälligkeit eines solchen Systems mit der Komplexität steigt, versteht sich von selbst. Ein anderer wichtiger Punkt, den Sie bei der Betrachtung der flachen Dateien nicht aus den Augen lassen dürfen, ist das Verhalten eines auf flachen Dateien basierenden Systems bei Änderungen an der Struktur der Dateien. Sehen Sie sich bitte noch einmal die Struktur der Datei unseres Kundenverwaltungsprogramms an (siehe Abbildung 1.5). 32 00___Datenbanken.book Seite 33 Montag, 12. September 2011 6:21 18 1.2 Dateisystem und Datenbanken Abb. 1.5: Struktur der Kundenverwaltungsdatei Wenn Sie sich das Feld KUNDE_ADRESSE ansehen, sehen Sie, dass hier zwei Informationen enthalten sind, die Straße, in der der Kunde wohnt, und die Stadt. Da Sie gerne eine Auswertung der Daten bezogen auf die Stadt hätten, wäre es sinnvoll, die Straße und den Ort in verschiedenen Feldern zu speichern. Natürlich könnten Sie die Postleitzahl als Kriterium verwenden, da diese in einem Feld gespeichert ist. Das ist aber gerade bei größeren Städten problematisch, da diese über mehrere Postleitzahlen verfügen. Würden Sie die Postleitzahl als Kriterium nehmen, so könnten Sie die Kunden nach Postleitzahlen auswerten, was aber der ursprünglichen Frage, der Auswertung nach Städten, nicht hundertprozentig entspricht. In diesem Fall müssen Sie die Struktur Ihrer flachen Datei ändern, was zu Problemen führen kann, da sämtliche Programme, die auf diese Datei zugreifen, auch geändert werden müssen. Lassen Sie uns einmal untersuchen, was alles gemacht werden muss, um die angesprochene simple Änderung des Feldes KUNDE_ADRESSE durchzuführen. Zunächst einmal müssten wir ein Programm schreiben, das die Daten aus der alten Form in die neue Form konvertieren kann. Dieses Programm müsste die neue Dateistruktur auf Festplatte anlegen, Datensatz für Datensatz aus der alten Dateistruktur lesen, die Daten in die neue Dateistruktur transformieren (in unserem Fall das Feld KUNDEN_ADRESSE beim Komma auftrennen, den ersten Teil in das neue Feld STRASSE und den Rest in das neue Feld ORT schreiben) und die neuen Datensätze dann in die neue Dateistruktur auf Festplatte schreiben. Auch wenn diese Arbeit recht aufwändig ist, ist sie sicherlich machbar. Was allerdings problematischer ist, ist der zweite Teil der Datenumstellung. Nachdem wir die Daten von der alten in die neue Struktur transformiert haben, müssen wir nun alle Programme, die mit der Datei arbeiten (also sowohl Benutzerprogramme, mit denen neue Daten zur Datei hinzugefügt oder bestehende Daten verändert werden können, als auch sämtliche Berichtsprogramme), aufspüren und umprogrammieren, so dass sie mit der neuen Dateistruktur arbeiten können. In einem großen Unternehmen kann dies zu einem sehr zeitaufwändigen und mühsamen Prozess werden. Bedenken Sie bitte, dass dieser Prozess für jede noch so kleine Änderung an der Datenstruktur durchgeführt werden muss. Anwendungsprogramme, die eine solche Abhängigkeit von der Struktur der zugrunde liegenden Dateien aufweisen, nennt man auch strukturell abhängig – der Zugriff auf eine Datei hängt von ihrer Struktur ab. Eine andere wichtige Abhängigkeit, die Anwendungsprogramme aufweisen, ist die Datenabhängigkeit. Unter Datenabhängigkeit versteht man die Abhängigkeit einer Anwendung von der physikalischen Darstellung eines bestimmten Feldes. Stellen 33 00___Datenbanken.book Seite 34 Montag, 12. September 2011 6:21 18 Kapitel 1 Einführung in das Thema Datenbanken Sie sich z.B. vor, dass Sie eine bestimmte Information als Integer-Wert (also als Ganzzahl ohne Nachkommastellen) abgespeichert haben. Wenn Sie mit Ihrem Programm auf diese Information zugreifen möchten, müssen Sie stets den vorgegebenen Datentyp und das physikalische Format, in dem die Daten gespeichert sind, beachten und können auf den Integer-Wert immer nur als Integer zugreifen. Nach einiger Zeit stellen Sie fest, dass die in diesem Feld gespeicherten Daten auch Nachkommastellen haben können. Sie müssen die physikalische Darstellung der Zahl ändern, so dass auch Nachkommastellen gespeichert werden können. In diesem Fall müssen Sie alle Anwendungsprogramme umprogrammieren, damit sie mit dem neuen Datentyp umgehen können. Sie werden mir jetzt sicherlich entgegnen wollen, dass die oben geschilderte Datenabhängigkeit für Daten, die in einer Textdatei, wie wir sie bisher betrachtet haben, gespeichert sind, wohl nicht zutreffend sein kann, da sämtliche Daten als Text (also im Prinzip als Strings) gespeichert sind und dass diese nach dem Einlesen ohnehin in den notwendigen Datentyp, also z.B. eine Zahl, umgewandelt werden müssen. Ich stimme Ihnen voll und ganz zu. Dies ist sicherlich im Fall einer Textdatei richtig, aber denken Sie nun einmal daran, wie Dateien in einer Binär-Datei gespeichert werden können. Es gibt verschiedene Formate, in denen man z.B. Zahlen darstellen kann (Festkomma-Darstellung oder mit Hilfe von Exponent und Matisse). Man unterscheidet hier zwischen dem logischen Format der Daten, also dem Format, in dem Menschen die Daten verstehen, und dem physikalischen Format der Daten, das ist das Format, in dem die Daten vom Computer gespeichert werden. Hierbei ist zu beachten, dass ein logisches Format, z.B. Zahlen, mehrere physikalische Darstellungen haben kann und dass diese unter Umständen auch vom verwendeten Computer bzw. vom verwendeten Betriebssystem abhängen können. Ein weiteres wichtiges Problem, das Systeme, die auf flachen Dateien aufbauen, nur unzureichend lösen, ist die Implementierung eines sicheren Zugriffs auf die Daten. Da flache Dateien oft nichts anderes als CSV-Dateien, also im Prinzip Textdateien, sind, ist es recht einfach, Sicherheitsmechanismen auszuhebeln, die möglicherweise in den Datenbankanwendungen implementiert sind. Eine Textdatei können Sie einfach in einen Text-Editor laden und schon haben Sie Zugriff auf alle Daten, die in der jeweiligen Datei gespeichert sind. Der Datei-Charakter und die fehlenden Sicherheitsmaßnahmen führen dazu, dass Daten im Unternehmen nicht zentral zur Verfügung stehen, sondern dass die verschiedenen Abteilungen eines Unternehmens damit beginnen, eigene Datenbestände aufzubauen. Da diese Datenbestände voneinander isoliert gehalten werden, spricht man in diesem Zusammenhang auch von Dateninseln oder Informationsinseln. In einem solchen Szenario ist es unwahrscheinlich, dass bei Änderungen sämtliche Instanzen der Daten geändert werden. Daher kommt es hier oft vor, dass es verschiedene Versionen derselben Daten gibt, wie z.B. in unserem Beispiel oben, in dem sich ein Name geändert hat. Sie können sich sicherlich vorstellen, wie eine solche Struktur in einem größeren Unternehmen leicht außer Kontrolle geraten kann. 34 00___Datenbanken.book Seite 35 Montag, 12. September 2011 6:21 18 1.2 Dateisystem und Datenbanken 1.2.3 Datenredundanzen und Anomalien Sie haben im vorherigen Abschnitt gesehen, dass die Verwaltung von Daten in Dateien dazu führt, dass es zur Bildung von Dateninseln kommt und dass dieselben Daten an verschiedenen Orten abgespeichert werden. Wenn Daten, die dieselbe Information über eine Person oder einen Gegenstand speichern, an verschiedenen Orten gehalten werden, spricht man von Datenredundanz. Datenredundanz führt zu verschiedenen Problemen, die ich in diesem Abschnitt näher beleuchten werde. Eines der größten Probleme, das durch Datenredundanz verursacht wird und auf das Sie im Verlauf dieses Kapitels schon des Öfteren gestoßen sind, ist die Dateninkonsistenz. Man spricht von Dateninkonsistenz, wenn verschiedene Versionen derselben Daten existieren und diese verschiedenen Versionen im Konflikt miteinander stehen, das heißt, es ist nicht ohne weiteres möglich, anhand der Daten zu entscheiden, welches die aktuellste bzw. gültige Version der Daten ist. Stellen Sie sich vor, dass Sie in der Kundenverwaltungsdatei die Telefonnummer der Kundin Johanna Schulz ändern. In der Beispieldatei ist diese Telefonnummer in zwei Datensätzen vorhanden, Sie ändern diese aber lediglich in einem Datensatz, so wie in Abbildung 1.6 zu sehen ist. Abb. 1.6: Datenredundanz verursacht Dateninkonsistenzen. Fragen Sie nun Datensätze aus der Datei ab, erhalten Sie unterschiedliche Informationen über die Telefonnummer der Kundin Johanna Schulz, je nachdem, ob Sie den dritten oder den sechsten Datensatz abfragen. Ihren Daten fehlt Datenintegrität. Dateninkonsistenzen treten nicht nur bei der Änderung von Daten auf, es kann auch vorkommen, dass Dateninkonsistenzen bei der Erfassung von Daten auftreten. Stellen Sie sich einmal vor, was passiert, wenn eine überlastete Sekretärin komplexe Daten (z.B. lange Telefonnummern) in mehreren verschiedenen Dateien erfassen muss, da jedes der verwendeten Programme seinen eigenen Datenbestand besitzt. Fehler bei der Eingabe sind hier unvermeidbar. Dateninkonsistenzen sind insbesondere dann problematisch, wenn sie nach außen getragen werden und das Unternehmen verlassen. So kann es z.B. sein, dass Sie einem neuen Berater die Telefonnummer der Kundin Johanna Schulze geben (die natürlich falsch ist) und dieser die Kundin nicht erreichen kann. 35 00___Datenbanken.book Seite 36 Montag, 12. September 2011 6:21 18 Kapitel 1 Einführung in das Thema Datenbanken Die durch Dateninkonsistenzen auftretenden Fehler nennt man auch Datenanomalien. Ändert sich der Wert eines Feldes, so sollte diese Änderung an einer einzigen Stelle durchgeführt werden. Sie haben in dem Beispiel oben schon gesehen, was passieren kann, wenn Daten mehrfach, also redundant gespeichert werden. Datenanomalien unterscheidet man in drei verschiedene Kategorien: 쐽 Änderungs-Anomalie (Update-Anomalie) Die Änderungs-Anomalie haben Sie ja bereits kennen gelernt. Werden dieselben Daten an verschiedenen Stellen gespeichert, so muss gewährleistet sein, dass die Daten an allen Stellen, an denen sie gespeichert werden, auch geändert werden. In unserem Beispiel, in dem sich die Telefonnummer der Kundin Johanna Schulze ändert, muss diese Änderung nicht nur im dritten, sondern auch im sechsten Datensatz durchgeführt werden. Stellen Sie sich das Computersystem eines großen Unternehmens vor, das auf Dateien aufgebaut ist. Hier kann es vorkommen, dass dieselben Daten an über hundert verschiedenen Orten gespeichert sind. In diesem Fall ist es sehr leicht möglich, dass bei der Änderung der Daten eine Stelle übersehen wird. 쐽 Einfüge-Anomalie (Insert-Anomalie) Eine Einfüge-Anomalie liegt dann vor, wenn man bestimmte Daten nicht erfassen kann, ohne andere Daten gleichzeitig erfassen zu müssen. In unserer Beispiel-Datei ist es z.B. nicht möglich, einen Kunden zu erfassen, ohne diesem direkt einen Berater zuzuweisen. Selbst wenn Sie die Entscheidung, welcher Berater welchen Kunden berät, erst später treffen möchten, müssen Sie trotz allem einen Berater zuweisen. Werden viele Kunden erfasst, ist auch hier wieder die Gefahr groß, dass Dateninkonsistenzen entstehen. 쐽 Lösch-Anomalie (Delete-Anomalie) Eine Lösch-Anomalie tritt dann auf, wenn das Löschen bestimmter Daten verursacht, dass andere Daten, die eigentlich nicht gelöscht werden sollten, durch diesen Löschvorgang auch gelöscht werden. In der Beispiel-Datei zeigt sich dieses Problem, wenn Sie alle Datensätze löschen, in denen der Kunde Hans Müller vorkommt (also den zweiten, fünften und siebten Datensatz). Diesem Kunden ist der Berater Ingo Fuchs zugeordnet. Wenn Sie davon ausgehen, dass die Daten über Ingo Fuchs einzig und allein in dieser Datei stehen, so wird durch das Löschen aller Datensätze von Hans Müller automatisch jede Information über den Berater Ingo Fuchs gelöscht. Datenanomalien treten nicht nur bei der dateibasierten Datenhaltung auf. Sie können auch in schlecht entworfenen Datenbanksystemen auftreten. Wie oben beschrieben, sind Datenanomalien das Ergebnis von Datenredundanz. Das Ziel beim Entwurf von Datenbanksystemen sollte es also sein, Datenredundanzen zu vermeiden und so das Auftreten von Datenanomalien zu verhindern. 36 00___Datenbanken.book Seite 37 Montag, 12. September 2011 6:21 18 1.3 Das Fallbeispiel 1.3 Das Fallbeispiel Im gesamten Buch wird ein durchgängiges Fallbeispiel verwendet, um die Prinzipien des Datenbankdesigns vorzustellen. Beim Fallbeispiel geht es darum, die im Verlauf des Buches erarbeiteten theoretischen Inhalte an einem greifbaren Beispiel aus der Praxis zu verdeutlichen. Sie sollen so in die Lage versetzt werden, die vermittelten Inhalte schnell in der Praxis anwenden zu können. Lassen Sie uns nun einen Blick auf das Fallbeispiel werfen, das Unternehmen Alana Business Consult (ABC). Das Hauptgeschäft des Unternehmens Alana Business Consult ist es, anderen Firmen Berater zur Verfügung zu stellen. Diese Berater kommen aus verschiedenen Branchen und besitzen die unterschiedlichsten Qualifikationen. Die zu beratenden Firmen auf der anderen Seite haben individuelle Anforderungen, Probleme und Fragestellungen, die von den Beratern gelöst werden sollen. Wie Sie sich sicherlich vorstellen können, ist es immer eine herausfordernde Aufgabe, Berater und Firmen zusammenzubringen. Je nach Komplexität der Fragestellung werden einzelne Berater oder individuell zusammengestellte Beraterteams eingesetzt, um die in der jeweiligen Firma vorhandenen Schwierigkeiten zu lösen. Alle Berater sind fest bei Alana Business Consult eingestellt. Da niemand alles wissen kann und manche Fragestellungen über das Wissen einzelner Berater und sogar das kollektive Wissen des Unternehmens hinausgehen, arbeitet Alana Business Consult zusätzlich mit so genannten Experten zusammen. Diese Experten sind nicht fest bei ABC angestellt, es handelt sich vielmehr um freie Mitarbeiter oder Angestellte anderer Firmen, die bei besonders kniffligen Problemstellungen hinzugezogen werden können. Ist die Aufgabenstellung gelöst, die das Hinzuziehen eines Experten nötig machte, übernehmen wieder der oder die von ABC zugewiesenen Berater. Neben diesen beiden beratend tätigen Gruppen gibt es auch noch Mitarbeiter, die alle Aktivitäten von ABC verwalten und koordinieren. Jedem Kundenunternehmen ist einer dieser Mitarbeiter zugeordnet und dient dem Kunden als Ansprechpartner. Aufgabe dieser Mitarbeiter ist es, zu entscheiden, welcher Firma welcher Berater zugewiesen wird, ob eine Anfrage im Haus beantwortet werden kann oder ob ein Experte hinzugezogen werden muss und ob gegebenenfalls ein Beraterteam zusammengestellt werden muss. Bisher wurden interne Abläufe und Prozesse bei Alana Business Consult einerseits mit Papier und Bleistift, andererseits auch mit Office-Programmen wie z.B. Microsoft Word und Excel verwaltet. Der Nachteil diese Methode liegt auf der Hand: Die Daten werden nicht strukturiert abgelegt. Mitarbeiter lassen ihre eigenen Gewohnheiten in die Daten einfließen. Es gibt unzählige Möglichkeiten, eine Telefonnummer abzuspeichern. Mögliche Darstellungsformen sind z.B. +49 (1234) 123456 01234/123456 37 00___Datenbanken.book Seite 38 Montag, 12. September 2011 6:21 18 Kapitel 1 Einführung in das Thema Datenbanken (01234) 123456 0049 (0)1234 / 123456 Diese verschiedenen Darstellungsformen machen es sehr schwierig, konsolidierte Datenbestände zu erzeugen. Durch die verteilte Datenhaltung in verschiedenen Formaten ist es bei Alana Business Consult leider notwendig geworden, redundante Datenbestände anzulegen und zu pflegen. Diese Pflege ist mit der Zeit und der größer werdenden Anzahl der betreuten Kunden zunehmend komplexer und zeitaufwändiger geworden. Hierdurch sind die Prozesse bei Alana Business Consult fehleranfällig geworden. Briefe mit falschen Adressen werden abgesendet oder wichtige Kundeninformationen sind nicht verfügbar. Neben diesen Problemen, die im täglichen Geschäft auftreten, ist es sehr aufwändig, auf dem verteilten Datenbestand Analysen und Auswertungen durchzuführen. Aufgrund dieser Probleme häufen sich die Beschwerden der Kunden in letzter Zeit und auch die Mitarbeiter sind zunehmend unzufrieden mit der aktuellen Situation. Daher hat die Geschäftsführung entschieden, dass die Zeit zum Handeln gekommen ist, und ist an Sie als Datenbankentwickler herangetreten, um die unhaltbare Situation zu entschärfen. Sie sollen eine zentrale Datenbank entwickeln, die als globale (und einzige) Datenbasis für das Unternehmen dienen soll. Aufgrund des bisher in den vorherigen Abschnitten gewonnenen Wissens entscheiden Sie sich dafür, eine Datenbankanwendung basierend auf einer relationalen Datenbank zu erstellen. Wie Sie nun, ausgehend von der geschilderten Situation und der ersten Idee, zu einer funktionsfähigen Datenbank gelangen, erfahren Sie in diesem Buch. 1.4 쐽 Zusammenfassung Ad-hoc-Abfragen Unter einer Ad-hoc-Abfrage versteht man eine spontane Abfrage an eine Datenbank. Möchte man spontan eine bestimmte Information haben, so stellt man eine Ad-hoc-Abfrage an die Datenbank. Ein modernes Datenbanksystem muss Ad-hoc-Abfragen unterstützen. 쐽 Änderungs-Anomalie Werden dieselben Daten an verschiedenen Stellen gespeichert, so muss gewährleistet sein, dass die Daten an allen Stellen, an denen sie gespeichert werden, auch geändert werden. Geschieht dies nicht, so spricht man von einer Änderungs-Anomalie. 쐽 Datei Als Datei bezeichnet man eine Menge von Datensätzen, die zusammengehören. 38 00___Datenbanken.book Seite 39 Montag, 12. September 2011 6:21 18 1.4 Zusammenfassung 쐽 Daten Als Daten bezeichnen wir alle Fakten, die in einer Datei oder einer Datenbank gespeichert sind. Daten selbst besitzen einen geringen Informationsgehalt. Damit Sie aus den Daten sinnvolle Informationen gewinnen können, müssen Sie sie in einen Zusammenhang bringen. Der Informationsgehalt von Daten hängt vom Zusammenhang ab. 쐽 Datenabhängigkeit Unter Datenabhängigkeit versteht man die Abhängigkeit einer Anwendung von der physikalischen Darstellung eines bestimmten Feldes. Ist eine Anwendung abhängig von der physikalischen Darstellung der Daten eines Feldes, so muss die Anwendung umprogrammiert werden, sobald sich die physikalische Darstellung der Daten ändert. 쐽 Datenanomalien Die durch Dateninkonsistenzen auftretenden Fehler nennt man auch Datenanomalien. 쐽 Datenbank Es gibt zwei Definitionen des Begriffs Datenbank, die erste ist, dass eine Datenbank ein verteiltes, integriertes Computersystem ist, das Nutzdaten und Metadaten enthält. Die zweite Definition besagt, dass eine Datenbank eine geordnete, selbstbeschreibende Sammlung von Daten ist, die miteinander in Beziehung stehen. 쐽 Datenbankdesign Das gute Design einer Datenbank ist einer der zentralen Punkte bei der Erstellung einer Datenbankanwendung. Ist erst einmal ein gutes Datenbankdesign vorhanden, so kann dieses leicht in einem der marktüblichen Datenbanksysteme implementiert werden. 쐽 Datenbankmanagement-System (DBMS) Um eine Datenbank auf einem Computer zu verwalten, wird in der Regel ein so genanntes Datenbankmanagement-System (DBMS) verwendet, das sich um die Organisation der Daten kümmert und das den Zugriff auf die Daten regelt. Das Datenbankmanagement-System kann entweder aus einem einzelnen Programm bestehen oder es kann aus vielen Programmen bestehen, die zusammenarbeiten und so die Funktionalität eines DBMS bereitstellen. 쐽 Dateninkonsistenz Unter Dateninkonsistenz versteht man den Zustand, wenn verschiedene Versionen derselben Daten existieren und diese verschiedenen Versionen im Konflikt miteinander stehen. Anhand der Daten ist es nicht möglich zu entscheiden, welches die aktuellste bzw. gültige Version der Daten ist. 39 00___Datenbanken.book Seite 40 Montag, 12. September 2011 6:21 18 Kapitel 1 Einführung in das Thema Datenbanken 쐽 Datenintegrität Unter Datenintegrität versteht man, dass sich in der gespeicherten Datenbank Daten in einem konsistenten, widerspruchsfreien Zustand befinden. 쐽 Datenmanagement Der Umgang mit Daten wird als Datenmanagement bezeichnet. Aufgaben des Datenmanagements sind die Erzeugung, Speicherung und Wiedergabe der Daten. 쐽 Datensatz Unter einem Datensatz versteht man eine Sammlung von verknüpften Feldern, die Daten über ein Ding des täglichen Lebens, wie z.B. eine Person oder einen Gegenstand enthalten. 쐽 Einfüge-Anomalie Eine Einfüge-Anomalie liegt dann vor, wenn man bestimmte Daten nicht erfassen kann, ohne andere Daten gleichzeitig erfassen zu müssen. 쐽 Entität Eine Entität ist ein Objekt der realen Welt, das in der Datenbank verwaltet werden soll, also z.B. eine Person oder ein Gegenstand. 쐽 Feld Ein Feld stellt eine Eigenschaft einer Entität dar, die in der Datenbank verwaltet wird. 쐽 Informationen Informationen werden aus Daten durch Datenverarbeitung gewonnen und helfen dabei, gute Entscheidungen zu treffen. Damit anhand von Informationen gute Entscheidungen getroffen werden können, müssen Informationen zeitnah vorliegen. 쐽 Informationsinseln Beginnen verschiedene Abteilungen eines Unternehmens damit, eigene Datenbestände aufzubauen, die voneinander isoliert gehalten werden, so spricht man in diesem Zusammenhang von Informationsinseln oder Dateninseln. 쐽 Informations-Overkill Die ständig auf uns einprasselnde Flut von unterschiedlichsten Informationen wird als Informations-Overkill bezeichnet. 쐽 Logisches Format der Daten Das logische Format der Daten ist das Format, in dem Menschen die Daten verstehen können. 40 00___Datenbanken.book Seite 41 Montag, 12. September 2011 6:21 18 1.5 Aufgaben 쐽 Lösch-Anomalie Eine Lösch-Anomalie tritt dann auf, wenn das Löschen bestimmter Daten verursacht, dass andere Daten, die eigentlich nicht gelöscht werden sollten, durch diesen Löschvorgang auch gelöscht werden. 쐽 Metadaten Metadaten werde oft auch als Daten über Daten bezeichnet und helfen, die Nutzdaten der Datenbank zu strukturieren. 쐽 Nutzdaten Nutzdaten sind die Daten, die Benutzer in der Datenbank anlegen und aus denen die Informationen gewonnen werden. 쐽 Physikalisches Format der Daten Das physikalische Format der Daten ist das Format, in dem der Computer die Daten abspeichert. 쐽 Strukturelle Abhängigkeit Ist eine Anwendung von der Struktur der zugrunde liegenden Daten abhängig, so bezeichnet man dies als strukturelle Abhängigkeit – der Zugriff auf eine Datei hängt von ihrer Struktur ab. 1.5 Aufgaben Hier finden Sie Wiederholungsfragen, mit denen Sie Gelegenheit haben, sich noch einmal Gedanken über den Stoff des Kapitels zu machen. Die Lösungen zu diesen Aufgaben finden Sie in Anhang A.1. Außerdem finden Sie im Abschnitt Zum Weiterdenken Probleme und Aufgaben, auf die Sie Ihr frisch gewonnenes Wissen anwenden können. Hierfür werden keine Lösungen bereitgestellt, siehe Anhang A. 1.5.1 Wiederholung 1. Beschreiben Sie die Begriffe Daten, Feld, Datensatz und Datei! 2. Was ist ein DBMS und welche Funktion hat es? 3. Was bezeichnet man als Datenredundanz? Welche Probleme bringt die Datenredundanz mit sich? 4. Beschreiben Sie, wie es in einem Unternehmen, das seine Daten im Dateisystem verwaltet, zu Problemen kommen kann. 5. Was genau ist der Unterschied zwischen Daten und Informationen? 6. Warum brauchen wir Datenbanksysteme? 7. Warum besitzen Dateien keine Datenunabhängigkeit? 41 00___Datenbanken.book Seite 42 Montag, 12. September 2011 6:21 18 Kapitel 1 Einführung in das Thema Datenbanken 8. Warum ist Datenbankdesign wichtig? 9. Welche Arten von Datenbanksystemen gibt es? Wo liegen die Unterschiede? 10. Welche Datenanomalien kennen Sie und wie wirken sich diese aus? Geben Sie Beispiele an! 1.5.2 Zum Weiterdenken Die nächsten Aufgaben beziehen sich auf die folgende Tabelle: Abb. 1.7: Tabelle für die Aufgaben 1. Welche Datenredundanzen gibt es in der in Abbildung 1.7 dargestellten Tabelle? Welche Auswirkungen haben diese Redundanzen? 2. Wie viele Datensätze besitzt die in Abbildung 1.7 dargestellte Tabelle und wie viele Felder besitzt ein Datensatz? 3. Welche Entitäten können Sie in der Tabelle in Abbildung 1.7 erkennen? Welche Attribute besitzen diese Entitäten? 4. In welcher Beziehung stehen die in der vorherigen Aufgabe identifizierten Entitäten zueinander? 5. Was passiert, wenn Sie in der Tabelle in Abbildung 1.7 den zweiten, den vierten und den siebten Datensatz löschen? 42