Kapitel 1 Datenbanken – Eine Einführung 1.1 Allgemeines In Zeiten zunehmender Globalisierung der Märkte spielt die Information als Ware eine immer wichtigere Rolle. Weltweit operierende Unternehmen können nur durch gezielte Informationsgewinnung und transparente Datenablage im eigenen Unternehmen einen Wettbewerbsvorteil erarbeiten. Die richtige Information an der richtigen Stelle in der richtigen Aktualität ist oftmals eine erhebliche Geldsumme wert. Die automatische Datenverarbeitung wird von Unternehmen in immer größerem Umfang für Verwaltung und Planung eingesetzt, sodass man Daten mittlerweile als Betriebsmittel ansehen kann. Die Daten eines Unternehmens über Produkte, Herstellungsverfahren, Kunden, Lieferanten, Angestellte und Mitbewerber müssen systematisch abgelegt sein, um mit ihnen effizient arbeiten zu können. Dabei hat sich prinzipiell an der Datenverarbeitung seit den 1950er-Jahren nicht viel geändert. Sie gehorcht immer noch dem EVA-Prinzip, der Eingabe von Daten, der Verarbeitung und der Ausgabe von Daten. Mittlerweile ist jedoch das Datenvolumen immens angewachsen. Dies liegt zum Teil daran, dass immer mehr Bereiche eines Unternehmens an zentrale Datenbanksysteme angeschlossen werden. Ursächlich liegt die Datenflut aber an sich neu ergebenden Anforderungen: Während es vor einigen Jahren ausreichte, Karteikarten in elektronischer Form zu erfassen und zu verarbeiten, werden heute komplette Dokumente, Grafiken, Bilder und Töne – oder allgemein Multimediadokumente – in Datenbanken abgelegt. Immer mehr Unternehmen setzen inzwischen elektronische Archivierungssysteme ein, die sämtliche eingehenden Dokumente einscannen und in elektronischer Form ablegen. Es ist einsichtig, dass schnelle und effiziente Such- und Abfragealgorithmen immer mehr an Bedeutung gewinnen. Schließlich möchte man doch in solchen Datenbanken auch eine Volltextsuche nach bestimmten Stichwörtern o.Ä. mit kurzen Reaktionszeiten durchführen können. Information ist der Rohstoff der Zukunft, und Datenbanken sind die entsprechenden Rohstoffvorkommen. Ein aktuelles Beispiel für solche Datenbanken findet man im Internet. Die großen Suchmaschinen im Web basieren alle auf Datenbanksystemen, wobei Oracle hier in sehr großem Maß eingesetzt wird. Dabei suchen diverse Prozesse der Suchmaschinen nach neuen Inhalten und Seiten. Werden diese fündig, so werden die relevanten © des Titels »Oracle Express Edition« (ISBN 978-3-8266-9219-2) 2012 by 11 Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9219 Kapitel 1 Datenbanken – Eine Einführung Informationen (Stichworte, Themenkomplexe, Zeit- und Datumsangaben, URL etc.) aus dieser Seite herausgefiltert und in strukturierter Form in Tabellen einer solchen Datenbank geschrieben. Wenn Sie jetzt beispielsweise nach dem Stichwort »Oracle« oder »mitp« suchen, wird eine Abfrage generiert, die dann an die Datenbank gerichtet wird. Die Ergebnisse, sofern vorhanden, werden entsprechend grafisch aufbereitet und in einer HTML-Seite zur Verfügung gestellt. Angesichts der Wachstumsraten des World Wide Web wird die Bedeutung einer strukturierten und performanten Datenablage deutlich. 1.2 Zielgruppe Folgende Leser sollen durch dieses Buch angesprochen werden: 쐽 Entwickler, die beruflich mit einer Oracle-Datenbank konfrontiert sind und sich autodidaktisch weiterbilden möchten; 쐽 Entwickler, die Oracle als lokale Testumgebung für ihre Anwendungen nutzen möchten, um diese erst in einem späteren Schritt auf die »großen« Systeme zu portieren; 쐽 Studenten, die etwas über die Abfragesprache SQL und Datenbanken lernen möchten; 쐽 Datenbankadministratoren und Projektleiter, die Informationen über Oracle suchen. 1.3 Was ist eine Datenbank? Haben Sie sich schon einmal gefragt, in wie vielen Datenbanksystemen Ihre persönlichen Daten gespeichert sind? Da sind zum einen die öffentlichen Institutionen wie beispielsweise das Einwohnermeldeamt, die Verkehrssünderkartei in Flensburg oder die Datenbank des Straßenverkehrsamtes. Weiterhin ist vermutlich der größte Anteil an Leserinnen und Lesern im Besitz einer Reihe von Versicherungspolicen. Auch diese Daten liegen in elektronischer Form in Datenbanken bei den Versicherern vor. Nicht zuletzt die Banken verfügen über sehr genaue Informationen über ihre Kunden. Auch diese Daten sind in Rechenanlagen gespeichert. Datenbanksysteme wachen darüber, dass Ihre Daten auch nur den wirklich berechtigten Personen zugänglich sind oder Sie höflich daran erinnert werden, dass die Überweisungen für die Versicherungen fällig sind. Ein solches bzw. ähnliches System führt außerdem genau Buch über die Anzahl der Geschwindigkeitsüberschreitungen, die Sie begangen haben. Diese Liste könnte man beliebig erweitern. © des Titels »Oracle Express Edition« (ISBN 978-3-8266-9219-2) 2012 by 12 Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9219 1.3 Was ist eine Datenbank? Die Abbildung 1.1 verdeutlicht das Prinzip eines Datenbanksystems. Abb. 1.1: Datenbanksystem Eine Datenbank bzw. ein Datenbankmanagementsystem setzt sich im Wesentlichen aus folgenden Teilen zusammen: 쐽 der eigentlichen Datenmenge, also den Informationen, die verwaltet werden; 쐽 einer intelligenten Zugriffssteuerung und Benutzerverwaltung mittels entsprechender Software, dem Datenbankmanagementsystem (DBMS), als Serverprozess; 쐽 einem Clientprozess, über den der Anwender mit dem Serverprozess kommuniziert. Diese wesentlichen Elemente kann man noch einer genaueren Betrachtung unterziehen. So muss beispielsweise die Kommunikation zwischen Client- und Serverprozess genau definiert sein. Dieses Protokoll ist notwendig, weil man sonst nicht mit einem beliebigen Entwicklungssystem Datenbankanwendungen schreiben bzw. auf die Datenbestände zugreifen kann. Der Serverprozess sollte weiterhin über intelligente Rollback- und Backup-Mechanismen verfügen, um somit jeglichen Datenverlust zu verhindern. Hier bietet © des Titels »Oracle Express Edition« (ISBN 978-3-8266-9219-2) 2012 by 13 Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9219 Kapitel 1 Datenbanken – Eine Einführung Oracle Express ungeahnt einfache Verfahren, auf die in Kapitel 3 näher eingegangen wird. Eine automatische Verwaltung von Master-Detail-Beziehungen (denken Sie an eine Bestellung mit Kopf- und Positionsdaten) gehört mittlerweile zum Standard der großen Datenbanksysteme. 1.4 Das Datenbankmanagementsystem (DBMS) Die Daten selbst liegen in der Regel auf einem oder mehreren Datenbankservern. Auf diesen Servern läuft das DBMS. Nur darüber erhält der einzelne Anwender Zugriff auf die Datenmenge, da erst das DBMS die in der Regel verschlüsselten Daten in ein für das Anwendungsprogramm lesbares Format umsetzt. Ein solches DBMS regelt auch die Verwaltung und den gleichzeitigen Zugriff auf große Datenmengen von mehreren Benutzern aus. Nur wenn dieses DBMS auf dem Server aktiv ist, kann auch auf die Datenbanken innerhalb eines solchen Systems zugegriffen werden. In diesem Zusammenhang spricht man auch von »offenen« und »geschlossenen« Datenbanken. Vor der eigentlichen Nutzung einer Datenbank muss diese »hochgefahren« werden, d.h. das DBMS und damit einige weitere Prozesse werden gestartet. Erst dann kann der Anwender auf die Daten zugreifen. Entsprechend wird die Datenbank bei Beendigung der Arbeit »heruntergefahren«, d.h. sämtliche Prozesse des DBMS werden ordnungsgemäß beendet und alle eventuell geöffneten Dateien geschlossen. Bei einer Vielzahl von Anwendungen läuft ein solches DBMS allerdings 24 Stunden am Tag und sieben Tage in der Woche. Beispiele hierfür sind Zentralrechner von Banken (schließlich möchten Sie auch nachts die Möglichkeit haben, Geld abzuheben). Ein Herunterfahren der Datenbank findet nur in Ausnahmesituationen und zu bestimmten Wartungsintervallen statt. Ansonsten stehen die Daten rund um die Uhr den Anwendern zur Verfügung. Voraussetzung für einen 24 Stunden-Betrieb ist natürlich, dass die Datenbank Mechanismen unterstützt, die während des laufenden Betriebs Datensicherungen und Wartungstätigkeiten durchführen. Bei einer solchen Architektur spricht man auch von Client-Server-Prozessen. Anwender, die über ihre Workstations Zugriffe auf die Daten realisieren, werden in einem solchen Fall als Clients bezeichnet. Stellen Sie sich z.B. folgendes Szenario vor: Ein Mitarbeiter einer Bank möchte eine Aufstellung über alle Konten, die sich zu einem bestimmten Zeitpunkt im Minus befinden. Dieser Mitarbeiter würde an seinem Rechner eine Abfrage der folgenden Form generieren: »Zeige mir alle Adressen der Personen, deren Konto einen negativen Saldo aufweist«. © des Titels »Oracle Express Edition« (ISBN 978-3-8266-9219-2) 2012 by 14 Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9219 1.4 Das Datenbankmanagementsystem (DBMS) Diese Abfrage wird jetzt an das DBMS geschickt. Dieses übersetzt die Abfrage und selektiert die entsprechenden Daten aus der Datenbasis. Lediglich diese Ergebnismenge wird zurück an den Client geschickt. Die Abbildung 1.2 veranschaulicht dieses Prinzip. Abb. 1.2: Client-Server-Prinzip Dieses Client-Server-Prinzip hat mehrere Vorteile: 쐽 Alle Anwender arbeiten mit der gleichen Datenbasis. 쐽 Zugriffsberechtigungen werden zentral durch das DBMS verwaltet. 쐽 Ein Großteil der Arbeit wird durch den Server erledigt; d.h. es erfolgt eine Arbeitsteilung zwischen Client und Server. 쐽 Es werden nur die relevanten Daten zum Anwender übertragen; somit sinkt die Netzbelastung erheblich. © des Titels »Oracle Express Edition« (ISBN 978-3-8266-9219-2) 2012 by 15 Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9219 Kapitel 1 Datenbanken – Eine Einführung Neben der Client-Server-Architektur findet man häufig noch den Begriff File-Server-Architektur. Bei dieser Form der Vernetzung dient der Server lediglich als zentrale Ablage für die am Netzwerk angeschlossenen Rechner. Auf einem solchen File-Server laufen keine bzw. nur sehr wenige Programme, die die Arbeit der Clients im wesentlichen Maße entlasten, so wie es bei echten Client-Server-Anwendungen der Fall ist. Eben diese Client-Server-Architektur ist es, die ein System wie Oracle von kleinen lokalen Datenbanksystemen wie beispielsweise Lotus Approach oder Microsoft Access abhebt. Im Prinzip bilden solche Systeme lediglich ein flexibles, aber dennoch intuitiv zu bedienendes Datenbank-Frontend, nicht mehr und nicht weniger. Im weiteren Verlauf des Buches werden Sie noch eine Menge Dinge darüber erfahren, wie intelligent ein »richtiges« Datenbanksystem ist. 1.5 Der Aufbau der Daten Neben der Funktionalität des DBMS ist noch der Aufbau der Datenbank selbst wichtig. Ohne grundlegende Kenntnisse der Datenstrukturen kommt kein Datenbankadministrator aus. Dieses Datenmodell und die Art der Speicherung bilden auch die Grundlage dafür, dass die Informationen möglichst schnell und effizient wiedergefunden werden können. Die Datenbank setzt sich im Wesentlichen aus folgenden Elementen zusammen: 쐽 Tabellen 쐽 Indizes 쐽 Abfragen (Views) 쐽 Synonyme 쐽 ... Im Zusammenhang mit Oracle-Datenbanken bezeichnet man diese Elemente auch als Schema-Objekte. Diese Schema-Objekte bilden die logische Struktur einer Datenbank, d.h. diese Elemente sind vom Betriebssystem unabhängig. Sie können solche Objekte in einer Oracle Express-Installation auf einem WindowsSystem als auch auf einer Installation auf einer Linux-Maschine finden. 1.6 Tabellen Wichtigstes Hilfsmittel für eine effiziente Datenablage stellt die Tabelle dar. Eine Datenbank besteht neben einer Vielzahl weiterer Hilfsmittel (und Objekten) aus einer bestimmten Anzahl an Tabellen. © des Titels »Oracle Express Edition« (ISBN 978-3-8266-9219-2) 2012 by 16 Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9219 1.6 Tabellen Der Aufbau einer solchen Tabelle soll anhand einer einfachen Adresstabelle verdeutlicht werden (vgl. Abbildung 1.3). Abb. 1.3: Eine einfache Tabelle Eine solche Tabelle ist in Zeilen und Spalten eingeteilt. Durch Auswahl einer bestimmten Zeile und einer bestimmten Spalte gelangt man in genau ein Feld. In einem solchen Feld befindet sich genau eine Information (so sollte es zumindest sein). Jede Zeile dieser Tabelle repräsentiert genau einen Datensatz. In einem Datensatz sind beispielsweise die Adressinformationen einer Person oder einer Firma zusammen gefasst. In den Spalten einer solchen Tabelle wird jeweils eine Information eines Datensatzes abgelegt. In der Spalte CustNo aus der Abbildung 1.3 wird beispielsweise die Kundennummer der einzelnen Kunden abgelegt. Anhand der Spaltenüberschriften sollte man erkennen können, welche Art der Information in der Spalte abgelegt wird; sie sollten sprechend sein. Pro Spalte wird jeweils ein Datentyp einer bestimmten Länge definiert. Setzt sich beispielsweise die Kundennummer immer nur aus Ziffern zusammen (vgl. Abbildung 1.3), so erhält diese Spalte den Datentyp NUMBER. Müssen in der Tabellenspalte sowohl Ziffern als auch Buchstaben abgelegt werden, so empfiehlt sich die Verwendung des Datentyps CHARACTER bzw. VARCHAR2. Die Definition der Länge eines Datentyps hängt wieder vom Typ selbst ab. Bei dem Typ NUMBER wird in Vorund Nachkommastellen bzw. in Gesamtlänge und Nachkommastellen unterschieden. Der Typ CHARACTER kennt hingegen nur eine Gesamtlänge. Jede Datenbank kennt noch eine Reihe weiterer Datentypen wie beispielsweise DATE zum Ablegen © des Titels »Oracle Express Edition« (ISBN 978-3-8266-9219-2) 2012 by 17 Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9219 Kapitel 1 Datenbanken – Eine Einführung eines Datums o.Ä. Im weiteren Verlauf des Buches werden wir uns noch intensiv mit den Datentypen und Objekten von Oracle beschäftigen. Tipp Eine genaue Beschreibung der zulässigen Datentypen in Oracle (ich schreibe bewusst nicht Oracle Express, da die Typen in allen Oracle-Produkten gleich sind) finden Sie nebst Beispielen im Anhang A. Soll eine Anwendung auf verschiedenen Datenbanksystemen wie beispielsweise Oracle, Microsofts SQL-Server, Postgres oder mySQL lauffähig sein, sollte man nur solche Datentypen verwendet, die von allen Systemen unterstützt werden. Es darf also in einem solchen Fall nur der kleinste gemeinsame Nenner an verschiedenen Datentypen verwendet werden. Innerhalb einer Oracle-Datenbank unterscheidet man zwei Typen von Tabellen: 쐽 Benutzer-Tabellen 쐽 System-Tabellen 1.7 Benutzer-Tabellen Benutzer-Tabellen enthalten die eigentlichen Daten, um deren Verwaltung es geht. Bei einer Adressverwaltung wären die Adressen in solchen Benutzertabellen abgelegt. Bei einem Produktionsplanungssystem wären es Informationen über Materialien, Stücklisten und Arbeitspläne usw. 1.8 System-Tabellen System-Tabellen enthalten Informationen über das System der Datenbank. Dazu gehört beispielsweise die Verwaltung von Benutzern und Berechtigungen. Solche System-Tabellen werden in der Regel nicht von den eigentlichen Anwendungen genutzt. In ihnen werden lediglich Informationen abgelegt, die das DBMS für den Betrieb benötigt. Der Zugriff auf solche System-Tabellen erfolgt aber nach genau dem gleichen Prinzip, nach dem auch die Daten aus den Benutzertabellen ausgelesen und zurückgeschrieben werden. Bei der Installation der Datenbank werden per Voreinstellung schon einige Benutzer eingerichtet, die für die Systemadministration zuständig sind. In der Regel gehören diesen Benutzern auch die SystemTabellen der Datenbank. Man spricht hier auch vom Data Dictionary der Datenbank. Im Prinzip können Sie davon ausgehen, dass die Definitionen aller in den folgenden Kapiteln beschriebenen Datenbankobjekte im Data Dictionary der Datenbank abgelegt werden. Bei den in den System-Tabellen abgelegten Daten spricht man auch von Metadaten. © des Titels »Oracle Express Edition« (ISBN 978-3-8266-9219-2) 2012 by 18 Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9219 1.9 Indizes 1.9 Indizes Standardmäßig werden die Datensätze einer Tabelle in der Reihenfolge der Eingabe bzw. des Abspeicherns dargestellt. Dies ist aber oftmals nicht sinnvoll bzw. nicht erwünscht. Hier helfen Indizes, die Daten zu »sortieren«. Es handelt sich allerdings nicht um eine physikalische Sortierung, sondern lediglich um eine logische. Die Datensätze können mithilfe eines Index in einer anderen Reihenfolge dargestellt werden. Weiterhin erlauben Indizes einen schnellen Zugriff auf einen bestimmten Datensatz innerhalb einer Tabelle. Er ist mit dem Stichwortverzeichnis (das Sie übrigens auch in diesem Werk finden) eines Buches vergleichbar. Über dieses Register kann man sehr schnell und gezielt nach einem bestimmten Begriff suchen. Dies wird dadurch ermöglicht, dass die wichtigsten Begriffe in diesem Register noch einmal abgedruckt sind, nun allerdings alphabetisch sortiert. Hat man den entsprechenden Begriff gefunden, kann man über die zusätzlich abgedruckten Seitenzahlen direkt an die gewünschten Textstellen springen. Indizes können z.B. auf eine oder mehrere Spalten einer Tabelle angelegt werden. Abbildung 1.3 zeigt eine Adresstabelle, in der Firmendaten abgelegt sind. Diese sind nach Kundennummern, nämlich der Spalte CustNo, sortiert. Soll diese Tabelle nun nach einem bestimmten Firmennamen durchsucht werden, nützt die aktuelle Sortierung nichts, wenn man nicht gerade die Nummer zur Hand hat. Hier könnte ein Index auf das Feld Company weiterhelfen. Durch das Erzeugen eines solchen Indexes würde eine weitere (Index-)Tabelle angelegt, die folgenden Inhalt hat: Satznummer Company 6 Blue Jack Aqua Center 12 Blue Sports 4 Cayman Drivers World Unlimited 9 Fantastique Aquatica 1 Kauai Dive Shoppe 13 Makai SCUBA CLUB 10 Marmot Divers Club 8 Ocean Paradise 3 Sight Diver 11 The Depth Charge 5 Tom Sawyer Diving Centre 2 Unisco 7 VIP Divers Club Tabelle 1.1: Beispieltabelle mit aktivem Index © des Titels »Oracle Express Edition« (ISBN 978-3-8266-9219-2) 2012 by 19 Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9219 Kapitel 1 Datenbanken – Eine Einführung Wird jetzt beispielsweise nach der Firma »Ocean Paradise« gesucht, kann eine schnelle Suchoperation auf der Spalte Company der Indextabelle durchgeführt werden. Solche Suchoperationen erfolgen oftmals nach dem Prinzip der binären Suche oder speziellen Hashing-Verfahren; zumindest muss diese Indextabelle nicht sequenziell durchsucht werden. Das Ergebnis dieser Suche liefert als Satznummer »8« zurück. Mit dieser Satznummer kann jetzt gezielt auf den eigentlichen Datensatz in der Adresstabelle zugegriffen werden. Es besteht durchaus die Möglichkeit, für eine Tabelle mehrere (verschiedene) Indizes zu erzeugen. Jedes DBMS verfügt über entsprechende Algorithmen, die eine Abfrage parsen und dann entscheiden, welche Indextabelle die größte Hilfe, d.h. die schnellste Antwort liefert. Die Qualität eines Datenbanksystems hängt zu einem nicht unwesentlichen Teil von der Qualität und »Intelligenz« dieses Algorithmus ab. Indizes werden in der Regel noch unterschieden in: 쐽 Primärindizes 쐽 Sekundärindizes 1.9.1 Primärindex Ein Primärindex ist ein eindeutiger Schlüssel auf eines oder mehrere Tabellenfelder. Bei dem Beispiel aus Abbildung 1.3 wäre ein Index auf das Feld CustNo ein solcher Primärindex, weil diese Kundennummer eine eindeutige Zuordnung zu einem Satz ist. In der Datenbank einer Bibliothek könnte auf die ISBN ein Primärindex gelegt werden, da diese für jedes Buch identifizierend wirkt. Setzt sich ein Primärindex aus mehreren Tabellenspalten zusammen, muss genau diese Kombination an Feldinhalten eindeutig sein. Jede Tabelle sollte so entworfen sein, dass sie einen Primärindex besitzt, mit dessen Hilfe jeder Satz eindeutig identifiziert werden kann. Oracle Express – auch bezeichnet als Oracle XE – bietet hier von Hause aus einige Berichte bzw. Reports an, die alle Tabellen auflisten, bei denen beispielsweise kein Primärindex vorhanden ist. 1.9.2 Sekundärindex Als Sekundärindizes werden all die Indizes bezeichnet, die keine eindeutige Kennung aufweisen. Bei einer Adresstabelle wäre ein Index auf dem Feld Nachname ein solcher Sekundärindex, denn es können durchaus mehrere gleiche Nachnamen in der Tabelle vorkommen. Im Prinzip können beliebig viele Indextabellen für eine Benutzer-Tabelle angelegt werden. Vorteil solcher Indizes ist der schnelle Zugriff auf Informationen. Nachteil ist allerdings, dass bei Änderungen der Daten auch die Indizes gepflegt werden müssen. Eine solche Aktualisierung geht nun wieder zu Lasten der Performance. © des Titels »Oracle Express Edition« (ISBN 978-3-8266-9219-2) 2012 by 20 Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9219 1.10 Ansichten oder Views Die Entscheidung, welche Indextabelle das schnellstmögliche Ergebnis liefert, fällt wiederum das DBMS. In unserem Beispiel würde das DBMS erkennen, dass eine Suche über den Firmennamen erfolgen soll, und dementsprechend die passende Indextabelle auswählen. 1.10 Ansichten oder Views In Ansichten oder Views sind Informationen einer oder mehrerer Tabellen zu quasi einer Tabelle zusammengefasst. Für den Anwender hat es zumindest den Anschein, dass es sich um eine Tabelle handelt; in der Realität wird die »Ansicht« aber immer erst zur Laufzeit gebildet, d.h. zu dem Zeitpunkt, zu dem ein Anwender Informationen aus dieser View anfordert. Das Speichern bestimmter Verknüpfungen in Abfragen bzw. Views bietet aus Anwendersicht wesentliche Vorteile: 쐽 Die Komplexität der logischen Datenstruktur ist verborgen. 쐽 Man kann den Zugriff auf einzelne Tabellenspalten sperren, indem man Views ohne genau diese Spalten erzeugt. 쐽 Die Daten können aus einer anderen Perspektive betrachtet werden. Auch auf diese Objekte wird in den Kapiteln 3 und 4 noch genauer eingegangen. 1.11 Synonyme Ein Synonym ist ein Aliasname für eine Tabelle. Durch Vergabe solcher Synonyme kann man die Tabellen für den Anwender transparenter gestalten. In der Regel folgt die Bezeichnung der Benutzertabellen einer bestimmten Nomenklatur, die durch die Programmierer vergeben wird. Bei einem Produktionsplanungssystem (PPS) könnte eine Tabelle z.B. »123xpos98« heißen und die Stücklistenpositionen verschiedener Produkte speichern. Die Vergabe des Synonyms »Stueckliste« für diese Tabelle macht deren Funktion für Anwender wesentlich transparenter. (Ich habe bei dem Synonym »Stueckliste« bewusst auf die Umlaute verzichtet, wenngleich Sie davon ausgehen können, dass mittlerweile alle Datenbanksysteme Umlaute in ihren Objektnamen zulassen.) Synonyme werden auch oftmals verwendet, wenn man über Datenbank-Links auf Tabellen anderer Datenbanken zugreifen möchte. Für den Entwickler stellen sich solche Synonyme transparent als Objekte der eigenen Datenbank dar. 1.12 Die relationale Datenbank Im Mittelpunkt der heutigen Informationstechnologie steht (noch) die relationale Datenbank. In diesem Modell werden die Informationen in tabellarischer Form abgelegt. Durch gezielte Verknüpfungen der Tabellen zueinander können © des Titels »Oracle Express Edition« (ISBN 978-3-8266-9219-2) 2012 by 21 Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9219 Kapitel 1 Datenbanken – Eine Einführung bestimmte Informationen selektiert werden. So kann man z.B. eine Tabelle für die in einer Bibliothek zur Verfügung stehenden Bücher definieren. Ziel ist zunächst, die Informationen zu einem Buch in der Datenbank zu erfassen, die die realen Anforderungen möglichst gut abbilden. Eine erste Überlegung könnte folgende Tabellenfelder liefern: 쐽 Titel 쐽 Autor 쐽 Auflage 쐽 ISBN 쐽 Schlagwort 쐽 Lagerplatz Jede der Eigenschaften würde also eine Spalte in der Tabelle BÜCHER bilden und jede Zeile dann ein erfasstes Buch repräsentieren (Tabelle 1.2). Titel Autor Auflage ISBN Schlagwort Platz Oracle-Datenbanken Ault 2 Übungsbuch C++ Heitsiek 2 3-8266-1316-3 Oracle B11 3-8266-9393-0 C++ Übungsbuch Java Niemann C018 2 3-8266-9392-2 Java C019 Einsteigerseminar C++ Niemann Heitsiek 2 3-8266-7374-3 C++ C020 Tabelle 1.2: Beispieltabelle einer relationalen Datenbank Vielleicht vermissen Sie in der Spalte AUFLAGE den Punkt hinter der Zahl. Da diese Information aber zu jedem Datensatz mit abgespeichert werden muss, ist es sinnvoller, den Punkt nicht mit in der Datenbank abzulegen, sondern von dem Anwendungs- bzw. Druckprogramm zufügen zu lassen. Man spart zwar nur ein Byte pro Buchtitel; bei 20 Millionen Sätzen kann eine solche Vorgehensweise aber schon Auswirkungen haben! Als Datenbankadministrator und -entwickler sollte man also bemüht sein, die Informationen möglichst »schlank« abzulegen. Bei diesem Modell kann man auf einfache Weise beispielsweise nach dem Buchtitel oder dem Autor selektieren. Denkbar wäre eine folgende Abfrage: »Zeige mir alle Bücher, die der Autor ‚Heitsiek’ geschrieben hat.« Dieses Datenmodell weist jedoch einige enorme Schwächen auf. So ist der letzte Titel von zwei Autoren verfasst worden. Zwar könnte man mehrere Namen in die Spalte Autor eingeben. Eine Selektion nach einem bestimmten Autor wäre dann jedoch nur wesentlich schwieriger zu realisieren. Abgesehen davon wider- © des Titels »Oracle Express Edition« (ISBN 978-3-8266-9219-2) 2012 by 22 Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9219 1.13 Die 1:n-Beziehung spricht diese Vorgehensweise dem relationalen Datenbankmodell, das besagt, dass in ein Feld auch nur eine Information eingetragen werden darf. Ist diese Bedingung erfüllt, so spricht man davon, dass sich die Tabelle in der Ersten Normalform befindet. Die Such- und Sortieralgorithmen sind auf dieses Prinzip hin optimiert bzw. ausgelegt. Was ist also zu tun? Zunächst die schlechtere Lösung: Theoretisch wäre es möglich, für das gleiche Buch zwei oder mehr Datensätze in der Büchertabelle zu erzeugen, die sich alle jeweils nur durch den Eintrag in der Spalte »Autor« unterscheiden. Die Tabelle hätte dann den Aufbau wie Tabelle 1.3. Titel Autor Auflage ISBN Schlagwort Platz Oracle-Datenbanken Ault 2 3-8266-1316-3 Oracle B11 Übungsbuch C++ Heitsiek 2 3-8266-9393-0 C++ C018 Übungsbuch Java Niemann 2 3-8266-9392-2 Java C019 Einsteigerseminar C++ Niemann 2 3-8266-7374-3 C++ C020 Einsteigerseminar C++ Heitsiek 2 3-8266-7374-3 C++ C020 Tabelle 1.3: Büchertabelle mit »doppelten« Datensätzen Durch diese Vorgehensweise hat man dem Grundsatz »nur eine Information in ein Feld« Rechnung getragen. Nachteil dieser Art der Speicherung ist einerseits die Verschwendung von Speicherplatz, was vielleicht noch zu verschmerzen wäre. Andererseits liegt in diesem Fall eine redundante Datenhaltung vor, d.h. bestimmte Informationen sind an mehr als einer Stelle gespeichert. Solche Datenredundanz wird dann besonders problematisch, wenn die Daten dem Änderungsdienst unterliegen. Im vorliegenden Fall könnte es beispielsweise vorkommen, dass das Buch »Einsteigerseminar C++« durch eine neuere Auflage ersetzt wird. Bei mehreren Autoren, wie im vorliegenden Fall, müssten dann mehrere Datensätze geändert werden. Auch dies scheint also nicht der richtige Weg zu sein. 1.13 Die 1:n-Beziehung Eine andere Lösungsmöglichkeit besteht in der Anlage einer weiteren Tabelle. Wir haben hier nämlich die erste 1:n-Beziehung gefunden, weil eben ein Buch von n Autoren geschrieben werden kann. Solche Beziehungen bildet man im Datenbankmodell durch zwei über eindeutige Felder verknüpfte Tabellen ab. Das Feld buchnummer in der Tabelle BÜCHER ist eindeutig. © des Titels »Oracle Express Edition« (ISBN 978-3-8266-9219-2) 2012 by 23 Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9219 Kapitel 1 Datenbanken – Eine Einführung Abb. 1.4: 1:n-Verknüpfung zweier Tabellen Buchnummer Titel Auflage ISBN Schlagwort Platz 1 Oracle-Datenbanken 2 3-8266-1316-3 Oracle B11 2 Übungsbuch C++ 2 3-8266-9393-0 C++ C018 3 Übungsbuch Java 2 3-8266-9392-2 Java C019 4 Einsteigerseminar C++ 2 3-8266-7374-3 C++ C020 Tabelle 1.4: Buchtabelle der Verknüpfung Buchnummer Name 1 Ault 2 Heitsiek 3 Niemann 4 Heitsiek 4 Niemann Tabelle 1.5: Tabelle der Autoren Jeder Datensatz in der Tabelle 1.4 erhält in dem Feld buchnummer eine eindeutige Nummer. Durch diese Nummer kann er identifiziert werden. In der Tabelle 1.5 erfolgt nun über diese buchnummer eine Zuordnung der Autoren zu den Büchern. Ist also ein Buch von einem Autor geschrieben worden, so findet man einen Datensatz in Tabelle 1.4 und einen Datensatz in Tabelle 1.5. Ist ein Buch von mehreren Autoren verfasst worden, findet man einen Datensatz in Tabelle 1.4 und mehrere (Anzahl n) Datensätze in Tabelle 1.5. Hinweis In der Realität würde man allerdings nicht zu jeder Buchnummer immer den ausgeschriebenen Namen des Autors abspeichern. Man würde hier für die Autoren einen Datensatz anlegen und die Autorennummer zu den Büchern speichern. © des Titels »Oracle Express Edition« (ISBN 978-3-8266-9219-2) 2012 by 24 Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9219 1.14 Die n:m-Beziehung Durch dieses Modell werden die Daten effizient abgelegt, weil jede Information lediglich einmal abgelegt wird. Hier würde eine Änderung der Auflagennummer lediglich an einer Stelle vorgenommen werden müssen. Die beiden Tabellen sind durch das Feld buchnummer miteinander verbunden. Diese Verbindung wird auch als Relation bezeichnet, daher der Name relationale Datenbank. Bei einer 1:nBeziehung, wie in dem vorliegenden Fall, ist das Schlüsselfeld (hier: buchnummer) ein eindeutiges Satzkennzeichen. 1.14 Die n:m-Beziehung Neben der recht einfachen 1:n-Beziehung gibt es noch die weitaus komplexere n:m-Beziehung. Anhand eines Maklerbüros soll diese Relation verschiedener Tabellen verdeutlicht werden. Der Makler nutzt eine Datenbank, in der er seine Kunden in tabellarischer Form erfasst. Die Kundennummer ist dabei eindeutig. Diese Tabelle umfasst die folgenden Felder: 쐽 Kundennummer 쐽 Name 쐽 Vorname 쐽 Straße 쐽 Ort 쐽 Telefon 쐽 Einkommen Kundennummer Name Vorname Straße Ort 1 Müller Peter Musterstr. 1 München 12345 60.000 2 Meier Anja Rosenstr. 5 München 54321 100.000 3 Schulze Heinz Am Wirtshaus 3 München 44444 500.000 4 Peter Laura An der Quelle 7 32323 80.000 München Telefon Einkommen Tabelle 1.6: Kunden des Maklers In einer zweiten Tabelle erfasst er sämtliche Immobilien, die sich zurzeit im Angebot befinden. Die zugehörige Tabelle könnte folgenden Aufbau besitzen: 쐽 Objektnr 쐽 Straße 쐽 Ort 쐽 Preis © des Titels »Oracle Express Edition« (ISBN 978-3-8266-9219-2) 2012 by 25 Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9219 Kapitel 1 Datenbanken – Eine Einführung Objektnr Straße Ort Preis 1 Musterstraße 20 München 100.000 2 Rosenstraße 1 München 450.000 3 An der Quelle 99 München 80.000 Tabelle 1.7: Tabelle der zur Verfügung stehenden Objekte Wichtig in dieser Tabelle ist die (eindeutige) Objektnummer. Während des Geschäftsablaufes kommt es nun vor, dass einem Kunden mehrere Immobilien angeboten werden. Auf der anderen Seite wird eine Immobilie mehreren Interessenten, sprich Kunden, angeboten. Der Makler möchte für Statistikzwecke erfassen, wie viele Immobilien einem Kunden durchschnittlich angeboten werden, bis er sich zum Kauf entschließt bzw. wie vielen Kunden eine Immobilie gezeigt werden muss, bis sie veräußert wird. Bei der 1:n-Beziehung unserer Bibliothek wurde die Verknüpfung, d.h. die Relation zwischen beiden Tabellen, durch das gemeinsame Feld BUCHNUMMER erreicht. Das Maklerproblem lässt sich durch solch eine einfache Verknüpfung allerdings nicht realisieren, da beide Tabellen kein gemeinsames Feld haben. Abhilfe schafft hier erst eine dritte Tabelle, die die beiden ersten miteinander verbindet. Sie baut sich aus zwei Feldern auf: 쐽 Kundennr 쐽 Objektnr Kundennummer Objektnummer 1 1 1 2 1 3 2 1 2 3 3 3 4 1 4 2 4 3 Tabelle 1.8: Verknüpfung zwischen Kunden und Objekten Wird jetzt einem (potenziellen) Kunden ein Objekt angeboten, erfolgt ein Eintrag in dieser Verbindungstabelle. Mithilfe der obigen Tabelle kann man leicht © des Titels »Oracle Express Edition« (ISBN 978-3-8266-9219-2) 2012 by 26 Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9219 1.15 Benutzerverwaltung feststellen, wie vielen Kunden wie viele Objekte angeboten wurden. Abfragen wie beispielsweise »Wie oft wurde das Objekt in der Rosenstraße 1 angeboten?« sind nun leicht zu beantworten. Zunächst schlägt man in der Objekttabelle nach, welche Objektnummer diese Immobilie besitzt. Danach durchsucht man die Hilfstabelle, genauer gesagt die Spalte OBJEKTNR der Hilfstabelle, nach der zuvor gemerkten Nummer und zählt deren Vorkommen. Analog lassen sich Abfragen bezüglich der Kunden realisieren. Die n:m-Beziehung stellt zwei einzelne 1:n-Beziehungen dar. Zu einem Satz in der Kundentabelle findet man einen oder mehrere Sätze in der Hilfstabelle. Analog dazu findet man zu einem Satz der Objekttabelle auch einen oder mehrere Sätze in der Hilfstabelle. Eine n:m-Beziehung wird also durch Hinzufügen einer Zwischentabelle in zwei einzelne 1:n-Beziehungen transformiert. Ein Datenbankmanagementsystem zeichnet sich neben der zentralen Datenhaltung mit intelligenten Abfrageroutinen aber noch durch eine Reihe weiterer Mechanismen aus. Dazu gehören im Einzelnen: 쐽 Benutzerverwaltung 쐽 Datensicherheit 쐽 Transaktionskontrolle 1.15 Benutzerverwaltung Datenbankmanagementsysteme verwalten häufig sensible Daten (denken Sie beispielsweise an eine Bank mit den Guthaben ihrer Kunden). Diese Daten dürfen natürlich nicht jedem Beschäftigten in einer Bank zugänglich gemacht werden. Eine Änderung der Daten darf ebenfalls nur durch einen wohldefinierten Benutzerkreis erfolgen. Diese Einschränkungen verwaltet das DBMS in einer Benutzerverwaltung. In ihr kann dezidiert festgelegt werden, wer welche Daten (Tabellen) sehen bzw. wer in welchen Datenbeständen Änderungen (Ergänzen, Löschen, Zufügen etc.) vornehmen darf. Die Vergabe von bestimmten Rechten auf der Datenbank ist mit der Benutzerverwaltung eines Netzwerkbetriebssystems vergleichbar. Auch hier können verschiedene Rechte (Schreiben, Lesen, Inhaltsverzeichnis lesen etc.) auf Netzlaufwerksebene zur Verfügung gestellt werden. Eine korrekte Benutzerverwaltung funktioniert natürlich nur dann, wenn das DBMS »weiß«, wer gerade mit dem System arbeitet. Der Benutzer muss sich also vor Beginn der eigentlichen Arbeit am DBMS anmelden. © des Titels »Oracle Express Edition« (ISBN 978-3-8266-9219-2) 2012 by 27 Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9219 Kapitel 1 Datenbanken – Eine Einführung Diese Benutzerverwaltung mit Vergabe von verschiedenen Rechten ist auch ein ganz entscheidendes Kriterium für die Belange des Datenschutzes. Hinweis Auf die Benutzerverwaltung unter Oracle Express wird in Kapitel 3 ausführlicher eingegangen. 1.16 Datensicherheit Unter Datensicherheit versteht man all die Maßnahmen, die für Vollständigkeit, Korrektheit und Aktualität der Daten sorgen. Das Abspeichern auf einer Festplatte als Datenträger reicht dabei bei Weitem nicht aus. Schließlich ist nicht zu fragen, ob eine Festplatte ihre Funktion irgendwann einmal einstellt, sondern nur, wann sie es tut. Hier sind also intelligente Backup- und Recovery-Methoden gefordert. Sie können ein DBMS wie Oracle in verschiedenen Modi fahren, sodass das System sich selbst wiederherstellen kann, sollte es einmal zu einem Headcrash oder Ähnlichem kommen. In der Regel werden die Datenbestände eines Unternehmens einmal am Tag komplett gesichert, indem sie auf ein Magnetband gespeichert werden. Sollte es also einmal zu einem Zwischenfall kommen, ist maximal die Arbeit eines Tages verloren gegangen. 1.17 Transaktionskontrolle Der Sicherungszyklus von 24 Stunden ist aber oftmals nicht ausreichend. Stellen Sie sich vor, der zentrale Datenbankserver einer Bank stürzt ab. Hier wäre es sicherlich nicht akzeptabel, mit den Daten von vor 24 Stunden zu arbeiten. Solch sensibler Datenhaltung kommt das DBMS mit der Transaktionskontrolle entgegen. Sie möchten z.B. 5000 Euro von Ihrem Girokonto auf Ihr Sparbuch überweisen. Der Mitarbeiter der Bank gibt diesen Vorgang in den Computer ein und führt ihn aus. Für das DBMS setzt sich solch eine Überweisung aus zwei einzelnen Anweisungen zusammen: 1. In der Tabelle der Girokonten wird der Betrag des Kundenkontos um den Überweisungsbetrag vermindert. 2. In der Tabelle der Sparkonten wird der Betrag des Kundenkontos um den Überweisungsbetrag erhöht. Der zentrale Rechner führt also zwei Anweisungen (Statements) hintereinander durch. Was passiert jetzt, wenn dieser Rechner genau nach Abarbeitung der ersten © des Titels »Oracle Express Edition« (ISBN 978-3-8266-9219-2) 2012 by 28 Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9219 1.17 Transaktionskontrolle Anweisung abstürzt? Sie wären um 5000 Euro ärmer. Die Entschuldigung, dass der Computer abgestürzt ist, würde Ihnen (und mir) wohl kaum ausreichen. An dieser Stelle setzt die Transaktionskontrolle ein. Das DBMS erhält die Anweisung, 5000 Euro vom Girokonto auf das Sparkonto zu überweisen. Es zerlegt diese Anweisung daraufhin in zwei Teilschritte. Beide Teilschritte werden in einer Transaktion zusammengefasst, die in einer bestimmten Datei abgespeichert wird. 1. Transaktionsstart 2. In der Tabelle der Girokonten wird der Betrag des Kundenkontos um den Überweisungsbetrag vermindert. 3. In der Tabelle der Sparkonten wird der Betrag des Kundenkontos um den Überweisungsbetrag erhöht. 4. Transaktionsende Kommt es zu einem Zwischenfall während der Ausführung solch einer Transaktion, hat das System die Möglichkeit, die bisherigen Änderungen wieder rückgängig zu machen. Das DBMS erkennt einen Absturz daran, dass bei einem Neustart noch bestimmte Transaktionen zur Beendigung ausstehen. Bei einem ordnungsgemäßen Herunterfahren des Systems werden zunächst noch alle Transaktionen vollständig ausgeführt, sodass noch nicht beendete Transaktionen Indiz für einen nicht ordnungsgemäßen Abschluss der Arbeit sind. Die Transaktionskontrolle ist in gewissem Maß mit der Undo-Funktion eines Textverarbeitungsprogramms vergleichbar. Sie sorgt dafür, dass in der Datenbank ausschließlich logisch konsistente Daten vorliegen. Die Durchführung einer Transaktion überführt die Datenbank von einem logisch konsistenten Zustand in einen anderen. Über eine solche Transaktionskontrolle erfolgt auch die Steuerung des gemeinsamen Zugriffs auf gleiche Datenbestände. Nehmen wir als Beispiel wieder die Bank. Sie möchten immer noch 5000 Euro vom Girokonto auf das Sparkonto überweisen. Gleichzeitig empfängt die Bank über Datenfernübertragung die Abbuchungsaufforderung eines Versicherungsunternehmens, bei dem Sie eine fällige Rate der Versicherung zu bezahlen haben. Beide Abbuchungen zusammen hätten zur Folge, dass das Girokonto einen nicht gewünschten, negativen Betrag aufwiese. Jede Abbuchung für sich allein gesehen darf aber durchgeführt werden. Über die Transaktionskontrolle wird nun der quasi parallele Zugriff auf die Daten in einen sequenziellen umgewandelt. Während der einen Transaktion sind die entsprechenden Daten vor einer Änderung geschützt. Die Abbuchungsaufforderung der Versicherung würde folgende Transaktion auf dem DBMS erzeugen: © des Titels »Oracle Express Edition« (ISBN 978-3-8266-9219-2) 2012 by 29 Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9219 Kapitel 1 Datenbanken – Eine Einführung 1. Transaktionsstart 2. Sperre den Datensatz des Kunden in der Tabelle der Girokonten für Zugriff von Dritten. 3. In der Tabelle der Girokonten wird der Betrag des Kontos des Kunden um den Rechnungsbetrag vermindert. 4. Dieser Rechnungsbetrag wird auf dem Konto des Versicherers gutgeschrieben. 5. Hebe die Sperre auf. 6. Transaktionsende Die Überweisung des Kunden vom Girokonto auf das Sparkonto würde als nächste Transaktion durchgeführt. Diese Transaktion wird jetzt aber zurückgewiesen, da das entsprechende Konto nicht mehr den erforderlichen Betrag aufweist. Eine Transaktion ist also eine Einheit logisch zusammenhängender Arbeitsschritte bzw. Geschäftsvorfälle. Eine solche Transaktion wird nach ihrer Definition immer nach dem Alles-oder-Nichts-Prinzip durchgeführt, d.h. entweder werden alle Arbeitschritte durchlaufen oder keiner. An Punkt 2 dieser Transaktion erkennen Sie, dass das Datenbanksystem einen Datensatz sperrt, d.h. er wird für die Zeit der Transaktionsbearbeitung gegen Änderungen von außen geschützt. Zu diesem Zweck kennen die heutigen Datenbanken verschiedene Mechanismen: 쐽 die Sperrung auf Satzebene, 쐽 die Sperrung auf Seitenebene, d.h. es werden eine Reihe von Sätzen gesperrt, 쐽 die Sperrung auf Tabellenebene, d.h. es wird die gesamte Tabelle gesperrt. So sinnvoll eine solche transaktionsorientierte Arbeitsweise auch ist, birgt sie dennoch eine große Gefahr in sich. Bei der Bearbeitung mehrerer Transaktionen auf dem Server kann es unter ungünstigen Umständen passieren, dass zwei Transaktionen gegenseitig auf sich warten, d.h. Transaktion A wartet auf Transaktion B und umgekehrt. Dieser Fall setzt natürlich die Bearbeitung beider Transaktionen außer Kraft und verhindert deren ordnungsgemäßen Abschluss. In einem solchem Fall spricht man von einem Deadlock. In der Regel können Deadlocks nur durch Eingriffe des Administrators aufgehoben werden, indem er beide Transaktionen manuell stoppt. © des Titels »Oracle Express Edition« (ISBN 978-3-8266-9219-2) 2012 by 30 Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9219