Datenbanksysteme Vorlesung im SS '99 [Version vom 22. Juli 1999] Oliver Vornberger Praktische Informatik Fachbereich Mathematik/Informatik Universitat Osnabruck 2 Literatur Date, C.J: An Introduction to Database Systems, Addison-Wesley, 6. Auage 1995. Elmasri R. & S. Navathe: Fundamentals of Database Systems , Benjamin/Cummings Publishing Company, 2. Auage 1994 (3. Auage erscheint Herbst 99). Hamilton G., R. Cattell, M. Fisher: JDBC. Datenbankzugri mit Java , Addison-Wesley, Bonn, 1998 Heuer, A. & G. Saake: Datenbanken - Konzepte und Sprachen , International Thompson Publishing, 1. korrigierter Nachdruck 1997. Kemper, A. & A. Eickler: Datenbanksysteme - Eine Einfuhrung Oldenbourg, 2. aktualisierte Auage 1997. Schlager, G. & W. Stucky: Datenbanksysteme: Konzepte und Modelle Teubner Studienbuch Informatik, 2. Auage 1983 Silberschatz, A. & H.F. Korth & S. Sudarshan: Database System Concepts, Mc Graw-Hill, 1991. Ullman, J. D.: Principles of Data and Knowledge-Base Systems, Computer Science Press, 1988. Vossen, G.: Datenmodelle, Datenbanksprachen und Datenbank-Management-Systeme, Addison-Wesley, 2.aktualisierte Ausgabe 1994. Die Vorlesung orientiert sich uberwiegend an dem Buch von Kemper/Eickler. Zahlreiche Beispiele und Graken wurden von dort u bernommen. 10 Exemplare sind in der Lehrbuchsammlung vorhanden (Standort: N-LB, Signatur: TWY/Kem). HTML-Version Der Inhalt dieser Vorlesung und die dazu gehorenden U bungsaufgaben konnen online abgerufen werden unter http://www-lehre.informatik.uni-osnabrueck.de/~dbs 3 Danksagung Ich danke ... ::: ::: ::: Frau Astrid Heinze fur sorgfaltiges Erfassen zahlreicher Texte, Graken und Tabellen. den Studenten Ralf Kunze, Stefan Rauch und Benjamin Stark fur Installation und Erprobung diverser Software-Beispiele. Herrn Viktor Herzog fur die Konvertierung des Skripts nach HTML. Osnabruck, im Juli 1999 (Oliver Vornberger) 4 Inhaltsverzeichnis 1 Einfuhrung 1.1 1.2 1.3 1.4 1.5 1.6 1.7 Denition . . . . . . . Motivation . . . . . . Datenabstraktion . . . Transformationsregeln Datenunabhangigkeit . Modellierungskonzepte Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Konzeptuelle Modellierung 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 Das Entity-Relationship-Modell . . . . . Schlussel . . . . . . . . . . . . . . . . . . Charakterisierung von Beziehungstypen Die (min, max)-Notation . . . . . . . . . Existenzabhangige Entity-Typen . . . . Generalisierung . . . . . . . . . . . . . . Aggregation . . . . . . . . . . . . . . . . Konsolidierung . . . . . . . . . . . . . . 3 Logische Datenmodelle 3.1 3.2 3.3 3.4 Das Hierarchische Datenmodell . . Das Netzwerk-Datenmodell . . . . Das Relationale Datenmodell . . . Das Objektorientierte Datenmodell . . . . . . . . 4 Physikalische Datenorganisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1 Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 11 11 11 12 13 14 14 16 19 19 20 20 21 22 23 24 25 29 29 31 32 33 35 35 INHALTSVERZEICHNIS 6 4.2 4.3 4.4 4.5 4.6 4.7 Heap-File . . . . . . . Hashing . . . . . . . . Erweiterbares Hashing ISAM . . . . . . . . . B*-Baum . . . . . . . Sekundar-Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Mehrdimensionale Suchstrukturen 5.1 5.2 5.3 5.4 5.5 5.6 Problemstellung . . . . . . . . . . . . . . . . k-d-Baum . . . . . . . . . . . . . . . . . . . Gitterverfahren mit konstanter Gittergroe Grid File . . . . . . . . . . . . . . . . . . . Aufspalten und Mischen beim Grid File . . Verwaltung geometrischer Objekte . . . . . 6 Das Relationale Modell 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 Denition . . . . . . . . . . . . . . . . Umsetzung in ein relationales Schema Verfeinerung des relationalen Schemas Abfragesprachen . . . . . . . . . . . . Relationenalgebra . . . . . . . . . . . . Relationenkalkul . . . . . . . . . . . . Der relationale Tupelkalkul . . . . . . Der relationale Domanenkalkul . . . . 7 Relationale Anfragesprachen 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Oracle Datenbank . . . . . . . . . . . . . . . . . . . . SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . Datentypen in Oracle . . . . . . . . . . . . . . . . . . Schemadenition . . . . . . . . . . . . . . . . . . . . . Aufbau einer SQL-Query zum Anfragen . . . . . . . . SQL-Queries zum Anfragen . . . . . . . . . . . . . . . SQL-Queries zum Einfugen, Modizieren und Loschen SQL-Queries zum Anlegen von Sichten . . . . . . . . . Query by Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 37 40 41 44 48 49 49 50 53 53 54 58 61 61 62 63 67 67 72 73 73 75 75 76 77 77 78 79 85 85 87 INHALTSVERZEICHNIS 7 8 Datenintegritat 8.1 8.2 8.3 8.4 8.5 Grundlagen . . . . . . . . . . . Referentielle Integritat . . . . . Referentielle Integritat in SQL Statische Integritat in SQL . . Trigger . . . . . . . . . . . . . . 9 Datenbankapplikationen 9.1 9.2 9.3 9.4 9.5 MS-Access . . . . PL/SQL . . . . . Embedded SQL . JDBC . . . . . . Cold Fusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Relationale Entwurfstheorie 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 Funktionale Abhangigkeiten . . . . . . . . Schlussel . . . . . . . . . . . . . . . . . . . Bestimmung funktionaler Abhangigkeiten Schlechte Relationenschemata . . . . . . . Zerlegung von Relationen . . . . . . . . . Erste Normalform . . . . . . . . . . . . . Zweite Normalform . . . . . . . . . . . . . Dritte Normalform . . . . . . . . . . . . . 11 Transaktionsverwaltung 11.1 11.2 11.3 11.4 11.5 11.6 Begrie . . . . . . . . . . . . . . . . . Operationen auf Transaktionsebene . . Abschlu einer Transaktion . . . . . . Eigenschaften von Transaktionen . . . Transaktionsverwaltung in SQL . . . . Zustandsubergange einer Transaktion 12 Mehrbenutzersynchronisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 89 89 90 92 94 95 . 95 . 97 . 99 . 104 . 111 . . . . . . . . . . . . . . 127 127 128 129 132 132 134 135 136 139 139 139 140 140 140 141 143 12.1 Multiprogramming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 12.2 Fehler bei unkontrolliertem Mehrbenutzerbetrieb . . . . . . . . . . . . . . . . 143 12.2.1 Lost Update . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 INHALTSVERZEICHNIS 8 12.3 12.4 12.5 12.6 12.7 12.8 12.9 12.2.2 Dirty Read . . . . . . . . . . . . . . . . 12.2.3 Phantomproblem . . . . . . . . . . . . . Serialisierbarkeit . . . . . . . . . . . . . . . . . Theorie der Serialisierbarkeit . . . . . . . . . . Algorithmus zum Testen auf Serialisierbarkeit: Sperrbasierte Synchronisation . . . . . . . . . . Verklemmungen (Deadlocks) . . . . . . . . . . . Hierarchische Sperrgranulate . . . . . . . . . . Zeitstempelverfahren . . . . . . . . . . . . . . . . . . . . . . . . 13 Recovery 13.1 Fehlerklassen . . . . . . . . . . . . . . . . . . . . 13.1.1 Lokaler Fehler einer Transaktion . . . . . 13.1.2 Fehler mit Hauptspeicherverlust . . . . . 13.1.3 Fehler mit Hintergrundspeicherverlust . . 13.2 Die Speicherhierarchie . . . . . . . . . . . . . . . 13.2.1 Ersetzen von Puerseiten . . . . . . . . . 13.2.2 Zuruckschreiben von Puerseiten . . . . . 13.2.3 Einbringstrategie . . . . . . . . . . . . . . 13.3 Protokollierung der A nderungsoperationen . . . . 13.3.1 Struktur der Log-Eintrage . . . . . . . . . 13.3.2 Beispiel einer Log-Datei . . . . . . . . . . 13.3.3 Logische versus physische Protokollierung 13.3.4 Schreiben der Log-Information . . . . . . 13.3.5 WAL-Prinzip . . . . . . . . . . . . . . . . 13.4 Wiederanlauf nach einem Fehler . . . . . . . . . 13.5 Lokales Zurucksetzen einer Transaktion . . . . . 13.6 Sicherungspunkte . . . . . . . . . . . . . . . . . . 13.7 Verlust der materialisierten Datenbasis . . . . . . 14 Sicherheit 14.1 14.2 14.3 14.4 Legislative Manahmen . . . Organisatorische Manahmen Authentisierung . . . . . . . . Zugriskontrolle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 144 145 147 148 150 152 153 156 159 159 159 159 160 161 161 161 162 162 162 163 163 164 164 165 166 167 167 169 169 169 170 170 INHALTSVERZEICHNIS 9 14.5 Auditing . . . . . . . . . . . . . . . . . . . . 14.6 Kryptographie . . . . . . . . . . . . . . . . 14.6.1 Public Key Systems . . . . . . . . . 14.6.2 Das RSA-Verfahren . . . . . . . . . 14.6.3 Korrektheit des RSA-Verfahrens . . 14.6.4 Ezienz des RSA-Verfahrens . . . . 14.6.5 Sicherheit des RSA-Verfahrens . . . 14.6.6 Implementation des RSA-Verfahrens 14.6.7 Anwendungen des RSA-Verfahrens . 15 Objektorientierte Datenbanken 15.1 Schwachen relationaler Systeme . . . . . . . 15.2 Vorteile der objektorientierten Modellierung 15.3 Der ODMG-Standard . . . . . . . . . . . . 15.4 Eigenschaften von Objekten . . . . . . . . . 15.5 Denition von Attributen . . . . . . . . . . 15.6 Denition von Beziehungen . . . . . . . . . 15.7 Extensionen und Schlussel . . . . . . . . . . 15.8 Modellierung des Verhaltens . . . . . . . . . 15.9 Vererbung . . . . . . . . . . . . . . . . . . . 15.10Beispiel einer Typhierarchie . . . . . . . . . 15.11Verfeinerung und spates Binden . . . . . . . 15.12Mehrfachvererbung . . . . . . . . . . . . . . 15.13Die Anfragesprache OQL . . . . . . . . . . 15.14C++-Einbettung . . . . . . . . . . . . . . . 16 Data Warehouse 16.1 16.2 16.3 16.4 16.5 16.6 16.7 Datenbankentwurf fur Data Warehouse . Star Join . . . . . . . . . . . . . . . . . Roll-Up/Drill-Down-Anfragen . . . . . . Materialisierung von Aggregaten . . . . Der Cube-Operator . . . . . . . . . . . . Data Warehouse-Architekturen . . . . . Data Mining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 173 174 174 174 175 177 177 178 179 179 181 182 182 183 184 188 188 189 191 193 194 195 197 201 202 204 204 206 207 208 208 10 INHALTSVERZEICHNIS