Datenbankmodelle, Datenbanksprachen und DatenbankmanagementSysteme von Professor Dr. Gottfried Vossen Westfälische Wilhelms-Universität Münster 3., vollständig überarbeitete Auflage R.01denbourg Verlag München Wien 1999 Inhaltsverzeichnis Vorwort zur ersten Auflage xv Vorwort zur zweiten Auflage xvii Vorwort zur d r i t t e n Auflage xxi I Einführung 1 1 Motivation. Historisches 1.1 Datenintensive Anwendungen und deren Anforderungen 1.2 Einordung und historische Entwicklung des Gebiets „Datenbanken" . . 1.3 Generische Sicht eines Datenbanksystems 1.4 Netzwerk- und hierarchische Datenbanken 1.5 Relationale Datenbanken 1.6 Bibliographische Hinweise und Ergänzungen 1.7 Übungen 3 3 5 9 11 14 19 19 2 Aufbau und Organisation von Datenbanken und Datenbanksystemen 2.1 Datenunabhängigkeit 2.2 Die ANSI/SPARC-Schemaebenen 2.3 Sprachebenen und -klassen 2.4 Ein Systemschichtenmodell 2.5 Zentrale Systemkomponenten 2.6 Bibliographische Hinweise, Ergänzungen, Querbezüge 2.7 Übungen 21 21 22 25 28 30 36 37 3 Physische Architekturkonzepte 3.1 Zentralisierte Datenbanksysteme 3.2 Datenbank-Serverarchitekturen 3.2.1 Das Client/Server-Konzept 3.2.2 Anfrageserver 3.2.3 Objekt- und Seitenserver 3.3 Verteilte Datenbanksysteme 3.3.1 Vor- und Nachteile 39 40 41 41 43 44 47 48 vi Inhalt 3.3.2 Klassifikationen 3.3.3 Homogene Verteilung 3.3.4 Heterogene Verteilung Parallele Datenbanksysteme Bibliographische Hinweise und Ergänzungen Übungen 49 51 54 57 62 63 Datenmodelle und Datenbankentwurf 65 3.4 3.5 3.6 II 4 Statischer Datenbank-Entwurf mit d e m Entity-Relationship-Modell 4.1 Der Datenbank-Lebenszyklus 4.2 Aspekte der Qualitätssicherung 4.3 Phasen des Entwurfsprozesses 4.3.1 Anforderungsanalyse und -Spezifikation 4.3.2 Konzeptioneller Entwurf 4.3.3 Logischer Entwurf 4.3.4 Physischer Entwurf 4.3.5 Weitere Entwurfsschritte 4.4 Allgemeine Abstraktionskonzepte 4.5 Das Entity-Relationship-Modell 4.5.1 Entities und Attribute 4.5.2 Relationships 4.5.3 IS-A-Beziehungen 4.5.4 Zusammenfassung 4.6 Konzeptioneller Entwurf mit dem ER-Modell 4.7 Bibliographische Hinweise und Ergänzungen 4.8 Übungen 67 68 71 72 74 75 77 77 78 79 80 81 89 95 101 102 109 110 5 Das relationale Datenmodell 5.1 Relationen 5.2 Datenabhängigkeiten. Relationenschemata 5.2.1 Intrarelationale Abhängigkeiten 5.2.2 Relationale Datenbanken 5.2.3 Interrelationale Abhängigkeiten 5.3 Transformation eines ER-Diagramms in das Relationenmodell 5.3.1 Vorbereitende Schritte 5.3.2 Transformation 5.4 Datenbank-Definition mit SQL 5.4.1 Datenbankschema-Definition 5.4.2 Tabellen-Definition 5.4.3 Integritätsbedingungen 5.4.4 Weitere Definitionsaspekte 5.5 Fallstudie Buchverlag 5.6 Bemerkungen zum Reverse Engineering 5.7 Bibliographische Hinweise und Ergänzungen 5.8 Übungen 115 115 118 119 121 122 125 125 126 129 130 131 132 133 135 142 143 144 0 Inhalt vii 6 Integrität in relationalen Datenbanken 6.1 Arten von Integritätsbedingungen 6.2 Funktionale Abhängigkeiten 6.2.1 Definition. Implikation 6.2.2 Ableitung. Das Membership-Problem 6.2.3 Anwendungen des Membership-Algorithmus. Schlüssel 6.2.4 (Abhängigkeits-) Basen 6.3 Bemerkungen zur allgemeinen Implikation 6.4 Inklusionsabhängigkeiten 6.5 Assertions und Trigger 6.6 Aktive Datenbanken 6.7 Bibliographische Hinweise, Ergänzungen, Querbezüge 6.8 Übungen 147 147 152 152 155 161 164 167 169 171 177 180 184 7 Normalisierung und algorithmischer Schema-Entwurf 7.1 Selektion, Projektion und Verbundoperation 7.2 Universalrelationen und Update-Anomalien 7.3 Zweite, dritte und Boyce-Codd-Normalform 7.4 Dekomposition und Synthese 7.5 Mehrwertige und Verbund-Abhängigkeiten 7.6 Vierte und fünfte Normalform 7.7 Bibliographische Hinweise und Ergänzungen 7.8 Übungen 187 187 191 193 199 209 212 215 217 8 Semantische Datenmodellierung und Prozeßentwurf 8.1 Grenzen des ER-basierten Datenbank-Entwurfs. Semantische Datenmodellierung 8.2 Daten-, Funktions- und Prozeßentwurf 8.2.1 Revision des statischen Datenbankentwurfs 8.2.2 Geschäftsprozeßmodellierung und Workflow-Management . . . 8.3 Das Generische Semantische Modell (GSM) 8.3.1 Lokale GSM-Konstrukte 8.3.2 Globale GSM-Aspekte 8.3.3 Zusammenfassung 8.4 Ein Modellierungswerkzeug für dynamische Aspekte 8.4.1 Petri-Netze 8.4.2 Verwendung von Petri-Netzen in der Modellierung 8.5 Einführung in IDEA 8.5.1 Übersicht 8.5.2 Eine Fallstudie zur Analyse 8.6 Bibliographische Hinweise und Ergänzungen 8.7 Übungen 219 9 Objektbasierte Modelle 9.1 Grundlagen 9.1.1 Modellierung stark strukturierter Information 9.1.2 Objektorientierung in höheren Programmiersprachen 9.1.3 Das Paradigma der Objektorientierung 261 261 261 264 267 219 222 223 224 227 227 235 236 239 239 243 246 246 248 259 260 viii Inhalt 9.2 9.3 Kennzeichen objektorientierter Datenmodelle Einführung in den Object Database Standard 9.3.1 Grundzüge des ODMG-Modells 9.3.2 Die Objekt-Definitionssprache ODL Grundzüge objektrelationaler Datenmodelle Bibliographische Hinweise und Ergänzungen Übungen 9.4 9.5 9.6 III Datenbanksprachen 269 283 284 288 291 296 297 299 10 Codd-vollständige (relationale) Sprachen 10.1 Die Relationenalgebra 10.1.1 Relationale Operationen und ihre Rechenregeln 10.1.2 Ausdrücke der Relationenalgebra 10.1.3 Eigenschaften der Relationenalgebra 10.1.4 Algebraische Optimierung 10.2 Relationenkalküle 10.2.1 Der Relationen-Tupelkalkül 10.2.2 Der Relationen-Domainkalkül 10.3 Datenbank-Updates. IDM-Transaktionen 10.4 View-Updates 10.5 Bibliographische Hinweise und Ergänzungen 10.6 Übungen 301 301 302 305 310 312 315 316 321 322 328 333 334 11 Der 11.1 11.2 11.3 11.4 339 339 340 342 343 343 345 347 349 353 360 361 362 362 Sprachstandard SQL Zur Evolution von SQL Beispieldatenbank Datenbank-Updates Datenbank-Anfragen 11.4.1 Einführung 11.4.2 Zur Syntax von SELECT 11.4.3 Semantik von SELECT am Beispiel von RA-Ausdrücken 11.4.4 Verbund-Operatoren in SQL 11.4.5 Beispiele 11.4.6 Abschließende Bemerkungen 11.5 Rekursion in SQL3 11.6 Bibliographische Hinweise und Ergänzungen 11.7 Übungen 12 Einschränkungen und Verallgemeinerungen Codd-vollständiger Sprachen 365 12.1 Uni versalrelationen-Anfragen 365 12.2 Geschachtelte Relationen und ihre Operationen 373 12.2.1 Geschachtelte Strukturen 373 12.2.2 Operationen auf geschachtelten Relationen 376 12.3 Grundlagen von Datalog 385 12.3.1 Motivationen 385 Inhalt ix 12.4 12.5 12.6 12.7 12.3.2 Logik als Anfragesprache 12.3.3 Intensionale und extensionale Datenbanken 12.3.4 Rekursion 12.3.5 Integritätsbedingungen 12.3.6 Datalog-Programme und deren Interpretation 12.3.7 Ausdruckskraft von Datalog Weitere Vollständigkeitsbegriffe für Anfragesprachen Ausdruckskraft und Komplexität von Anfragesprachen Bibliographische Hinweise und Ergänzungen Übungen 13 Sprachen für Objektdatenbanken 13.1 Spezielle Eigenschaften von objektorientierten Datenbanksprachen 13.1.1 Objekterhalt vs. Objekterzeugung 13.1.2 Zugriff auf komplexe Objekte. Pfad-Ausdrücke 13.1.3 Zugriff auf Mengen von Objekten 13.1.4 Update-Operationen 13.2 Beispiele objektorientierter Sprachen 13.2.1 0 2 13.2.2 ObjectStore 13.3 Die ODMG-Sprache OQL 13.4 Beispiele objektrelationaler Sprachen 13.4.1 Postgres 13.4.2 UniSQL/X 13.5 Bibliographische Hinweise und Ergänzungen 13.6 Übungen IV Datenbanksystemtechnik 387 388 389 391 391 394 395 397 401 404 407 . . 407 408 410 413 414 415 415 420 422 424 424 429 431 432 433 14 Interne Datenbank- und Speicherorganisation 435 14.1 Plattenspeicher 435 14.1.1 Blöcke und Blockzugriffe 437 14.1.2 RAID-Architekturen 438 14.2 Pufferverwaltung 441 14.3 Files 442 14.3.1 Sequentielle Files 443 14.3.2 Effizienter Filezugriff durch Indexierung 445 14.4 Spezielle Indexstrukturen 446 14.4.1 ISAM .446 14.4.2 Baumstrukturen für eindimensionale Punktdaten 448 14.4.3 Baumstrukturen für mehrdimensionale Punktdaten 453 14.4.4 Hash-Organisationsformen 458 14.4.5 Index-Strukturen zur Auswertung von Pfad-Ausdrücken . . . . 462 14.5 Beispiel: Speicherorganisation bei DB2 464 14.6 Bibliographische Hinweise und Ergänzungen 467 14.7 Übungen 469 Inhalt 15 Verarbeitung und Optimierung von Anfragen 15.1 Anfrageverarbeitung im Überblick 15.2 Anfragen in homogen verteilten Datenbanksystemen 15.3 Anfrage-Optimierung 15.3.1 Ziele und Ansätze 15.3.2 High-Level-Optimierung 15.3.3 Low-Level-Optimierung 15.4 Implementierungstechniken für den Verbund 15.4.1 Nested-Loop-Join 15.4.2 Sort-Merge-Join 15.4.3 Hash-Join 15.5 Spezielle QEP-Parameter 15.6 Anfrage-Prozessoren 15.7 Der Systemkatalog am Beispiel DB2 15.8 Bibliographische Hinweise und Ergänzungen 15.9 Übungen 471 472 473 476 476 477 481 482 482 483 484 487 490 492 495 16 Physischer Datenbankentwurf und Tuning 16.1 Grundlagen des physischen Datenbankentwurfs 16.2 Fragmentierung in verteilten Datenbanken 16.3 Datenbank-Tuning 16.3.1 Grundlegende Prinzipien 16.3.2 Tuning von Indexen 16.3.3 Tuning in relationalen Systemen 16.4 Datenbank-Benchmarks 16.4.1 Der Wisconsin-Benchmark 16.4.2 Die TPC-Benchmarks 16.4.3 Der 007-Benchmark 16.5 Bibliographische Hinweise und Ergänzungen 16.6 Übungen 497 497 501 V 517 Transaktionsverarbeitung 17 Transaktionen und deren korrekte Verarbeitung 17.1 Das Transaktionskonzept 17.2 Beispiele für Synchronisationsprobleme 17.3 Das ACID-Prinzip 17.4 Das Read-Write-Modell für Transaktionen 17.5 Serialisierbarkeit von Schedules 17.5.1 Schedules 17.5.2 View-Serialisierbarkeit 17.5.3 Konflikt-Serialisierbarkeit 17.5.4 Commit-Serialisierbarkeit 17.6 Fehlersicherheit von Schedules 17.6.1 Motivation 17.6.2 Rücksetzbarkeit 17.6.3 Vermeidung kaskadierender Aborts 495 502 503 505 505 506 507 508 511 514 514 519 520 523 525 527 529 530 533 535 539 541 542 543 543 Inhalt . 17.6.4 Striktheit 17.7 Korrektheit von Schedules 17.8 Bibliographische Hinweise und Ergänzungen 17.9 Übungen xi 544 545 546 546 18 Concurrency Control 18.1 Überlegungen zum Scheduler-Entwurf 18.2 Sperrende Scheduler 18.2.1 Einführung 18.2.2 Das 2-Phasen-Sperrprotokoll 18.2.3 Varianten des 2-Phasen-Sperrprotokolls 18.2.4 Das MGL-Protokoll 18.2.5 Das TL-Protokoll 18.2.6 Tuning in Gegenwart sperrender Scheduler 18.3 Nicht-sperrende Scheduler 18.3.1 Zeitmarken-Verfahren 18.3.2 Serialisationsgraphen-Tester 18.4 Zur Ausnutzung semantischer Information 18.5 Bibliographische Hinweise und Ergänzungen 18.6 Übungen 549 549 553 553 555 559 561 565 567 570 571 572 574 578 579 19 Grundlagen des Recovery 19.1 Einführung 19.2 Organisation eines Data-Managers 19.3 Der Recovery-Manager 19.4 Ein Undo/Redo-Protokoll 19.5 Alternativen zum Undo/Redo-Protokoll 19.6 Recovery-Tuning 19.7 Bibliographische Hinweise und Ergänzungen 19.8 Übungen 581 581 583 585 589 591 592 593 593 20 Transaktionsverarbeitung bei homogener Verteilung 20.1 Verteilte Transaktionen und Schedules 20.2 Verteiltes Concurrency Control 20.2.1 Verteiltes TO 20.2.2 Verteiltes 2PL 20.2.3 Verteiltes SGT 20.2.4 Deadlock-Erkennung und -Auflösung 20.3 Verteilte Recovery-Protokolle 20.3.1 Atomare Freigaben 20.3.2 Das Zwei-Phasen-Commitprotokoll 20.3.3 Das Drei-Phasen-Commitprotokoll 20.4 Transaktionen auf replikativen Datenbanken 20.4.1 Ein-Kopien-Serialisierbarkeit 20.4.2 Concurrency Control 20.5 Bibliographische Hinweise 20.6 Übungen 595 595 599 599 600 601 605 607 607 609 613 615 615 619 620 621 Inhalt Xll 21 Transaktionsverarbeitung bei heterogener Verteilung 21.1 Einführung 21.2 Ein MDBS-Modell 21.3 Transaktionen und Schedules in einem MDBS 21.4 Globale Serialisierbarkeit 21.5 Gewährleistung globaler Serialisierbarkeit 21.5.1 Forcierte Konflikte 21.5.2 Rigorosität 21.5.3 Freigabe-Ordnung 21.6 Alternative Korrektheits-Begriffe 21.6.1 Quasi-Serialisierbarkeit 21.6.2 Zweistufige Serialisierbarkeit 21.7 Bibliographische Hinweise 21.8 Übungen 625 625 626 628 631 633 634 635 636 637 637 639 640 640 VI 643 Neuere Entwicklungen 22 Daten-Integration 22.1 Integrierter Datenzugriff 22.2 Integration von Datenbank- und anderen Systemen 22.2.1 Verteilte Objektverwaltung 22.2.2 Die Object Management Architecture 22.2.3 CORBA 22.3 Integration von Daten aus heterogenen Quellen (im Internet) 22.3.1 Datenbanken und Internet'. 22.3.2 Datenbank-Web-Anbindungen 22.3.3 Das Web als Datenbanksystem 22.3.4 Semistrukturierte Daten 22.4 Bibliographische Hinweise und Ergänzungen 22.5 Übungen 645 23 Daten-Analyse 23.1 Data Warehouses 23.1.1 Warehouse-Anwendungen und -Architektur 23.1.2 Warehouse-Wartung 23.2 Grundlagen des OLAP 23.2.1 Mehrdimensionale Daten und Data Cubes 23.2.2 Relationales OLAP 23.2.3 Der relationale Cube-Operator 23.3 Data Mining 23.3.1 Klassifikation 23.3.2 Assoziationsregeln 23.3.3 Analyse von Sequenzen 23.4 Bibliographische Hinweise und Ergänzungen 23.5 Übungen 669 645 649 650 652 654 657 658 660 663 665 666 667 669 671 674 679 679 683 687 693 694 695 699 702 703 Inhalt 24 Ausblicke 24.1 Temporale Datenbanken 24.2 Räumliche Daten und GIS 24.3 Multimedia-Datenbanksysteme 24.4 Stationäre Server mit mobilen Clients 24.5 Bibliographische Hinweise und Ergänzungen xiii 705 705 709 712 713 715 Literaturverzeichnis 717 Sachindex 757