Datenmodelle, Datenbanksprachen undDatenbankmanagementsysteme
Bearbeitet vonGottfried Vossen
erweitert, überarbeitet 2000. Taschenbuch. XXI, 842 S. PaperbackISBN 978 3 486 27574 2
Format (B x L): 17 x 24 cmGewicht: 1649 g
Weitere Fachgebiete > EDV, Informatik > Datenbanken, Informationssicherheit,Geschäftssoftware
schnell und portofrei erhältlich bei
Die Online-Fachbuchhandlung beck-shop.de ist spezialisiert auf Fachbücher, insbesondere Recht, Steuern und Wirtschaft.Im Sortiment finden Sie alle Medien (Bücher, Zeitschriften, CDs, eBooks, etc.) aller Verlage. Ergänzt wird das Programmdurch Services wie Neuerscheinungsdienst oder Zusammenstellungen von Büchern zu Sonderpreisen. Der Shop führt mehr
als 8 Millionen Produkte.
Prof. Dr. Gottfried Vossen lehrt seit 1993 Informatik am Institut für Wirtschaftsinformatik derUniversität Münster. Er studierte, promovierte und habilitierte sich an der RWTH Aachen undwar von 1991 bis 1993 Professor für Informatik an der Universität Gießen. Seit 1986 war er wieder-holt als Gastprofessor im In- und Ausland tätig, u.a. an der University of California in San Diego,USA, an der Karlstad Universitet in Schweden, am Hasso-Plattner-Institut für Software-systemtechnik in Potsdam sowie an der University of Waikato in Hamilton, Neuseeland. Er isteuropäischer Herausgeber der bei Elsevier erscheinenden Fachzeitschrift Information Systems,Associate Editor des International Journal on Semantic Web and Information Systems, Editor-in-Chief der Dissertationenreihe „Databases and Information Systems“ (DISDBIS) des Berlineraka-Verlags sowie Mitglied des Herausgebergremiums der Zeitschriften International Journal ofKnowledge and Learning, Datenbank-Spektrum, Enterprise Information Systems und Interna-tional Journal of Technology Enhanced Learning. Seine aktuellen Forschungsinteressen sindkonzeptionelle sowie anwendungsnahe Fragestellungen im Umfeld von Datenbanken, Informa-tionssystemen, Prozess-Modellierung, Web 2.0 und E-Learning.
Bibliografische Information der Deutschen Nationalbibliothek
Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über<http://dnb.d-nb.de> abrufbar.
© 2008 Oldenbourg Wissenschaftsverlag GmbHRosenheimer Straße 145, D-81671 MünchenTelefon: (089) 4 50 51- 0oldenbourg.deDas Werk einschließlich aller Abbildungen ist urheberrechtlich geschützt. Jede Verwertung außer-halb der Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Verlages unzulässig undstrafbar. Das gilt insbesondere für Vervielfältigungen, Übersetzungen, Mikroverfilmungen und die Einspeicherung und Bearbeitung in elektronischen Systemen.
Lektorat: Dr. Margit RothHerstellung: Anna GrosserCoverentwurf: Kochan & Partner, MünchenFoto: Gabriele Peters, Bochum www.eyeszeit.net
Gedruckt auf säure- und chlorfreiem Papier
ISBN 978-3-486-27574-2
Covergrafik: Laura Vossen
Gesamtherstellung: Kösel, Krugzell
Inhaltsverzeichnis
Auszug ... xiv
... aus dem Vorwort zur ersten Auflage xiv
... aus dem Vorwort zur zweiten Auflage xv
... aus dem Vorwort zur dritten Auflage xvi
Vorwort zur funften Auflage xix
I Einfuhrung 1
1 Motivationen, Historisches, Abgrenzungen 31.1 Daten-intensive Anwendungen und deren Anforderungen . . . . . . . . 31.2 Datenbanken und Informationssysteme . . . . . . . . . . . . . . . . . . 61.3 Entwicklung von Datenbanksystemen und Datenmodellen . . . . . . . 7
1.3.1 Filesysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.3.2 Generische Sicht eines Datenbanksystems . . . . . . . . . . . . 101.3.3 Netzwerk- und hierarchische Datenbanken . . . . . . . . . . . . 121.3.4 Relationale Datenbanken . . . . . . . . . . . . . . . . . . . . . 151.3.5 Objektrelationale Datenbanken . . . . . . . . . . . . . . . . . . 181.3.6 XML-Datenbanken . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.4 Bibliographische Hinweise und Erganzungen . . . . . . . . . . . . . . . 221.5 Ubungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2 Aufbau von Datenbanken und Datenbanksystemen 252.1 Datenunabhangigkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.2 Die ANSI/SPARC-Schemaebenen . . . . . . . . . . . . . . . . . . . . . 262.3 Sprachebenen und -klassen . . . . . . . . . . . . . . . . . . . . . . . . 292.4 Ein Schichtenmodell fur Datenbanksysteme . . . . . . . . . . . . . . . 322.5 Bibliographische Hinweise, Erganzungen, Querbezuge . . . . . . . . . . 392.6 Ubungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
vi Inhalt
II Klassische Konzepte:ER- und relationales Datenmodell. SQL 43
3 Datenbank-Entwurf mit dem Entity-Relationship-Modell 453.1 Der Datenbank-Lebenszyklus . . . . . . . . . . . . . . . . . . . . . . . 463.2 Aspekte der Qualitatssicherung . . . . . . . . . . . . . . . . . . . . . . 49
3.2.1 Qualitatskriterien fur den Datenbankentwurf . . . . . . . . . . 493.2.2 Die Grundzuge ordnungsmaßiger Modellierung . . . . . . . . . 51
3.3 Phasen des Entwurfsprozesses . . . . . . . . . . . . . . . . . . . . . . . 523.3.1 Anforderungsanalyse und -spezifikation . . . . . . . . . . . . . 543.3.2 Konzeptioneller Entwurf . . . . . . . . . . . . . . . . . . . . . . 553.3.3 Logischer Entwurf . . . . . . . . . . . . . . . . . . . . . . . . . 573.3.4 Physischer Entwurf . . . . . . . . . . . . . . . . . . . . . . . . . 573.3.5 Weitere Entwurfsschritte . . . . . . . . . . . . . . . . . . . . . . 58
3.4 Allgemeine Abstraktionskonzepte . . . . . . . . . . . . . . . . . . . . . 593.5 Das Entity-Relationship-Modell . . . . . . . . . . . . . . . . . . . . . . 60
3.5.1 Entities und Attribute . . . . . . . . . . . . . . . . . . . . . . . 613.5.2 Relationships . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693.5.3 IS-A-Beziehungen . . . . . . . . . . . . . . . . . . . . . . . . . 753.5.4 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . 80
3.6 Konzeptioneller Entwurf mit dem ER-Modell . . . . . . . . . . . . . . 813.7 Bibliographische Hinweise und Erganzungen . . . . . . . . . . . . . . . 883.8 Ubungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
4 Das relationale Datenmodell 954.1 Relationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 954.2 Datenabhangigkeiten. Relationenschemata . . . . . . . . . . . . . . . . 984.3 Transformation eines ER-Diagramms in das Relationenmodell . . . . . 1044.4 Datenbank-Definition mit SQL . . . . . . . . . . . . . . . . . . . . . . 109
4.4.1 Datenbankschema-Definition . . . . . . . . . . . . . . . . . . . 1104.4.2 Tabellen-Definition . . . . . . . . . . . . . . . . . . . . . . . . . 1114.4.3 Integritatsbedingungen . . . . . . . . . . . . . . . . . . . . . . . 1124.4.4 Weitere Definitionsaspekte . . . . . . . . . . . . . . . . . . . . 114
4.5 Fallstudie Medienhandel . . . . . . . . . . . . . . . . . . . . . . . . . . 1164.6 Bibliographische Hinweise und Erganzungen . . . . . . . . . . . . . . . 1244.7 Ubungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
5 Grundlagen von SQL 1275.1 SQL von 1980 bis 2003 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1275.2 Datenbank-Updates . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1285.3 Datenbank-Anfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
5.3.1 Einfuhrung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1305.3.2 Zur Syntax von SELECT . . . . . . . . . . . . . . . . . . . . . . 1315.3.3 Exkurs in die Relationenalgebra . . . . . . . . . . . . . . . . . 1345.3.4 Semantik von SELECT am Beispiel von RA-Ausdrucken . . . . . 1355.3.5 Verbund-Operatoren in SQL . . . . . . . . . . . . . . . . . . . 137
5.4 Beispiele fur SQL-Anfragen . . . . . . . . . . . . . . . . . . . . . . . . 1405.4.1 Selektionen und Projektionen . . . . . . . . . . . . . . . . . . . 141
Inhalt vii
5.4.2 Verbundanfragen . . . . . . . . . . . . . . . . . . . . . . . . . . 1425.4.3 Aggregatfunktionen und Unteranfragen . . . . . . . . . . . . . 1445.4.4 Abschließende Bemerkungen . . . . . . . . . . . . . . . . . . . 146
5.5 Rekursive Anfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1485.6 Bibliographische Hinweise und Erganzungen . . . . . . . . . . . . . . . 1495.7 Ubungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1495.8 Anhang: Beispieltabellen der Fallstudie Medienhandel . . . . . . . . . 153
6 Integritat in relationalen Datenbanken 1616.1 Arten von Integritatsbedingungen . . . . . . . . . . . . . . . . . . . . . 1616.2 Funktionale Abhangigkeiten . . . . . . . . . . . . . . . . . . . . . . . . 165
6.2.1 Definition. Implikation . . . . . . . . . . . . . . . . . . . . . . . 1666.2.2 Ableitung. Das Membership-Problem . . . . . . . . . . . . . . . 1696.2.3 Anwendungen des Membership-Algorithmus. Schlussel . . . . . 1756.2.4 (Abhangigkeits-) Basen . . . . . . . . . . . . . . . . . . . . . . 1786.2.5 Allgemeine Implikation . . . . . . . . . . . . . . . . . . . . . . 181
6.3 Inklusionsabhangigkeiten . . . . . . . . . . . . . . . . . . . . . . . . . . 1836.4 Allgemeine Assertions . . . . . . . . . . . . . . . . . . . . . . . . . . . 1856.5 Aktive Integritatskontrolle uber Trigger . . . . . . . . . . . . . . . . . 1886.6 Bibliographische Hinweise, Erganzungen, Querbezuge . . . . . . . . . . 1936.7 Ubungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
7 Relationale Sprachen: Relationenalgebra, Kalkule, Datalog 2017.1 Die Relationenalgebra . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
7.1.1 Relationale Operationen und ihre Rechenregeln . . . . . . . . . 2027.1.2 Ausdrucke der Relationenalgebra . . . . . . . . . . . . . . . . . 2087.1.3 Eigenschaften der Relationenalgebra . . . . . . . . . . . . . . . 2107.1.4 Algebraische Optimierung . . . . . . . . . . . . . . . . . . . . . 212
7.2 Relationenkalkule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2147.2.1 Der Relationen-Tupelkalkul . . . . . . . . . . . . . . . . . . . . 2157.2.2 Der Relationen-Domainkalkul . . . . . . . . . . . . . . . . . . . 220
7.3 View-Updates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2217.4 Grundlagen von Datalog . . . . . . . . . . . . . . . . . . . . . . . . . . 226
7.4.1 Motivationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2267.4.2 Logik als Anfragesprache . . . . . . . . . . . . . . . . . . . . . 2287.4.3 Intensionale und extensionale Datenbanken . . . . . . . . . . . 2297.4.4 Rekursion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2307.4.5 Integritatsbedingungen . . . . . . . . . . . . . . . . . . . . . . . 2327.4.6 Datalog-Programme und deren Interpretation . . . . . . . . . . 2327.4.7 Ausdruckskraft von Datalog . . . . . . . . . . . . . . . . . . . . 235
7.5 Konzepte der Theorie von Anfragesprachen . . . . . . . . . . . . . . . 2367.5.1 Konjunktive Anfragen . . . . . . . . . . . . . . . . . . . . . . . 2367.5.2 Vollstandigkeit von Anfragesprachen . . . . . . . . . . . . . . . 2377.5.3 Ausdruckskraft und Komplexitat von Anfragesprachen . . . . . 239
7.6 Bibliographische Hinweise und Erganzungen . . . . . . . . . . . . . . . 2437.7 Ubungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
viii Inhalt
8 Qualitatsorientierter Datenbankentwurf 2518.1 Universalrelationen und Update-Anomalien . . . . . . . . . . . . . . . 2518.2 Zweite, dritte und Boyce-Codd-Normalform . . . . . . . . . . . . . . . 2538.3 Dekomposition und Synthese . . . . . . . . . . . . . . . . . . . . . . . 2598.4 Mehrwertige und Verbund-Abhangigkeiten . . . . . . . . . . . . . . . . 2698.5 Vierte und funfte Normalform . . . . . . . . . . . . . . . . . . . . . . . 2738.6 Bibliographische Hinweise und Erganzungen . . . . . . . . . . . . . . . 2758.7 Ubungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
III Moderne Konzepte:Objekt-Basierung und XML-Dokumente 279
9 Objekt-relationale Datenbanken 2819.1 Evolution von Datenmodellen . . . . . . . . . . . . . . . . . . . . . . . 282
9.1.1 Grenzen relationaler Datenmodelle . . . . . . . . . . . . . . . . 2829.1.2 Hohere Datenmodelle . . . . . . . . . . . . . . . . . . . . . . . 2839.1.3 Daten-, Funktions- und Prozessentwurf . . . . . . . . . . . . . 285
9.2 Objekt-Orientierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2889.2.1 Das Paradigma . . . . . . . . . . . . . . . . . . . . . . . . . . . 2889.2.2 Objekt-Orientierung und Datenbanken . . . . . . . . . . . . . . 2929.2.3 Unterscheidung von Typen und Klassen . . . . . . . . . . . . . 2959.2.4 Objekt-Orientierung im relationalen Datenmodell . . . . . . . . 299
9.3 Datenbankmodellierung mit der UML . . . . . . . . . . . . . . . . . . 3019.3.1 Klassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3039.3.2 Assoziationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3039.3.3 Aggregationen und Kompositionen . . . . . . . . . . . . . . . . 3059.3.4 Generalisierung und Spezialisierung . . . . . . . . . . . . . . . 3059.3.5 Weitere Modellierungsmoglichkeiten . . . . . . . . . . . . . . . 3069.3.6 Fallstudie Medienhandel . . . . . . . . . . . . . . . . . . . . . . 307
9.4 Objekt-relationale Definitionskonzepte in SQL . . . . . . . . . . . . . . 3109.4.1 Basisdatentypen und Typkonstruktoren . . . . . . . . . . . . . 3109.4.2 Benutzerdefinierte Typen und Typhierarchien . . . . . . . . . . 3129.4.3 Tabellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
9.5 Fallstudie Medienhandel . . . . . . . . . . . . . . . . . . . . . . . . . . 3179.6 SQL-Anfragen an objekt-relationale Datenbanken . . . . . . . . . . . . 3219.7 Bibliographische Hinweise und Erganzungen . . . . . . . . . . . . . . . 3269.8 Ubungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3279.9 Anhang: Beispieltabellen der Fallstudie Medienhandel . . . . . . . . . 330
10 Einfuhrung in XML 33710.1 Elemente, Tags und Attribute . . . . . . . . . . . . . . . . . . . . . . . 33810.2 Validierung von XML-Dokumenten: DTDs und XML Schema . . . . . 34510.3 Normalisierungsaspekte . . . . . . . . . . . . . . . . . . . . . . . . . . 34910.4 Verarbeitung von XML-Dokumenten . . . . . . . . . . . . . . . . . . . 351
10.4.1 XPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35210.4.2 XSLT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
10.5 Bibliographische Hinweise und Erganzungen . . . . . . . . . . . . . . . 363
Inhalt ix
10.6 Ubungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36410.7 Anhang: XML-Spezifikationen fur die Fallstudie Medienhandel . . . . 365
10.7.1 Document Type Definition . . . . . . . . . . . . . . . . . . . . 36510.7.2 XML Schema Definition . . . . . . . . . . . . . . . . . . . . . . 367
11 SQL und Programmiersprachen 37511.1 Web-Anbindung von Datenbanken . . . . . . . . . . . . . . . . . . . . 376
11.1.1 Grundlegendes . . . . . . . . . . . . . . . . . . . . . . . . . . . 37611.1.2 Scripting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37811.1.3 MySQL-Anbindung per PHP . . . . . . . . . . . . . . . . . . . 380
11.2 Eingebettetes SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38611.2.1 Arten der Einbettung . . . . . . . . . . . . . . . . . . . . . . . 38611.2.2 JDBC und SQLJ . . . . . . . . . . . . . . . . . . . . . . . . . . 388
11.3 Bibliographische Hinweise und Erganzungen . . . . . . . . . . . . . . . 39411.4 Ubungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
12 XQuery und SQL/XML 39712.1 XQuery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
12.1.1 Ausdrucke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39812.1.2 FLWOR-Ausdrucke . . . . . . . . . . . . . . . . . . . . . . . . 40012.1.3 Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40712.1.4 Update-Operationen . . . . . . . . . . . . . . . . . . . . . . . . 408
12.2 SQL/XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40912.2.1 XML-Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . 41112.2.2 Publikations-Funktionen . . . . . . . . . . . . . . . . . . . . . . 41312.2.3 XQuery-Funktionen . . . . . . . . . . . . . . . . . . . . . . . . 416
12.3 SQL/XML-Unterstuzung in IBM DB2 V9 . . . . . . . . . . . . . . . . 41812.3.1 Speicherung von XML-Dateien . . . . . . . . . . . . . . . . . . 42012.3.2 Anfragen mit SQL/XML . . . . . . . . . . . . . . . . . . . . . 42212.3.3 Anfragen mit XQuery . . . . . . . . . . . . . . . . . . . . . . . 42412.3.4 Generierung von XML- oder HTML-Strukturen . . . . . . . . . 424
12.4 Bibliographische Hinweise und Erganzungen . . . . . . . . . . . . . . . 42512.5 Ubungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
IV Datenintegration und ihre Anwendungen 435
13 Architekturkonzepte fur Datenbanksysteme 43713.1 Das Client/Server-Konzept . . . . . . . . . . . . . . . . . . . . . . . . 438
13.1.1 Anfrageserver . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44013.1.2 Objekt- und Seitenserver . . . . . . . . . . . . . . . . . . . . . 442
13.2 Verteilte Datenbanksysteme . . . . . . . . . . . . . . . . . . . . . . . . 44413.2.1 Vor- und Nachteile . . . . . . . . . . . . . . . . . . . . . . . . . 44413.2.2 Klassifikationen . . . . . . . . . . . . . . . . . . . . . . . . . . . 44613.2.3 Homogene Verteilung . . . . . . . . . . . . . . . . . . . . . . . 44813.2.4 Heterogene Verteilung und Foderation . . . . . . . . . . . . . . 451
13.3 Parallele Datenbanksysteme . . . . . . . . . . . . . . . . . . . . . . . . 45413.4 Bibliographische Hinweise und Erganzungen . . . . . . . . . . . . . . . 458
x Inhalt
13.5 Ubungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
14 Datenintegration 46114.1 Einfuhrung. Architekturkonzepte . . . . . . . . . . . . . . . . . . . . . 46114.2 Ubersetzer, Integratoren und Koordinatoren . . . . . . . . . . . . . . . 46314.3 Integration mittels logischer Sichten . . . . . . . . . . . . . . . . . . . 46714.4 Verteilte Objekte und Web Services . . . . . . . . . . . . . . . . . . . 47314.5 Bibliographische Hinweise und Erganzungen . . . . . . . . . . . . . . . 47614.6 Ubungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478
15 Data Warehouses (Datenlager) und OLAP 47915.1 Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479
15.1.1 Anwendungen und Architektur von Datenlagern . . . . . . . . 48115.1.2 Der ETL-Prozess . . . . . . . . . . . . . . . . . . . . . . . . . . 48415.1.3 Daten-Bereinigung zur Erzielung von Datenqualitat . . . . . . 485
15.2 Mehrdimensionale Datenmodelle . . . . . . . . . . . . . . . . . . . . . 48615.2.1 Fakten, Maße und Dimensionen . . . . . . . . . . . . . . . . . . 48615.2.2 Sternschemata und Varianten . . . . . . . . . . . . . . . . . . . 48815.2.3 Effiziente Speicherung von Faktentabellen mittels Bitmaps . . . 490
15.3 Qualitatsorientierter Schemaentwurf fur Datenlager . . . . . . . . . . . 49315.3.1 Der Entwurfsprozess . . . . . . . . . . . . . . . . . . . . . . . . 49415.3.2 Qualitatskriterien . . . . . . . . . . . . . . . . . . . . . . . . . . 49715.3.3 Summierbarkeit und Normalformen . . . . . . . . . . . . . . . 49715.3.4 Selbstwartbarkeit . . . . . . . . . . . . . . . . . . . . . . . . . . 499
15.4 Grundlagen des OLAP . . . . . . . . . . . . . . . . . . . . . . . . . . . 50215.4.1 Datenwurfel und OLAP-Operatoren . . . . . . . . . . . . . . . 50315.4.2 Von Vereinigungs- zu Wurfel-Anfragen . . . . . . . . . . . . . . 50615.4.3 SQL Roll-Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51015.4.4 SQL Cube . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51315.4.5 SQL Grouping Sets . . . . . . . . . . . . . . . . . . . . . . . . . 516
15.5 Bibliographische Hinweise und Erganzungen . . . . . . . . . . . . . . . 51715.6 Ubungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518
16 Grundlagen des Data Mining 52316.1 Einfuhrung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52416.2 Klassifikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52716.3 Cluster-Bildung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52916.4 Assoziationsanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532
16.4.1 Haufige Mengen und Assoziationsregeln . . . . . . . . . . . . . 53216.4.2 Der Apriori-Algorithmus . . . . . . . . . . . . . . . . . . . . . . 53516.4.3 Verbesserungspotenziale beim Apriori-Algorithmus . . . . . . . 53716.4.4 Alternativen zum Apriori-Algorithmus . . . . . . . . . . . . . . 53916.4.5 Interessantheitsmaße . . . . . . . . . . . . . . . . . . . . . . . . 543
16.5 Sequenzanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54416.6 Web-Mining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548
16.6.1 Web-Struktur-Mining . . . . . . . . . . . . . . . . . . . . . . . 54816.6.2 Web-Inhalts-Mining . . . . . . . . . . . . . . . . . . . . . . . . 55116.6.3 Web-Log-Mining . . . . . . . . . . . . . . . . . . . . . . . . . . 551
Inhalt xi
16.7 Bibliographische Hinweise und Erganzungen . . . . . . . . . . . . . . . 55216.8 Ubungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554
V Datenbanksystemtechnik 555
17 Interne Datenbank- und Speicherorganisation 55717.1 Plattenspeicher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557
17.1.1 Blocke und Blockzugriffe . . . . . . . . . . . . . . . . . . . . . . 55917.1.2 RAID-Architekturen . . . . . . . . . . . . . . . . . . . . . . . . 560
17.2 Pufferverwaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56317.3 Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564
17.3.1 Sequentielle Files . . . . . . . . . . . . . . . . . . . . . . . . . . 56517.3.2 Effizienter Filezugriff durch Indexierung . . . . . . . . . . . . . 567
17.4 Spezielle Indexstrukturen . . . . . . . . . . . . . . . . . . . . . . . . . 56817.4.1 ISAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56817.4.2 Baumstrukturen fur eindimensionale Punktdaten . . . . . . . . 56917.4.3 Baumstrukturen fur mehrdimensionale Punktdaten . . . . . . . 57517.4.4 Hash-Organisationsformen . . . . . . . . . . . . . . . . . . . . . 581
17.5 Beispiel: Speicherorganisation bei DB2 . . . . . . . . . . . . . . . . . . 58417.6 Speicherung und Indexierung von XML-Dokumenten . . . . . . . . . . 587
17.6.1 Speicherungsoptionen . . . . . . . . . . . . . . . . . . . . . . . 58717.6.2 Indexierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588
17.7 Bibliographische Hinweise und Erganzungen . . . . . . . . . . . . . . . 59317.8 Ubungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595
18 Verarbeitung und Optimierung von Anfragen 59718.1 Anfrageverarbeitung im Uberblick . . . . . . . . . . . . . . . . . . . . 59818.2 Anfrage-Optimierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600
18.2.1 Ziele und Ansatze . . . . . . . . . . . . . . . . . . . . . . . . . 60018.2.2 High-Level-Optimierung . . . . . . . . . . . . . . . . . . . . . . 60118.2.3 Low-Level-Optimierung . . . . . . . . . . . . . . . . . . . . . . 606
18.3 Implementierungstechniken fur den Verbund . . . . . . . . . . . . . . . 60718.3.1 Nested-Loop-Join . . . . . . . . . . . . . . . . . . . . . . . . . . 60818.3.2 Sort-Merge-Join . . . . . . . . . . . . . . . . . . . . . . . . . . 60818.3.3 Hash-Join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609
18.4 Spezielle QEP-Parameter . . . . . . . . . . . . . . . . . . . . . . . . . 61218.5 Anfrage-Prozessoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61518.6 Bibliographische Hinweise und Erganzungen . . . . . . . . . . . . . . . 61718.7 Ubungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618
19 Physischer Datenbankentwurf und Tuning 62119.1 Grundlagen des physischen Datenbankentwurfs . . . . . . . . . . . . . 62119.2 Fragmentierung und Replikation bei Datenverteilung . . . . . . . . . . 62419.3 Datenbank-Tuning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626
19.3.1 Grundlegende Prinzipien . . . . . . . . . . . . . . . . . . . . . . 62719.3.2 Tuning von Indexen . . . . . . . . . . . . . . . . . . . . . . . . 62919.3.3 Tuning in relationalen Systemen . . . . . . . . . . . . . . . . . 629
xii Inhalt
19.4 Datenbank-Benchmarks . . . . . . . . . . . . . . . . . . . . . . . . . . 63019.5 Bibliographische Hinweise und Erganzungen . . . . . . . . . . . . . . . 63319.6 Ubungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634
20 Transaktionen und Serialisierbarkeit 63720.1 Das Transaktionskonzept . . . . . . . . . . . . . . . . . . . . . . . . . 63820.2 Beispiele fur Synchronisationsprobleme . . . . . . . . . . . . . . . . . . 64120.3 Das ACID-Prinzip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64320.4 Das Read-Write-Modell fur Transaktionen . . . . . . . . . . . . . . . . 64420.5 Serialisierbarkeit von Schedules . . . . . . . . . . . . . . . . . . . . . . 647
20.5.1 Schedules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64720.5.2 View-Serialisierbarkeit . . . . . . . . . . . . . . . . . . . . . . . 65120.5.3 Konflikt-Serialisierbarkeit . . . . . . . . . . . . . . . . . . . . . 65220.5.4 Commit-Serialisierbarkeit . . . . . . . . . . . . . . . . . . . . . 657
20.6 Fehlersicherheit von Schedules . . . . . . . . . . . . . . . . . . . . . . . 65920.6.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65920.6.2 Rucksetzbarkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . 66020.6.3 Vermeidung kaskadierender Aborts . . . . . . . . . . . . . . . . 66120.6.4 Striktheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662
20.7 Korrektheit von Schedules . . . . . . . . . . . . . . . . . . . . . . . . . 66320.8 Bibliographische Hinweise und Erganzungen . . . . . . . . . . . . . . . 66320.9 Ubungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664
21 Concurrency Control 66721.1 Uberlegungen zum Scheduler-Entwurf . . . . . . . . . . . . . . . . . . 66721.2 Sperrende Scheduler . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670
21.2.1 Einfuhrung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67021.2.2 Das 2-Phasen-Sperrprotokoll . . . . . . . . . . . . . . . . . . . 67221.2.3 Varianten des 2-Phasen-Sperrprotokolls . . . . . . . . . . . . . 67721.2.4 Das MGL-Protokoll . . . . . . . . . . . . . . . . . . . . . . . . 67921.2.5 Das TL-Protokoll . . . . . . . . . . . . . . . . . . . . . . . . . . 68221.2.6 Tuning in Gegenwart sperrender Scheduler . . . . . . . . . . . 684
21.3 Nicht sperrendes Timestamp-Ordering . . . . . . . . . . . . . . . . . . 68921.4 Concurrency Control auf hoherer Abstraktionsebene . . . . . . . . . . 69021.5 Bibliographische Hinweise und Erganzungen . . . . . . . . . . . . . . . 69421.6 Ubungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695
22 Grundlagen der Crash Recovery 69722.1 Einfuhrung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69722.2 Organisation eines Data-Managers . . . . . . . . . . . . . . . . . . . . 69922.3 Der Recovery-Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . 70122.4 Ein Undo/Redo-Protokoll . . . . . . . . . . . . . . . . . . . . . . . . . 70522.5 Alternativen zum Undo/Redo-Protokoll . . . . . . . . . . . . . . . . . 70722.6 Recovery-Tuning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70822.7 Bibliographische Hinweise . . . . . . . . . . . . . . . . . . . . . . . . . 70922.8 Ubungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 709
Inhalt xiii
23 Verteilte Transaktionsverarbeitung 71123.1 Homogene Verteilung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711
23.1.1 Verteilte Transaktionen und Schedules . . . . . . . . . . . . . . 71123.1.2 Verteiltes Concurrency Control . . . . . . . . . . . . . . . . . . 71523.1.3 Verteilte Recovery-Protokolle . . . . . . . . . . . . . . . . . . . 72023.1.4 Transaktionen auf replikativen Datenbanken . . . . . . . . . . . 728
23.2 Heterogene Verteilung. System-Foderationen . . . . . . . . . . . . . . 73323.2.1 Einfuhrung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73423.2.2 Ein MDBS-Modell . . . . . . . . . . . . . . . . . . . . . . . . . 73423.2.3 Transaktionen und Schedules in einem MDBS . . . . . . . . . . 73623.2.4 Globale Serialisierbarkeit . . . . . . . . . . . . . . . . . . . . . 73923.2.5 Gewahrleistung globaler Serialisierbarkeit . . . . . . . . . . . . 742
23.3 Bibliographische Hinweise . . . . . . . . . . . . . . . . . . . . . . . . . 74523.4 Ubungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746
VI Neuere Entwicklungen 749
24 Ausblicke 75124.1 Temporale Datenbanken . . . . . . . . . . . . . . . . . . . . . . . . . . 75124.2 Probabilistische Datenbanken . . . . . . . . . . . . . . . . . . . . . . . 75524.3 Raumliche Daten und GIS . . . . . . . . . . . . . . . . . . . . . . . . . 75724.4 Datenstrome (Data Streams) . . . . . . . . . . . . . . . . . . . . . . . 76024.5 Data Provenance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76224.6 Column Stores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76424.7 Bibliographische Hinweise und Erganzungen . . . . . . . . . . . . . . . 764
Literaturverzeichnis 767
Index 808
xiv Vorwort
Auszug ...
... aus dem Vorwort zur 1. Auflage (Februar 1987)
Der vorliegende Text enthalt eine Einfuhrung in das Gebiet der Datenbanksy-steme. Dieses Teilgebiet der Informatik ist heute rund 25 Jahre alt. Es ist einerseitsgekennzeichnet von einer großen Bedeutung im praktischen Einsatz von Rechnern;dies wird belegt durch die Vielzahl von (nahezu ausnahmslos Software-) Systemen,welche inzwischen zur Verwaltung großer Datenmengen kommerziell verfugbar sind,und durch die (noch immer zunehmende) Zahl von Anwendungsgebieten, welche sichseit langerer Zeit auf ein solches System stutzen oder erst jetzt die ”Datenbank-Technologie“ fur sich entdecken. Daneben besteht an diesem Gebiet ein starkes Inter-esse aus der Sicht der theoretischen Informatik.
Das Buch vermittelt primar einen Uberblick uber heute gebrauchliche Da-tenmodelle zusammen mit einer Einfuhrung in ausgewahlte Datenbanksprachen so-wie diese Sprachen benutzende Datenbankmanagement-Systeme (DBMS); daruberhinaus wird versucht, neuere Aspekte wie semantische Datenmodelle oder Nonstan-dard-Anwendungen fur Datenbanksysteme zu berucksichtigen. Dieser Zielsetzung ent-spricht die Unterteilung des Stoffes in acht großere Abschnitte. Ein besonderes Anlie-gen ist dabei eine durchgehend formal prazise, aber dennoch stets intuitiv nachvoll-ziehbare und anwendungsnahe Darstellung des Stoffes. Teil I ist speziell fur Leser ohnespezifische Vorkenntnisse gedacht; er soll die Beschaftigung mit Datenbanksystemenmotivieren und grundlegende Probleme aufzeigen. Ausgehend von einer klaren Tren-nung zwischen zeitvarianten und zeitinvarianten Aspekten einer Datenbank, welchekonsequent durchgezogen wird, werden sodann Datenmodelle fur die konzeptionelleEbene einer Datenbank vorgestellt (Teile II und III), wobei das Entity-Relationship-Modell aus didaktischen Grunden am Anfang steht. Ein weiterer Schwerpunkt desTextes ist die umfassende Darstellung konkreter Datenbanksprachen (Teil VI) und da-bei vorwiegend solcher, die aus heutiger Sicht fur Netzwerk- bzw. relationale Systemereprasentativen Charakter haben. Daruber hinaus werden der Entwurf von Daten-banken (Teil IV), Dienste, welche ein DBMS seinem Benutzer bereitstellt (Teil VII),Anwendungen von Datenbanksystemen traditioneller und neuerer Art (Teil VIII) so-wie — zur Vervollstandigung — Datenstrukturen fur die interne Ebene (Teil V) be-handelt.
Der Text ist entstanden aus einer dreistundigen Vorlesung mit einstundigenUbungen, welche ich im Sommersemester 1986 an der RWTH Aachen gehalten ha-be, sowie aus zwei Datenbank-Praktika, welche ich in den Wintersemestern 1984/85und 1985/86 zusammen mit Kollegen in Aachen durchgefuhrt habe. Außerdem lie-gen ihm meine Erfahrungen aus der Entwicklung des relationalen DatenbanksystemsMEMODAX an der TH Aachen zugrunde. Alle genannten Veranstaltungen richtetensich an Informatik-Studenten nach dem Vordiplom. Dementsprechend werden im Text
Vorwort xv
grundlegende Kenntnisse uber Rechnerorganisation, Programmierung, Datenstruktu-ren, Graphentheorie, Komplexitatstheorie und mathematische Logik vorausgesetzt.
... aus dem Vorwort zur 2. Auflage (Juli 1994)
In den sieben Jahren, welche seit dem Erscheinen der 1. Auflage dieses Buchesvergangen sind, hat sich das Gebiet der Datenbanken nachhaltig verandert und weiter-entwickelt. Viele ”alte“ Pfade der Datenbankforschung wurden verlassen, zahlreicheneue kamen hinzu, am Markt wurde eine vollig neue Generation von Datenbanksyste-men verfugbar. Eine Folge hieraus war insbesondere eine Veranderung von Lehr- undLerninhalten und eine Schwerpunktverlagerung, welchem ein Lehrbuch uber diesesGebiet Rechnung tragen muss . Dabei darf man nun nicht der Versuchung aufsitzen,die jeweils letzten Ergebnisse der Forschung oder die gerade aktuellsten Versionenkommerziell verfugbarer Systeme beschreiben zu wollen, sondern ich glaube, dassabzuwagen ist zwischen ”klassischem“ Stoff, welcher in Datenbankvorlesungen seitvielen Jahren zum Standardkanon gehort und auch weiterhin gehoren wird, und einerangemessenen Mixtur aktueller Themen, welche den Leser die Vielfalt des Gebieteserkennen lassen und ihn zu weitergehender Beschaftigung damit anregen soll. Einesolche Abwagung habe ich in dieser Neuauflage versucht.
Fur den Inhalt und die Stoffauswahl der nach langer ”Brutzeit“ nun vorlie-genden zweiten Auflage waren vor allem zwei Dinge mass geblich: die rasante Wei-terentwicklung des Gebietes Datenbanken wahrend der letzten 10 Jahre und meinepersonlichen Fortschritte in der Durchdringung dieses Gebietes sowie die auch damitzusammenhangende Zunahme meiner Lehrerfahrung. Beides hat dazu gefuhrt, dassdie Struktur des Buches sowie sein Aufbau grundlegend uberarbeitet wurden. EinLeitgedanke war dabei, dass man die sogenannten ”Nonstandard–Anwendungen“ vonDatenbanksystemen, welche vor rund 10 Jahren forschungsmaßig erst in den Anfangensteckten, heute nicht mehr separat von den ”Standard–Anwendungen“ behandelnkann, da diese Unterscheidung heute hochstens noch in Ausnahmefallen sinnvoll ist.Es macht heute nur noch wenig Sinn, z.B. uber das geschachtelte Relationenmodellerst 21 Kapitel nach der Vorstellung des flachen Relationenmodells zu reden, wie ichdas in der ersten Auflage noch getan habe. Außerdem habe ich mich dafur entschieden,konkrete Datenbanksysteme nur noch an bestimmten Stellen zu Illustrationszweckenheranzuziehen, und mich dafur von ausfuhrlichen Schilderungen solcher Systeme inhersteller-gebundenen Kapiteln zu trennen. Es hat sich namlich gezeigt, dass Her-steller ihre Versionen und Releases heute in so kurzer Folge aktualisieren, dass mangerade als Lehrbuchautor keine Chance hat, hier Schritt zu halten; fur die Zweckeeines Lehrbuches ist dies aber auch nicht tragisch.
Das Ergebnis dieser Uberlegungen ist zum einen eine stark uberarbeitete Struk-turierung des hier behandelten Materials, welche mit der der ersten Auflage, bei un-veranderter Zielsetzung, nur noch einen Prafix gemeinsam hat. Zum anderen wur-den auch am Inhalt der Struktur zahlreiche Updates (im Sinne von Datenbanken:Einfugen, Andern, Loschen) vorgenommen. Ganz nebenbei habe ich den Text in LATEXvollstandig neu gesetzt.
Erste Anregungen zur Uberarbeitung der Struktur der 1. Auflage habe ichbereits im Zusammenhang mit der Erstellung der englischen Ubersetzung (damalsvon Sarah Mallen und Jan Van Leeuwen) erhalten. In den jetzt vorliegenden Text
xvi Vorwort
sind außerdem und vor allem Erfahrungen aus zahlreichen Vorlesungen uber Daten-banken, Transaktionsverarbeitung, Datenbank-Technik sowie uber objektorientierteDatenbanken eingeflossen, welche ich in den letzten Jahren an den Universitaten inDusseldorf, Gießen, Kiel, Koblenz, San Diego (UCSD) und zuletzt Munster gehaltenhabe. Dabei kam das in diesem Buch gesammelte Material in unterschiedlicher Wei-se zum Einsatz in Abhangigkeit von der Horerschaft (Informatik-Studenten vor odernach dem Vordiplom, Mathematik-Studenten mit Nebenfach Informatik, Studentender Wirtschaftsinformatik), vom Umfang (2 oder 4 Stunden, mit oder ohne Ubun-gen) und von der Zielsetzung der jeweiligen Veranstaltung (Pflichtvorlesung mit/ohneScheinerwerb, Wahlvorlesung mit/ohne Prufungsrelevanz); gelegentlich verwende iches auch als Abgrenzung des Umfangs von Prufungen, um dann in der Vorlesung ak-tuellen Bedurfnissen bzw. Interessen nachgehen zu konnen.
Die mit mir zusammenlebende Damenwelt, welche seit dem Erscheinen derersten Auflage zweimal Zuwachs erfahren hat, hat speziell in der letzten Phase derArbeiten an diesem Buch, d.h. im Fruhsommer 1994, großes Verstandnis auch furdieses Buchprojekt aufbringen und nahezu dauernde geistige Abwesenheit meinerseitshinnehmen mussen. Wenngleich dies nachtraglich nicht mehr wettzumachen ist, seidieses Buch meiner Martina, Laura und Kathrin gewidmet.
... aus dem Vorwort zur 3. Auflage (August 1998)
Fur die dritte Auflage wurde eine Reihe von datenbank-typischen Operationenam Text ausgefuhrt:
1. Insert’s: Viele Themen, die inzwischen fur den Datenbankbereich wichtig gewor-den sind, wurden neu aufgenommen. Dazu gehoren unter anderem Integrati-onskonzepte fur Daten und Datenbanksysteme, Data Warehousing, OLAP oderData Mining.
2. Delete’s: Einige andere Themen, die mittlerweile auch in Anwendungen vonabnehmendem Interesse sind, wurden im Wesentlichen eliminiert, darunter Netz-werk- und hierarchische Datenbanken. Auch der Namenindex ist entfallen.
3. Modify’s: Die Struktur des gesamten Buches wurde erneut verandert, wobei ichnicht nur umgruppiert und stellenweise gekurzt habe, sondern auch versuchthabe, Themen, die inhaltlich zusammengehoren (wie z.B. Datenbank-Entwurfund relationale Normalisierung), auch zusammen erscheinen zu lassen. Ich ver-spreche mir davon einerseits eine Erleichterung fur den Lernenden, dem da-durch (hoffentlich) gewisse Zusammenhange leichter zu vermitteln sind. Ande-rerseits erhoffe ich mir davon auch eine Unterstutzung fur den Lehrenden, denneinfuhrende oder vertiefende Vorlesungen lassen sich jetzt leichter als vorher anden einzelnen Teilen orientieren (siehe unten).
Im Unterschied zu den ersten beiden Auflagen habe ich jetzt bibliographische Hinweiseund Ubungen an jedes einzelne Kapitel angebunden (und nicht mehr an ganze Teile),da der Zusammenhang zum Stoff dadurch wohl doch leichter erkennbar wird.
Vorwort xvii
Zwei weitere Hinweise mochte ich an dieser Stelle geben:
(1) Ich habe, von ganz wenigen Ausnahmen abgesehen, darauf verzichtet, an allenmoglichen und unmoglichen Stellen auf die Tatsache hinzuweisen, dass weitere,aktuellere oder genauere Informationen zu einem Thema oder einem Systemauf irgendeiner Web-Seite im Internet liegen. Ich unterstelle, dass dies heuteallgemein bekannt ist, und dass auch bekannt ist, wie man z.B. die Web-Seitenvon Herstellern von Datenbanksoftware findet.
(2) An etlichen Stellen finden sich Querverweise auf Ubungen, und zwar in derForm ”... siehe Aufgabe x.y“, was bedeuten soll: ”... siehe Aufgabe y in demAbschnitt Ubungen von Kapitel x.“
Vorwort zur funften Auflage
Die funfte Auflage hat etwas langer auf sich warten lassen, als ursprunglich geplant,aber dafur ist sie ahnlich runderneuert wie seinerzeit die dritte. Kernuberlegung dieserAuflage ist, dass Datenbanksysteme inzwischen nicht mehr nur Standardsoftware aufpraktisch allen verfugbaren Rechnerplattformen sind, sondern dass sie daruber hinauswie Rechnerhardware auch in Anwendungen immer unsichtbarer werden. Wer machtsich schon klar, dass elektronische Bank- oder Borsengeschafte, das Ersteigern vonDingen im Internet oder die Schnappchenjagd nach Billigflugen im Web ohne Daten-banken kaum realisierbar ware? Wir haben es also inzwischen mit einer (Software-)Technik zu tun, die zu einer ”Commodity“ geworden ist und fast immer als ”Dienst“im Hintergrund mitspielt. Daneben gibt es naturlich nach wie vor die ”klassischen“Datenbankanwendungen, etwa im Großrechnerbereich, die von Administratoren be-treut werden und die von Programmierern in Anwendungen wie Lohnbuchaltung oderKontenverwaltung integriert werden. Aber auch hier hat sich in den letzten Jahren einWandel vollzogen: Der Datenbankadministrator ist nicht mehr der hochspezialisierteKenner eines einzelnen Systems, sondern er oder sie muss heute im Allgemeinen mitden Systemen unterschiedlicher Hersteller gleich gut umgehen konnen. Ferner werdenauch klassische Systemlandschaften mit immer neuen Aufgaben konfrontiert; mandenke hier nur an Data Warehouses, die aus heutigen Fuhrungsinformationssystemennicht mehr wegzudenken sind, oder an Service-orientierte Architekturen.
Ein Datenbanklehrbuch muss dieser sich verandernden Welt gerecht werdenund sollte gleichzeitig nicht den Blick fur die Grundlagen des Gebiets verlieren.Aus diesen Uberlegungen und Beobachtungen heraus ist die Neuauflage entstanden.Ein großer Unterschied zur vierten Auflage ist eine vollige Abkehr von rein objekt-orientierten Systemen, die sich auf dem Markt als nicht generell tragfahig erwie-sen haben; die entsprechenden Abschnitte wurden ersatzlos gestrichen. Geblieben istdie Kombination aus relationalen und objekt-orientierten Konzepten, die als objekt-relationale Datenbanken ihre Position gefunden haben und auch in die aktuelle Ver-sion des SQL-Standards eingeflossen sind. Dieser Standard wird hier in seinen 1999erund 2003er Versionen zu Grunde gelegt, allerdings muss sich der Leser vergegenwarti-gen, dass das Wort ”Standard“ mit einer gewissen Vorsicht zu genießen ist: Da dieVerabschiedung neuer SQL-Versionen regelmaßig erheblich langer dauert als zunachstgeplant, warten die Hersteller im Allgemeinen nicht ab und statten ihre Systeme mitSprachen aus, die bestenfalls an den Standardisierungsaktivitaten orientiert sind. Esdarf daher nicht verwundern, dass kaum ein kommerzielles System den Standard exakteinhalt; insofern sind die SQL-Beispiele in diesem Buch mit besonderer Aufmerksam-keit zu studieren und ggfs. genau mit der Sprachversion eines gegebenen Systems zuvergleichen; die dabei vermutlich beobachtbaren Diskrepanzen sind unvermeidbar.
xx Vorwort zur funften Auflage
Ganz neu ist die Behandlung von XML, das im Datenbankbereich (wie in vie-len anderen Bereichen) in den letzten Jahren immer weiter um sich gegriffen hat.Ich habe versucht, dies angemessen in die Darstellung zu integrieren, und zwar durchdie sukzessive Behandlung von Datenmodellierung und von Anfragesprachen fur undum XML. Dabei ist insbesondere die Integration mit (objekt-) relationalen Systemenvon Bedeutung, welche an mehreren Stellen nachvollzogen wird. Spatestens in diesemZusammenhang kommt hoffentlich auch mein weitgehend durchgehendes Beispiel desMedienhandels zum Tragen, welches von Beginn des Textes an immer wieder zu Illu-strationszwecken herangezogen (und dabei gelegentlich auch abgewandelt) wird.
Ein drittes Merkmal der neuen Auflage ist die starkere Bedeutung, die jetztData Warehouses (Datenlagern) beigemessen wird. Wahrend dieses Thema vor achtJahren von Anwendungen gerade erst entdeckt wurde und daher noch als eine Art
”Ausblick“ behandelt werden konnte, ist es mittlerweile fest in Anwendungen inte-griert und sogar von hoher strategischer wie taktischer Bedeutung. Große Datenmen-gen fallen heute uberall an, nicht nur im elektronischen Handel, und man mochtezunehmend hieraus Kapital schlagen. Data Warehouses sind dazu das Hilfsmittel mitden Primaranwendungen OLAP (Online Analytical Processing) und Data Mining.Diesen Themen wird daher in der Neuauflage angemessen breiter Raum gewidmet.
Nach wie vor erhebt das Buch nicht den Anspruch, dass der gesamte Inhalt ineiner vierstundigen Datenbankvorlesung behandelt werden konnte. Es stellt vielmehrdie Themen zusammen, die man am Ende eines einschlagigen Studiums (insbesondereder Informatik, aber auch verschiedener ”Bindestrich-Informatiken“) kennen oder vonderen Existenz man zumindest gehort haben sollte (gemaß dem Wahlspruch meinesfruheren Betriebssysteme-Lehrers Professor Dieter Haupt: ”Wissen ist wissen, wo essteht“). Von daher erspare ich mir, hier Anleitungen zum Durcharbeiten des Textesoder mogliche Abarbeitungspfade des Stoffes zu geben; ich uberlasse dies den Dozen-ten bzw. den Lesern. Allerdings erhebt der Text nach wie vor den Anspruch, seineLeserschaft an vielen Stellen bis an den aktuellen Stand der Forschung heranzufuhrenund insbesondere durch viele Literaturhinweise einen tieferen Einstieg auch in For-schungsthemen zu erleichtern.
An dieser Auflage habe ich dank moderner Technik an den unterschiedlichstenOrten auf dieser Welt arbeiten konnen, von denen ich hier einige erwahnen will:in meinem hauslichen Gievenbecker Arbeitszimmer, in meinem Munsteraner Buroauf dem Leonardo-Campus, im Center Park Het Heijderbos in den Niederlanden, imGrand Cevahir Hotel in Istanbul, im Hotel de l’Alma in Paris, im Tivoli Hotel inCoimbra, Portugal, in einem Condo am Strand von Del Mar sowie auf dem Campusder University of California, San Diego, in Kalifornien, in den Hotels Elia Latchi undPaphos Amathus auf Zypern, im Informatikzentrum Schloß Dagstuhl, im RenaissanceHotel in Chicago, in den Ocean Pacific Appartments in Hahei, Coromandel Peninsulasowie in der Amity Lodge in Queenstown, Neuseeland, im Carlton Crest Hotel inSydney sowie im The Lakes Resort & Spa in Cairns, Australien, in diversen Lufthansa-Lounges am Frankfurter Flughafen, an Bord von Flugen u.a. nach San Francisco,Seattle und Seoul, im Palace Hotel in San Francisco oder in der Fairmont Jasper ParkLodge in Kanada. Ein großer Teil der Arbeit an dieser Auflage hat im Departmentof Management Systems der Waikato Management School in Hamilton, Neuseelandwahrend meines Sabbaticals im Wintersemester 2006/7 stattgefunden.
Vorwort zur funften Auflage xxi
Naturlich gibt es eine Web-Seite zum Buch, die an der Universitat Munster unter
http://dbms.uni-muenster.de
zu erreichen ist; mich selbst erreichen geneigte Leserinnen und Leser unter
und ich freue mich immer uber Feedback, Anregungen oder Hinweise auf Tippfeh-ler. Auf der Web-Seite steht ein Foliensatz bereit; ggfs. wird hieruber auch Weitereskommuniziert.
Meiner Lektorin, Frau Dr. Margit Roth, mochte ich an dieser Stelle fur ihreGeduld danken, die sie diesem Projekt entgegengebracht hat; immerhin haben wirmehrere Jahre uber diese Neuauflage geredet. Naturgemaß sind an dieser Stelle nochweitere Danksagungen fallig: Stefan Reimers, Stephan Hagemann, Gunnar Thies undJens Lechtenborger haben als meine Korrektoren fungiert; ihnen sind etliche inhalt-liche Hinweise zu danken sowie die Tatsache, dass viele Tippfehler (selbst solche ausalteren Auflagen) eliminiert werden konnten. Dem Lektorat des Verlags, insbesonde-re Frau Roth verdanke ich Nachhilfe in der aktuellen Version der deutschen Recht-schreibung. Andreas Simon hat bei der umfassenden Uberarbeitung der Abbildungengeholfen, Thimo Buchheister, Constantin Erckenbrecht und Stephan Schneider beider Korrektur des Literaturverzeichnisses. Und last, not least: Die Widmung aus derzweiten Auflage, meine Damen, bleibt naturlich weiterhin gultig ...
Munster, im Januar 2008
G.V.
Kapitel 10
Einfuhrung in XML
In diesem Kapitel stellen wir einen vollig anderen Zugang zur Modellierung von Da-ten vor, als er jetzt aus dem Relationenmodell und seiner Erweiterung um Objektebekannt ist. Die Idee ist hierbei einerseits, Daten selbstbeschreibend zu machen: Wiewir bereits in Kapitel 1 bemerkt haben, ist eine Datendarstellung der Form
(389476, Johnson, 02-6674563)
offensichtlich weniger aussagekraftig als eine Darstellung der Form
LeserNr = ’389476’, Name = ’Johnson’, Telefon = ’02-6674563’
oder gar eine Darstellung der Form
<LeserNr> 389476 </LeserNr><Name> Johnson </Name><Telefon> 02-6674563 </Telefon>
Diese letzte Darstellung ist bereits eine, die einer solchen in XML nahe kommt (esfehlt hier eine eindeutige Wurzel).
Andererseits tragt XML der Tatsache Rechnung, dass Daten haufig keiner fe-sten Struktur folgen, sondern semistrukturiert sind, was bedeutet, dass Daten, diegleiche oder ahnliche Sachverhalte beschreiben (z.B. Bucher), unterschiedliche Aus-wahlen von Attributen besitzen konnen. Als Beispiel betrachte man Abbildung 9.20, inwelcher die verschiedenen Spezialisierungen von Person bis auf Kunde lediglich durchein zusatzliches Attribut gekennzeichnet sind; man konnte dies in einem Format dar-stellen, falls das zusatzliche Attribut auch fehlen darf. Semistrukturierte Daten sindbesonders in Datenintegrationsszenarien haufig, in welchen Daten aus unterschiedli-chen Quellen zu einem einheitlichen Bestand zusammengefasst bzw. integriert werdensollen.
XML wurde von einer Arbeitsgruppe des World Wide Web Consortium (W3C)entwickelt, wobei das Ziel war, die bereits seit langerem existierende Standard Genera-lized Markup Language (SGML) in das Internet bzw. das Web zu bringen. Die Sprachewurde schnell popular und wird bereits als universelles Datenaustauschformat sowiefur den Im- und Export von Dokumenten zwischen unterschiedlichen Systemen sowievor allem zur Definition neuer Sprachen fur spezielle Anwendungsbereiche (wie Nach-richtenbeschreibung in NewsML, Beschreibung von Web-Inhalten fur Handy-Displaysin WML oder Reprasentation gesprochener Sprache in VoiceML) verwendet.
338 Teil III: Moderne Konzepte: Objekt-Basierung und XML-Dokumente
Tabelle 10.1: Analogien zwischen relationalen Datenbanken und XML.Relationale DB XMLDaten werden uber Attribute be-schrieben.
Daten werden durch Tags be-schrieben.
Daten werden in einem Schemamodelliert.
Daten werden in einer DTD odereinem Schema modelliert.
Daten werden per SQL ange-fragt.
Daten werden per XPath, XSLToder XQuery angefragt.
Daten werden in indexierten Ta-bellen gespeichert.
Daten werden in BLOBs, Da-teien oder Datenbanken gespei-chert.
Wie bereits in Kapitel 1 erwahnt, hat die Verwendung von XML auch im Zu-sammenhang mit dem elektronischen Handel in den letzten Jahren sehr stark zu-genommen. Daruber hinaus findet sich XML in zahlreichen anderen Anwendungs-feldern, etwa bei Web Services oder im so genannten Semantic Web. Wir wollen indiesem Kapitel eine Einfuhrung in XML geben, wobei es uns zunachst um die wesentli-chen Sprachelemente sowie um Moglichkeiten zu deren abstrakter Beschreibung geht;hierzu ziehen wir einerseits einen Grammatikformalismus (DTDs) und andererseitsein Typdeklarationskonzept (XML Schema) heran. Sodann zeigen wir, dass auch furXML-Dokumente das in diesem Buch bereits mehrfach angesprochene Konzept derNormalisierung (mit dem Zweck der Elimination von Redundanzen) relevant ist, undwir gehen auf erste Moglichkeiten der Verarbeitung von XML-Dokumenten ein.
10.1 Elemente, Tags und Attribute
Die Extensible Markup Language (kurz XML) ist eine Sprache zum ”Markup“, also zurAuszeichnung von Dokumenten, wobei sich — im Unterschied etwa zur im Web weitverbreiteten Hypertext Markup Language (HTML) — syntaktische Information uberden Aufbau und die Struktur eines Dokuments vom Layout, also der Darstellung desDokuments, getrennt wird (vgl. Abschnitt 10.4.2). Tabelle 10.1 zeigt die wichtigstenUnterschiede in den Bezeichnungen bei relationalen Datenbanken sowie bei XML.
Ein XML-Dokument besteht aus Elementen, bei denen es sich um Text handelt,der in zueinander passende, offnende und schließende Tags eingeschlossen ist; danebenenthalt ein XML-Dokument ublicherweise eine Kopfzeile und eventuell Kommentare.Innerhalb eines Elementes kann gewohnlicher Text vorkommen oder es konnen an-dere Elemente sowie eine Mischung aus beidem vorkommen. Insgesamt ist ein XML-Dokument durch die strenge Verschachtelung grundsatzlich baumartig strukturiert(wenngleich durch Verweise bzw. Links hiervon abgewichen werden kann, siehe un-ten).
Wesentlich ist nun, dass ein XML-Dokument wohlgeformt sein sollte, d.h. Ele-mente werden auf der gleichen Schachtelungsstufe geschlossen, auf der sie geoffnetwurden; ferner werden sie in umgekehrter Offnungsreihenfolge wieder geschlossen,und diese Regeln gelten auf allen Schachtelungsebenen. Aus formaler Sicht ist ein
10 Einfuhrung in XML 339
<bibliographie><buch>
<autor> S. Abiteboul </autor><autor> R. Hull </autor><autor> V. Vianu </autor><titel> Foundations of Databases </titel><verlag> Addison-Wesley
<erscheinungsort> Reading, MA </erscheinungsort></verlag><jahr> 1995 </jahr>
</buch>
<artikel><autor> E.F. Codd </autor><titel> A Relational Model of Data
for Large Shared Data Banks </titel><journal> Communications of the ACM
<jahrgang> 13 </jahrgang><erscheinungsort> New York </erscheinungsort>
</journal><jahr> 1970 </jahr>
</artikel></bibliographie>
Abbildung 10.1: Beispiel eines XML-Dokuments.
XML-Dokument damit ein rangloser, geordneter und (mit Tags) markierter Baumaus Elementen; dies bedeutet, dass jeder Knoten im Baum beliebig viele Nachfolgerhaben kann (also nicht uber den Rang eines Knotens eine Obergrenze fur die Anzahlder Nachfolger festgelegt ist) und dass die Reihenfolge der Knoten im Baum signifi-kant ist. Wenn man also zwei Nachfolger eines Knotens vertauscht, erhalt man formaleinen neuen Baum bzw. ein neues Dokument.
Beispiel 10.1
Als erstes Beispiel betrachten wir das in Abbildung 10.1 gezeigte XML-Dokument
zur Beschreibung von bibliographischer Information. Das Dokument beschreibt zwei
Eintrage einer Bibliographie, ein Buch sowie einen Artikel. Die beiden Eintrage sind
unterschiedlich strukturiert, wobei manche Tags (z.B. <autor>) wiederholt vorkom-
men, andere spezifisch fur die jeweiligen Dokumenttypen sind. Das in Abbildung
10.1 gezeigte Dokument ist offensichtlich wohlstrukturiert und leicht als ein Baum
darstellbar, bei welchem die Wurzel mit <bibliographie> markiert ist, ein erster
Unterbaum die mit <buch> markierte Wurzel, ein zweiter die mit <artikel> mar-
kierte enthalt usw. In einer solchen Baumdarstellung werden die schließenden Tags
ignoriert. 2
Elemente eines XML-Dokuments konnen Attribute besitzen, welche im offnenden Tagdes Elements in beliebiger Reihenfolge erscheinen und stets als ”Name = Wert“-
340 Teil III: Moderne Konzepte: Objekt-Basierung und XML-Dokumente
Kombinationen auftreten, wobei Werte in einfache oder doppelte Hochkommata ein-geschlossen werden. Damit lassen sich u.a. alternative Modellierungen vornehmen; sokonnte z.B. in Abbildung 10.1 ein Journal-Eintrag auch folgendermaßen lauten:
<journal erscheinungsort="NewYork">Communications of the ACM<jahrgang> 13 </jahrgang>
</journal>
Wir wollen als großeres Beispiel hier wieder unseren Medienhandel betrachten. Dabeinehmen wir gewisse Vereinfachungen vor, um die Darstellung nicht unnotig aufzu-blahen; z.B. wird hier auf die Darstellung von Angeboten und Bestellungen sowie vonKunden verzichtet. Wir weichen von der Darstellung im letzten Kapitel allerdings inunterschiedlicher Weise ab, um einige der Gestaltungsmoglichkeiten im Rahmen vonXML-Dokumenten zu demonstrieren.
Beispiel 10.2
Unser erstes Dokument zum Medienhandel modelliert Personen sowie Medienarti-kel. Personen konnen dabei z.B. Schauspieler oder Buchautoren sein. Medienartikelsind elektronische Artikel (hier leer), Bucher oder Filme.
<?xml version="1.0" encoding="utf-16"?>
<medienhandel xmlns="http://dbms.uni-muenster.de"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://dbms.uni-muenster.de
Medienhandel_Schema.xsd">
<personen>
<schauspieler person-id="p15">
<nachname>Depp</nachname>
<vorname>Johnny</vorname>
<auszeichnung />
<manager>Christie Dembrowski</manager>
</schauspieler>
<schauspieler person-id="p16">
<nachname>Bloom</nachname>
<vorname>Orlando</vorname>
<auszeichnung />
</schauspieler>
<schauspieler person-id="p17">
<nachname>Knightley</nachname>
<vorname>Keira</vorname>
<auszeichnung />
</schauspieler>
<regisseur person-id="p06">
<nachname>Verbinski</nachname>
<vorname>Gore</vorname>
10 Einfuhrung in XML 341
<auszeichnung />
</regisseur>
<buchautor person-id="p01">
<nachname>Silberschatz</nachname>
<vorname>Abraham</vorname>
<auszeichnung />
</buchautor>
<buchautor person-id="p02">
<nachname>Korth</nachname>
<vorname>Henry F.</vorname>
<auszeichnung />
</buchautor>
</personen>
<medienartikel>
<elektronische_artikel />
<buecher>
<buch kategorie="Sachbuch" sprache="en_US">
<titel>Database System Concepts</titel>
<jahr>1998</jahr>
<isbn>0070310866</isbn>
<auflage>3</auflage>
<verlagsname>McGraw Hill</verlagsname>
<ort>Boston u. a.</ort>
<buchautoren person-ids="p01 p02" />
</buch>
</buecher>
<filme>
<dvd>
<titel>Pirates of the Caribbean</titel>
<jahr>2004</jahr>
<laufzeit>143</laufzeit>
<regisseur person-id="p06" />
<besetzung person-ids="p15 p16 p17"/>
<produzent>Jerry Bruckheimer</produzent>
<annotation></annotation>
<regioncode>1</regioncode>
<sound>
<soundmix>Dolby 5.1</soundmix>
<sprache>en_US</sprache>
</sound>
</dvd>
</filme>
<tontraeger></tontraeger>
</medienartikel>
</medienhandel>
342 Teil III: Moderne Konzepte: Objekt-Basierung und XML-Dokumente
In dieser Darstellung sind die im letzten Kapitel noch der Klasse Person zugeordne-
ten Attribute Vorname, Nachname und Auszeichnung (vgl. Abbildung 9.20) direkt
den verschiedenen Spezialisierungen (hier Schauspieler, Regisseur, Buchautor) zu-
geordnet; das Element Auszeichnung ist in diesem Beispiel an allen Stellen leer.
Personen ist ferner eine ID als Attribut zugeordnet; hieruber sind z.B. die Autoren
des Buches Database System Concepts referenzierbar. Ein Buch hat zwei Attribute
Kategorie und Sprache. 2
An dem Dokument des letzten Beispiels lassen sich die wesentlichen Konzepte be-reits erlautern: Das Dokument beginnt mit einer Kopfzeile, die einen Hinweis aufdie XML-Version sowie die verwendete Kodierung enthalt. Sodann folgt das Wur-zelelement medienhandel, welches einen eigenen Namensraum (”Namespace“) sowiein diesem Fall bereits ein eigenes Schema referenziert. Die Idee des Namensraumsist, die Element-sowie Tag-Namen, die man in einem Dokument verwendet dagegenabzusichern, dass sie in anderen Dokumenten ebenfalls verwendet werden. Wird einNamespace erzeugt und referenziert, so kann jedes Werkzeug, mit welchem das be-treffende XML-Dokument verarbeitet wird, diesen Namesraum einlesen und sodannverwenden. Es werden auf diese Weise also Verwechslungen mit gleich lautenden Ele-mentnamen anderer Dokumente vermieden.
Das gerade betrachtete Dokument zeigt noch weitere syntaktische Details vonXML: Elemente konnen leer sein und in einem Tag geschrieben werden, das gleich-zeitig offnet und schließt; Beispiele sind auszeichnung oder elektronische artikelin Beispiel 10.2. Ferner zeigt das Beispiel eine erste Form der Verlinkung innerhalbvon XML-Dokumenten, welche durch ID- und IDREF -Attribute (genauer: durch At-tribute vom Typ ID bzw. IDREF) gegeben ist: Elemente konnen als Wert fur einID-Attribut einen benutzerdefinierten Identifikator enthalten, der von anderen Ele-menten als Wert fur ein IDREF-Attribut refenziert werden kann. In Beispiel 10.2 istdas Attribut person-id ein Attribut vom Typ ID, welches bei Buchern oder bei DVDsjeweils von einem Attribut vom Typ IDREF (fur einzelne Referenzen) bzw. IDREFS (furmehrere Referenzen) referenziert wird. Es sei bemerkt, dass es verschiedene weitereTypen von Attributen gibt, von denen uns hier lediglich der Typ CDATA (”beliebigeZeichenreihe“) interessiert.
Abbildung 10.2 zeigt die oberen Ebenen des Baumes, der durch das Dokumentaus Beispiel 10.2 aufgespannt wird.
Wir wollen das Beispiel des Medienhandels noch weiter betrachten und alsnachstes anders modellieren. Dazu erinnern wir daran, dass mit XML, wie wir erwahnthaben, semistrukturierte Daten modelliert werden konnen. Dies nutzen wir jetzt auchzur alternativen Beschreibung von Personen, bei welcher wir samtliche fur Personenmoglichen Attribute dem Element Person unmittelbar zuordnen.
Beispiel 10.3
Unser zweites Dokument zum Medienhandel modelliert lediglich Personen, und zwarauf andere Weise als im letzten Beispiel.
<medienhandel>
<personen>
<person rolle="schauspieler" person-id="p15">
10 Einfuhrung in XML 343
Medienhandel
Buchautor
Schauspieler
Regisseur
Personen Medienartikel
ElektronischeArtikel
Bücher
Filme
DVD
Medienhandel
Buchautor
Schauspieler
Regisseur
Personen Medienartikel
ElektronischeArtikel
Bücher
Filme
DVD
Abbildung 10.2: Teilweise Baumdarstellung des Medienhandel-Dokuments.
<nachname>Depp</nachname>
<vorname>Johnny</vorname>
<manager>Christie Dembrowski</manager>
</person>
<person rolle="schauspieler" person-id="p16">
<nachname>Bloom</nachname>
<vorname>Orlando</vorname>
</person>
<person rolle="sschauspieler" person-id="p17">
<nachname>Knightley</nachname>
<vorname>Keira</vorname>
</person>
<person rolle="regisseur" person-id="p06">
<nachname>Verbinski</nachname>
<vorname>Gore</vorname>
</person>
<person rolle="buchautor" person-id="p01">
<nachname>Silberschatz</nachname>
<vorname>Abraham</vorname>
</person>
<person rolle="buchautor" person-id="p02">
<nachname>Korth</nachname>
<vorname>Henry F.</vorname>
344 Teil III: Moderne Konzepte: Objekt-Basierung und XML-Dokumente
personen
person*
person-id
nachname
vorname
agent?
studio?
manager?
impressario?
auszeichnung*
medienhandel
rolle
personen
person*
person-id
nachname
vorname
agent?
studio?
manager?
impressario?
auszeichnung*
medienhandel
rolle
Abbildung 10.3: Baumstruktur der Personeninformation aus Beispiel 10.3.
</person>
</personen>
Damit ergibt sich eine Darstellung, welche auf den ersten Blick kompakter erscheint,
in der allerdings die verschiedenen Spezialisierungen von Personen nicht mehr ex-
plizit zum Ausdruck gebracht werden, sondern nur noch uber das Rollenattribut.
Hier ist je nach Anwendung zu entscheiden, welche Darstellungsform zu bevorzugen
bzw. welche Modellierung angemessen ist. 2
Wir haben oben als erstes Konsistenzkriterium fur XML-Dokumente bereits derenWohlgeformheit erwahnt. Wenn z.B. in einer großeren Anwendung Dokumente vonunterschiedlichen Autoren beigesteuert werden oder die Dokumente bzw. deren Be-standteile zu unterschiedlichen Zeitpunkten entstehen, wird es sinnvoll sein, die ge-wunschte Struktur der Dokumente zeitinvariant festzulegen in ahnlicher Weise, wieman dies mit einer Schemavereinbarung bei einer Datenbank macht. Als Beispiel wirdman fur die Personen in Beispiel 10.3 festlegen wollen, welche Elemente insgesamtvorkommen durfen und welche fur jede einzelne Personenbeschreibung vorkommenmussen.
Abbildung 10.3 zeigt dazu eine baumartige Struktur fur das Dokument ausBeispiel 10.3, welche Auskunft daruber gibt, welche Tags auf welcher Schachtelungs-stufe zugelassen sind (und welche nach unten fortgesetzt werden kann). Ein ”∗“ hintereinem Elementnamen bedeutet dabei, dass dieses Element keinmal, einmal oder be-liebig oft auftreten darf; ein ”?“ bedeutet, dass das betreffende Element keinmal odereinmal vorkommen darf. Entsprechend wurde ein ”+“ deuten, dass das betreffendeElement mindestens einmal vorkommen muss. Eine solche Form der Notation liegteiner der Moglichkeiten zur zeitinvarianten Beschreibung von XML-Dokumenten zu-grunde; diese werden als nachstes beschrieben.
Kapitel 12
XQuery und SQL/XML
In diesem Kapitel setzen wir einerseits unsere Beschreibung von Anfragesprachen furXML-Dokumente fort mit XQuery; andererseits setzen wir auch unsere Betrachtungzu SQL und neueren SQL-Erweiterungen fort und werden beschreiben, in welcherForm SQL/XML heutzutage XML-Daten in einer Datenbank unterstutzt. Bei XQue-ry handelt es sich um einen mittlerweile vom W3C verabschiedeten Standard (siehewww.w3.org/TR/xquery oder www.w3.org/XML/Query), in welchem deklaratives An-fragen im Stil von SQL mit Elementen funktionaler Programmierung kombiniert wird.Das zentrale Konstrukt von XQuery sind die so genannten FLWOR-Ausdrucke, welchedem Konzept von SELECT-FROM-WHERE-Anfragen nachempfunden sind. Im Anschlussdaran beschreiben wir die Erweiterung des SQL-Standards um XML-Funktionalitat,welche als SQL/XML bekannt ist. Schließlich gehen wir exemplarisch auf die Reali-sierung dieser Anfragemoglichkeiten im Datenbanksystem DB2 Version 9 von IBMein.
12.1 XQuery
XQuery basiert auf Einflussen diverser Sprachen, welche im Laufe der Zeit fur Da-tenbanken entwickelt worden sind, darunter SQL, aber auch objekt-orientierte sowiefunktionale Sprachen. Die Arbeit an XQuery einschließlich der Standardisierung hatvon 1999 bis 2007 gedauert; mittlerweile hat die Spezifikation dieser Sprache die fol-genden Bestandteile, in diesem Zusammenhang sei auch an Abbildung 10.14 erinnert:
(1) XQuery 1.0 and XPath 2.0 Data Model (XDM)
(2) XQuery 1.0 and XPath 2.0 Functions and Operators
(3) XML Path Language (XPath) 2.0
(4) XQuery 1.0: An XML Query Language
(5) XQuery 1.0 and XPath 2.0 Formal Semantics
(6) XML Syntax for XQuery 1.0 (XQueryX)
(7) XSLT 2.0 and XQuery 1.0 Serialization
398 Teil III: Moderne Konzepte: Objekt-Basierung und XML-Dokumente
(8) XSL Transformations (XSLT) Version 2.0
(9) Extensible Stylesheet Language (XSL) Version 1.1
Die meisten dieser Dokumente haben im Januar 2007 den Status einer W3C Re-commendation (”a specification or set of guidelines that, after extensive consensus-building, has received the endorsement of W3C Members and the Director“) erreicht,was bedeutet, dass sie stabil sind und in dieser Form zu Grundlage von Implemen-tierungen gemacht werden konnen. Uns interessiert hier insbesondere das DokumentXQuery 1.0: An XML Query Language, aus welchem wir auch Syntaxfestlegungenhier zeigen werden. XQuery basiert u.a. auf XPath, so dass Pfad-Ausdrucke, wie wirsie in Kapitel 10 behandelt haben, hier uneingeschrankt verwendet werden konnen.Allerdings geht XQuery in seiner Ausdruckskraft weit uber XPath hinaus.
12.1.1 Ausdrucke
Das Grundkonstrukt von XQuery ist der Ausdruck (expression) wie in der Relationen-algebra, d.h. Ausdrucke konnen ineinander geschachtelt werden und Ergebnisse einesAusdrucks sind fur andere geeignet definierte Ausdrucke verwendbar; allerdings hatXQuery im Unterschied zur Relationenalgebra ein komplexes Typsystem. Bei der Spe-zifikation der Sprache ist man – ahnlich wie im Software-Entwurf – zunachst von UseCases ausgegangen, also von hypothetischen Benutzungsfallen, in denen die Sprachezum Einsatz kommen sollte. Diese Falle haben ihren Niederschlag in zahlreichen Kon-strukten bzw. Typen von Ausdrucken gefunden. So unterstutzt XQuery u.a. Anfragenan strukturierte Dokumente und kann aus gegebenen Dokumenten neue ableiten; An-fragen konnen an relationale Daten, XML-Daten, gemischte Daten, administrativeDaten oder Metadaten gestellt werden.
Zur Syntax von XQuery sei allgemein bemerkt, dass das die Sprache Groß- undKleinschreibung unterscheidet; Schlusselworter der Sprache werden klein geschrieben.Ausdrucke durfen den gleichen Namen erhalten wie Schlusselworter mit Ausnahmeverschiedener reservierter Funktionsnamen. Jeder XQuery-Ausdruck hat einen Wertund – wie in einer funktionalen Sprache ublich – keinerlei Seiteneffekte. Ausdruckekonnen allerdings Fehlermeldungen zuruckliefern.
Das Typsystem von XQuery unterscheidet atomare Werte (wie Zeichenreihen,ganze Zahlen usw. oder auch konstruierte Werte wie date(‘‘2007-09 -30’’)) undverschiedene Arten von Knoten, darunter Element- Attribut-, Text- sowie Dokument-Knoten; Letztere bezeichnen ein Dokument, auf welches eine gegebene Anfrage ange-wendet werden soll; und haben die allgemeine Form
doc("<file name>").
De facto handelt es sich bei doc um eine Funktion, welche eine Sequenz erzeugt, imAllgemeinen die (geordnete) Sequenz der Knoten des Input-Dokuments. Ein XQuery-Wert ist eine geordnete Folge von null oder mehr Knoten bzw. atomaren Werten. Diegrundsatzliche Struktur einer Anfrage lautet:
1. Optionale Namensraum-Deklaration(en),
2. optionale Variablen- und Funktions-Deklaration(en),
12 XQuery und SQL/XML 399
3. eigentlicher Anfrageausdruck, der aus Unterausdrucken zusammengesetzt seinkann.
Ausdrucke konnen Funktionsaufrufe, Pfad-Ausdrucke, arithmetische oder logischeAusdrucke, Vergleichsausdrucke, konditionale oder quantifizierte Ausdrucke, Element-Konstruktoren oder FLWOR-Ausdrucke sein sowie verschiedene andere Formen an-nehmen.
Wir geben als Nachstes einige Auszuge aus der Syntax von XQuery wieder, de-ren vollstandige Version sich im Anhang des im Web unter www.w3.org/TR/xqueryzu findenden Dokuments befindet. Die Regeln der Syntaxspezifikation, welche in derErweiterten Backus-Naur-Form (EBNF) angegeben sind, sind vollstandig numme-riert, so dass Bezuge zwischen den Beschreibungen hier und dort eindeutig herstell-bar sind; die Lucken in den Nummern der nachfolgend gezeigten Regeln sind somitbei Bedarf leicht zu schließen. Aufgrund der Kurze des hier gezeigte Ausschnitts ausder XQuery-Syntax nehmen wir keine Unterscheidung zwischen Nicht-Terminalen derGrammatiken und vom Benutzer wahlbaren Namen vor; dies sollte aus dem jeweiligenZusammenhang heraus klar sein. Terminale der Sprache sind dagegen in Hochkom-mata eingeschlossen.
[1] Module ::= VersionDecl? (LibraryModule | MainModule)
[3] MainModule ::= Prolog QueryBody
[6] Prolog ::= ((DefaultNamespaceDecl | Setter | NamespaceDecl| Import) Separator)*
((VarDecl | FunctionDecl | OptionDecl)Separator)*
[7] Setter ::= BoundarySpaceDecl | DefaultCollationDecl| BaseURIDecl | ConstructionDecl| OrderingModeDecl | EmptyOrderDecl| CopyNamespacesDecl
[8] Import ::= SchemaImport | ModuleImport
[9] Separator ::= ";"
[24] VarDecl ::= "declare" "variable" "$" QName TypeDeclaration?((":=" ExprSingle) | "external")
Eine Anfrage kann aus einem oder mehreren Fragmenten bestehen, die als Modulebezeichnet werden; Module sind dadurch gekennzeichnet, dass sie einzeln statischanalysiert werden konnen. Ein Modul kann ein Bibliotheksmodul oder ein Hauptmodulsein, wobei Letzteres einen Prolog sowie einen Rumpf umfasst. Eine Anfrage hat genauein Hauptmodul, dessen Rumpf ausgewertet wird und das Ergebnis der Anfrage liefert.Ein Prolog ist eine Folge von Deklarationen sowie Importen (z.B. eines Schemas),welche die Auswertungsumgebung fur das betreffende Modul festlegt. Setter sinddabei Deklarationen, die den Wert einer Eigenschaft festlegen, welche die Ausfuhrungder Anfrage beeinflusst, wie z.B. eine Ordnungsreihenfolge. Eine Variablendeklaration
400 Teil III: Moderne Konzepte: Objekt-Basierung und XML-Dokumente
FOR IN
LET := WHERE
RETURN
ORDER BY
FOR IN
LET := WHERE
RETURN
ORDER BY
Abbildung 12.1: Syntax von FLWOR-Ausdrucken.
legt den statischen Typ einer Variablen sowie eventuell einen Wert fur diese fest; derName QName, so genannter qualified name, darf dabei nicht bereits vergeben sein.
Der Anfragerumpf (QueryBody) eines Hauptmoduls besteht aus einem Aus-druck wie folgt:
[30] QueryBody ::= Expr
[31] Expr ::= ExprSingle ("," ExprSingle)*
[32] ExprSingle ::= FLWORExpr | QuantifiedExpr| TypeswitchExpr | IfExpr | OrExpr
Ein Ausdruck kann demnach eine Folge so genannter Expression Singles sein, welchedurch Kommata getrennt werden und welche ihrerseits eine von mehreren (der obengenannten) Formen haben konnen. Von besonderem Interesse sind dabei die FLWOR-Ausdrucke (sprich: englisch flower).
12.1.2 FLWOR-Ausdrucke
Wir konzentrieren uns hier auf den wichtigsten Ausdrucks-Typ, die FLWOR-Ausdrucke.Deren allgemeine Form, welche auch in Abbildung 12.1 dargestellt ist, lautet wie folgt:
[33] FLWORExpr ::= (ForClause | LetClause)+ WhereClause?OrderByClause? "return" ExprSingle
[34] ForClause ::= "for" "$" VarName TypeDeclaration? PositionalVar?"in" ExprSingle("," "$" VarName TypeDeclaration?PositionalVar? "in" ExprSingle)*
[35] PositionalVar ::= "at" "$" VarName
[36] LetClause ::= "let" "$" VarNameTypeDeclaration? ":=" ExprSingle
("," "$" VarNameTypeDeclaration? ":=" ExprSingle)*
[37] WhereClause ::= "where" ExprSingle
[38] OrderByClause ::= (("order" "by") | ("stable" "order" "by"))
12 XQuery und SQL/XML 401
OrderSpecList
[39] OrderSpecList ::= OrderSpec ("," OrderSpec)*
[40] OrderSpec ::= ExprSingle OrderModifier
[41] OrderModifier ::= ("ascending" | "descending")? ("empty"("greatest" | "least"))?("collation" URILiteral)?
[42] QuantifiedExpr ::= ("some" | "every") "$" VarNameTypeDeclaration? "in" ExprSingle("," "$" VarName TypeDeclaration?
"in" ExprSingle)*"satisfies" ExprSingle
Ein FLWOR-Ausdruck beginnt also mit einer for- oder einer let-Klausel und enthaltoptional eine where- sowie eine order by-Klausel; er endet mit einer return-Klausel.for bindet dabei eine oder mehrere Variablen an Ausdrucke und erzeugt zur Laufzeiteinen ”Strom“ von Tupeln, in welchem jedes einzelne Tupel jede Variable an einenWert bindet, der im Ergebnis des betreffenden Ausdrucks liegt. let bindet dagegendie angegebenen Variablen an das gesamte Ergebnis des Ausdrucks. for wird alsozur Iteration uber den Input des betreffenden Ausdrucks benutzt, let erzeugt le-diglich einzelne Bindungen. Zur Verdeutlichung betrachten wir die folgenden beidenDeklarationen:
for $b in doc("Medienhandel.xml")//buch
let $b in doc("Medienhandel.xml")//buch
Die erste dieser erzeugt viele Bindungen, von denen jede die Variable $x einzeln anein buch-Element bindet. Die zweite erzeugt dagegen genau eine Bindung, so dass $xeine Liste aller buch-Elemente zugewiesen wird.
Die where-Klausel entspricht in ihrer Funktion derjenigen von SQL und selek-tiert diejenigen Tupel, welche den angegebenen Ausdruck erfullen. Mittels order bykann eine auf- oder absteigende Sortierung des Ergebnisses erzielt werden. returnkonstruiert das Ergebnisdokument. Wir erlautern als Nachstes den Gebrauch vonFLWOR-Ausdrucken an einigen Beispielen.
Beispiel 12.1
Unser erstes Beispiel nimmt wieder Bezug auf die in Abschnitt 10.7.1 angegebeneDTD fur unseren Medienhandel und unterstellt die Verfugbarkeit eines DokumentsMedienhandel.xml, welches in Bezug auf diese DTD gultig ist. Gesucht sind darindie Titel aller technischen Bucher.
In Kapitel 10 hatten wir fur diese Anfrage das folgende XSLT-Programm angegeben(vgl. Beispiel 10.9):
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
402 Teil III: Moderne Konzepte: Objekt-Basierung und XML-Dokumente
<Technik-Buecher>
<xsl:for-each select="//buch/@kategorie">
<xsl:if test="@kategorie=’Technik’">
<Technik-Buch>
<xsl:value-of select="titel"/>
</Technik-Buch>
</xsl:if>
</xsl:for-each>
</Technik-Buecher>
</xsl:template>
</xsl:stylesheet>
Eine gleichwertige XQuery-Formulierung lautet wie folgt:
<Technik-Buecher>
{ for $b in doc("Medienhandel.xml")
//buch[@kategorie=’Technik’]
return
<Technik-Buch>
{$b/titel}
</Technik-Buch>
}
</Technik-Buecher>;
Es wird von der Wurzel des Eingabedokuments per Pfad-Ausdruck zu Buchtiteln
bzw. -kategorien navigiert; die Titel technischer Bucher werden ausgegeben. 2
In diesem Beispiel wurde lediglich selektiert; im nachsten wird ein Verbund durch-gefuhrt.
Beispiel 12.2
Wir wiederholen Beispiel 10.10 (mit den gleichen Voraussetzungen wie im letztenBeispiel): Gesucht sind die Titel von Buchern und DVDs, die in demselben Jahrerschienen sind. Das in Kapitel 10 bereits angegebene XSLT-Programm lautete:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<ROOT>
<xsl:for-each select="//buch/jahr">
<xsl:variable name="buch" select="."/>
<xsl:for-each select="//dvd/jahr[jahr=$buch/jahr]">
<xsl:variable name="dvd" select="."/>
<BuchDVDGleichesJahr>
<Jahr><xsl:value-of
select="$buch/jahr"/></Jahr>
<Buch><xsl:value-of
select="$buch/titel"/></Buch>
<DVD><xsl:value-of
select="$dvd/titel"/></DVD>
</BuchDVDGleichesJahr>
</xsl:for-each>
</xsl:for-each>
12 XQuery und SQL/XML 403
</ROOT>
</xsl:template>
</xsl:stylesheet>
Demgegenuber sieht ein entsprechendes XQuery-Programm wie folgt aus:
<ROOT>
for $b in doc("Medienhandel.xml")//buch,
$v in doc("Medienhandel.xml")//dvd
where $b/jahr = $v/jahr
return
<BuchDVDGleichesJahr>
<jahr> {$b/jahr} </jahr>
<buch> {$b/titel} </buch>
<dvd> {$v/titel} </dvd>
</BuchDVDGleichesJahr>
</ROOT>;
Durch die Moglichkeit, mehrere Variablen in einer for-Klausel zu vereinbaren, ergibt
sich eine klare Vereinfachung in der Formulierung der Anfrage. 2
In den nachsten beiden Beispielen werden vordefinierte Aggregat-Funktionen vonXQuery benutzt:
Beispiel 12.3
Gesucht ist die durchschnittliche Laufzeit von Filmen (wieder bezogen auf die inAbschnitt 10.7.1 angegebene DTD):
let $f in doc("Medienhandel.xml")//filme,
$a := avg($f/video/laufzeit),
$b := avg($f/dvd/laufzeit)
return
<durchschnittslaenge>
<video>
<laenge> {$a} </laenge>
</video>
<dvd>
<laenge> {$b} </laenge>
</dvd>
</durchschnittslaenge>
Die let-Klausel ermittelt zunachst alle Filme und sodann die durchschnittlichen
Laufzeiten aller Videos bzw. aller DVDs. 2
Beispiel 12.4
Zeige die Namen der Regisseure, die mehr als 20 Filme auf DVD gedreht haben.
<fleissigeRegisseure>
{
for $r in distinct(doc("Medienhandel.xml")//person)
let $a := doc("medienhandel.xml")
//filme/dvd[regisseur = $r]
404 Teil III: Moderne Konzepte: Objekt-Basierung und XML-Dokumente
where count($a) > 20
return <name> $r </name>
}
</fleissigeRegisseure>
Hier wird ein Verbund uber Regisseure (als Personen bzw. als einer DVD zugeord-net) gebildet.
Wir bemerken an dieser Stelle, dass die Ausgabe hier (und auch bereits in einigenBeispielen oben) uber einen Constructor -Ausdruck gebildet wird, welcher lediglichdie Ergebnisse einbettet. Eine andere Form ist der Computed Constructor, der dieErzeugung eines benannten Elements ermoglicht, welches vom Ergebnis eines Aus-drucks abhangt. Damit lasst sich der gerade gezeigte Code auch wie folgt schreiben:
element fleissigeRegisseure
{
for $r in distinct(doc("Medienhandel.xml")//person)
let $a := doc("medienhandel.xml")
//filme/dvd[regisseur = $r]
where count($a) > 20
return
element name
{ $r }
}
Es ist hiermit sogar moglich, den Namen eines konstruierten Elements vom Ergebnis
eines Ausdrucks abhangig zu machen. 2
Das nachste Beispiel zeigt, dass man mit XQuery auch Berechnungen vornehmenkann:
Beispiel 12.5
Fur jede DVD, deren Laufzeit uber 120 Minuten liegt, zeige deren Titel und dieAnzahl der Minuten uber 120.
<resultat>
{ for $f in doc("Medienhandel.xml")//filme/dvd
where $f/laufzeit > 120
return
<langerFilm>
{$f/titel}
<differenz> {$f/laufzeit - 120} </differenz>
</langerFilm>
}
</resultat>
Das Beispiel benutzt in der return-Klausel einen arithmetischen Ausdruck. 2
Beispiel 12.6
Erzeuge eine Liste von Buchern, in deren Verlagsname der Teilstring”Verlag“ vor-
kommt (wie z.B. in”Oldenbourg-Verlag“):
Sachindex
1C-Schedule, siehe One-Copy-Schedule1SR, siehe Ein-Kopien-Serialisierbarkeit2PC, siehe Zwei-Phasen-Commitprotokoll2PL, siehe Zwei-Phasen-Sperrprotokoll3PC, siehe Drei-Phasen-Commitprotokoll
Abgeschlossenheit (einer Attributmenge),196, 256
Abhangigkeitdirekte, 254funktionale, 166Inklusions-, 183linksminimale, 179mehrwertige, 269rechtsminimale, 179transitive, 254triviale, 170Verbund-, 272
AbhangigkeitsmengeAquivalenz, 182Basis einer, 179endlich kontrollierbare, 183Hulle einer, 182minimale, 179redundante, 168, 178, 182Uberdeckung einer, 179
Ableitbarkeitbei funktionalen Abhangigkeiten, 170bei Inklusionsabhangigkeiten, 184bei mehrwertigen Abhangigkeiten, 271RAP-, 173
Ableitungsregel, 169, 271Additivitats-, 172Akkumulations-, 172Erweiterungs-, 170fur FDs, 171fur INDs, 183fur MVDs, 271Korrektheit, 170Projektivitats-, 172RAP-, 173Transitivitats-, 170
Vollstandigkeit, 170abstrakter Datentyp, 289Abstraktionsmechanismen, 59ACA, siehe kaskadierende AbortsAchse (in XPath), 354ACID-Prinzip, 643ACP, siehe Atomares Commit-ProtokollADT, siehe abstrakter DatentypAquivalenz von Anfrageausdrucken, 212After-Image, 702Aggregat-Funktion (in SQL), 132Aggregat-Funktion (in XQuery), 403Aggregation, 59
verallgemeinerte, 92Algebra
logische, 601physische, 601, 615
Algorithmus AQUIVALENZ, 175Algorithmus DEKOMPOSITION, 265Algorithmus FD-MEMBERSHIP, 175Algorithmus HULLE, 174Algorithmus KEY, 176Algorithmus LJP, 262Algorithmus SYNTHESE, 266Anforderungsanalyse, 54, 285Anfrage, 239
konjunktive, 209, 236konjunktive (im RDK), 237konjunktive (in Datalog), 236rekursive, 148
Anfrage-Optimierer, 622Anfrage-Optimierung, 212, 600
algebraische, 214, 597High-Level-, 601implementierungsabhangige, 598Low-Level, 601semantische, 601
Anfragebaum, 213, 602Anfrageserver, 441Anfragesprache, siehe DatenbankspracheAnfrageumkehrung, 763Anfrageverarbeitung, 449, 597
Index 809
parallele, 457verteilte, 449
Anomalie, 252, 500Anderungs-, 253Einfuge-, 252Losch-, 252Update-, 253
ANSI, 27, 39, 127ANSI/X3/SPARC-Architekturmodell, 27Anwendungs-Administrator, 29Anwendungssystem, 6Apriori-Algorithmus, 536Apriori-Prinzip, 535Architektur
2-Tier-, 4403-Tier-, 439
Armstrong-Axiome, 171Armstrong-Relation, 171Assertion (in SQL), 186Assoziation (in UML), 303Assoziationsklasse (in UML), 304Assoziationsregel, 532
verallgemeinerte, 539Atom
des RDK, 220des RTK, 215in Datalog, 233
Atomares Commit-Protokoll, 720Atomaritat, 643Attribut, 59, 62, 291
abnormales, 256einwertiges, 62in XML, 339inverses, 298mehrwertiges, 63Nichtschlussel-, 253normales, 256Prim-, 253Schlussel-, 65, 253zusammengesetztes, 63
Ausdruck (in XQuery), 398Ausdruckskraft
der RA, 211von SQL, 219
Ausfuhrungsmodell (fur Regeln), 193Ausfuhrungsplan, 598Ausreißer (beim Clustering), 530Auswertung eines RA-Ausdrucks, 209
effiziente, 210Auto-Tuning, 57Autonomie, 445, 447, 452, 734
Ausfuhrungs-, 734
Entwurfs-, 734Kommunikations-, 734
Autorisierung, 37Autoritat, 548
B-Baum, 570B*-Baum, 574Bag, siehe MultimengeBasic-TO-Protokoll, 689Basis (einer Abhangigkeitsmenge), 179Basisrelation, 201Baum, 570
balancierter, 571k-d-, 576sortierter Schlussel-, 571
Bayer-Baum, siehe B-BaumBCNF, siehe Boyce-Codd-NormalformBefore-Image, 661, 702Begin Of Transaction, 667Benchmark, 630
bereichs-spezifischer, 630TPC-C-, 632TPC-D-, 632Wisconsin-, 631
berechenbare Anfrage, 238Berechnungskomplexitat, 241
der RA, 211Bereichsanfrage, 759Beschreibungskomplexitat, 241Beziehung, siehe auch Relationship
IS-A-, 76zweistellige, 74
Bigtable, 458Binary Large Object, 111Bit-Map-Index, 490BLOB, siehe Binary Large ObjectBlock, 559, 565Boolesche Funktion, 195Boolescher Ausdruck, 194BOT, siehe Begin Of TransactionBoyce-Codd-Normalform, 254Breitensuche, 607Broker, 475BTO, siehe Basic-TO-ProtokollBucket, 584
C2PL-Protokoll, 677Cache-Koharenz, 455, 459CakePHP, 394CGI, siehe Common Gateway InterfaceCharacter Large Object, 111Check-Klausel (in SQL), 113, 186
810 Index
Checkpoint, 704class, siehe KlasseCLI, 459Client, 438Client-Server-Architektur, 438CLOB, siehe Character Large Objectclosure, siehe HulleCluster-Bildung, 529Clustering, 58, 624CMCSR, 658, 663CMVSR, 658Codd-aquivalente Sprachen, 221Codd-vollstandige Sprache, 215Column Store, 764Commit-Regel, siehe Redo-RegelCommit-Serialisierbarkeit, 658Commitment-Ordering, 664, 744Common Gateway Interface, 379computable query, siehe berechenbare An-
frageConcurrency Control, 637
in replikativen Datenbanken, 732verteiltes, siehe verteiltes Protokoll
Concurrency Control-ProtokollBTO, 689C2PL, 677DAG-Locking, 684MGL, 679S2PL, 678SS2PL, 679STO, 690TL, 682TO, 6892PL, 672
Confidence (einer Assoziationsregel), 534conjunctive query, 209Constellation Schema, 490Cookie, 552Cover, siehe Abhangigkeitsmenge, Uber-
deckung einerCrash-Recovery, 697Crawler, 549CREATE TABLE-Kommando (in SQL), 113CSR, 654, 663Cube-Operator, 508, 513Cursor, 392, 441Cursor Stability (bei SQL), 688
DAL, siehe Data Administration Langua-ge
Data Abstraction, siehe Daten-AbstraktionData Administration Language, 29
Data Cleansing, 485, 552Data Cube, 503Data Definition Language, siehe Daten-
DefinitionsspracheData Dictionary, 35, 110Data Manipulation Language, siehe Daten-
ManipulationsspracheData Mining, 524Data Provenance, 763Data Stream, siehe DatenstromData Stream Management System, 761Data Warehouse, 480Data-Manager, 38, 558, 669Database Extender, 316Datalog, 232Datalog-Programm, 233Dateisystem, 8Daten
benutzerdefinierter (in SQL), 312mehrdimensionale, 486semistrukturierte, 337
Daten-Abstraktion, 289Daten-Definitionssprache, 29Daten-Manipulationssprache, 29Daten-Operationen, 647
in Konflikt, siehe KonfliktDaten-Reduktion, 548Daten-Replikation, 728Daten-Sampling, 553Datenabhangigkeit, 99, siehe auch Abhangig-
keitinterrelationale, 102
Exklusions-, 104Inklusions-, 102
intrarelationale, 99Schlussel-, 100
Datenbank, 10, 25aktive, 192deduktive, 227extensionale, 229intensionale, 229konsistente, 104kuratierte, 765probabilistische, 755punktweise konsistente, 102raumliche, 757relationale, 101replikative, siehe replikative Daten-
banktemporale, 752verteilte, 444
Datenbank-Administrator, 29, 31
Index 811
Datenbank-AnfrageBaumdarstellung einer, 213generische, 238in SQL, 130Optimierung einer, 212
algebraische, 214polynomielle, 240
Datenbank-Entwurfsprozess , 52Datenbankanwendungs-Lebenszyklus, 48Datenbanken
mobile, 766Datenbankentwurf, 45, 452
verteilter, 448Datenbankformat, 102Datenbankmanagement-System
verteiltes, 444Datenbankmanagementsystem, 10Datenbankobjekt
Granularitat eines, 679Datenbankschema, 27, 110
externes, 28internes, 28konzeptionelles, 28relationales, 104
DatenbankspracheAquivalenz, 215Codd-Vollstandigkeit, 215deskriptive, 214domain-unabhangige, 217prozedurale, 214sichere, 210vollstandige, 239
Datenbanksystem, 10aktives, 192heterogenes verteiltes, 447, 451homogen verteiltes, 447objekt-basiertes, 442objekt-relationales, 20, 300paralleles, 454relationales, 15, 440verteiltes, 444, 446
Datenbaum, 682Datenfusion, 469Datenintegration, 461Datenlager, 480Datenmodell, 13, 26, 40, 49
hierarchisches, 13konzeptionelles, 26Netzwerk-, 13objekt-orientiertes, 293physisches, 27relationales, 95
semantisches, 283Datenmodellierung, 285
statische, 55, 282Datenobjekt
Kopie eines, 700Datenqualitat, 162, 485Datenserver, 444Datenstrom, 760Datenstruktur
eindimensionale, 575mehrdimensionale, 575
Datentypskalarer, 121
Datenunabhangigkeit, 26, 46, 450logische, 26physische, 15, 26, 622
Datenwurfel, 503DB2 CLI, 386DBA, siehe Datenbank-Administratordblp, 363DBMS, siehe DatenbankmanagementsystemDBS, siehe DatenbanksystemDCE, siehe Distributed Computing Envi-
ronmentDDL, siehe Data Definition LanguageDeadlock, 675
globaler, 737verteilter, 717, 718
Deadlock-Victim, 676Debit-Credit-Transaktion, 631Decision Support System, 480Declustering, 624deduktive Datenbank, 227Deferred Updating, 700Dekomposition, 351Denormalisierung, 58, 623, 629Dereferenzierung, 312deskriptive Sprache, 214Dialogsprache, 29DIC, siehe Dynamic Itemset CountingDifferenzenrelation, 188Differenzoperation, 204Dimension, 486Dimension Table, 489Dimensionstabelle, 489Direct Access File, 8Dirty Read-Problem, 641, 659, 688, 721disjunktive Normalform (einer Booleschen
Funktion), 195Disk-Array, 560Distinct-Typ, 312Distributed Computing Environment, 473
812 Index
Distributed Object Management, 474Divisions-Operation, 249Divisions-Rest-Verfahren, 581DM, siehe Data-ManagerDML, siehe Data Manipulation LanguageDNF, siehe disjunktive NormalformDocument Object Model, 357Document Type Definition, 345Dokumentengraph, 588Domain, siehe WertebereichDomain-Bedingung (in SQL), 113Domain-Unabhangigkeit (einer Anfragespra-
che), 217Dot-Notation, 311DRDA, 459, 473Drei-Ebenen-Modell, 45Drei-Phasen-Commitprotokoll, 726
Entscheidungsphase, 727Entscheidungsvorbereitungsphase, 727Wahlphase, 727
dreiwertige Logik, 148Drill-Down, 487, 506dritte Normalform (3NF), 254DSMS, siehe Data Stream Management
SystemDTD, siehe Document Type DefinitionDTL, siehe Log, verteilterDurchschnittsoperation, 204Dynamic Itemset Counting, 539Dynamisches SQL, 386
ECA-Regel, 192, siehe Event-Condition-Action-Regel, 465
ECO, siehe erweitertes Commitment Or-dering
EDB, siehe Datenbank, extensionaleEdge-Chasing-Algorithmus, 719Ein-Kopien-Serialisierbarkeit, 731Elog, 244End Of Transaction, 667Enthaltensein von Anfragen, 237Entity, 61, 68Entity-Deklaration, 65Entity-Format, 62Entity-Integritat, 99Entity-Relationship-Diagramm, 70Entity-Relationship-Modell, 46, 55, 61, 80,
282Entity-Set, 61, 68Entity-Typ, 65
schwacher, 92Entscheidungsbaum, 528
Entscheidungsunterstutzung, 480Entsperroperation, 672Entwurf
konzeptioneller, 55logischer, 57physischer, 57statischer, 55, 282
EOT, siehe End Of TransactionEpisoden (-Mining), 546Equijoin, 138ER-Modell, siehe Entity-Relationship-ModellEreignis-Bedingung-Aktionen-Regel, 188erste Normalform (1NF), 101Erweiterbarkeit, 445erweitertes Commitment Ordering, 748ETL-Prozess, 480, 484Exklusionsabhangigkeit, 104, 109Exportschema, 453expressive power, 211Extensible Markup Language, 21externe Ebene, 28externes Schema, 45, 46Extremalpunkt (eines Relationenschemas),
178
Fact Table, 489Fakt, logisches, 229Faktentabelle, 489FD, siehe functional dependencyFehlertoleranz, 697Fetch-Operation, 701Feuern, 192
direktes, 193gleichzeitiges, 193verzogertes, 193
File, 564, 565index-sequentieller, 568sequentieller, 565
File-Scan, 617Fileserver, 444Filesystem, 8, 564Filter-Operation, 202Fixpunkt, 240Flush-Operation, 701FLWOR-Ausdruck (in XQuery), 400forcierter Konflikt, 743Fragment, 451Fragmentierung, 449
horizontale, 625hybride, 625verlustfreie, 625vertikale, 625
Index 813
Fragmentierungstransparenz, 451Freigabe-Ordnung, 664, 744Fremdschlussel, 104Frequent-Pattern Growth, 541Frequent-Pattern Tree, 541Frequenz (einer Episode), 547funfte Normalform (5NF), 273functional dependency, siehe Abhangigkeit,
funktionaleFunktion (in XQuery), 407funktionale Abhangigkeit, 166, 349Funktionsarchitektur, 437Funktionsmodell, 49Funktionsmodellierung, 285
Galaxy-Schema, 490Gaming, 766Garbage Collection, 566, 703Garbage-Collection-Regel, 703GAV, siehe Global-As-View-AnsatzGCSR, siehe globale Konflikt-SerialisierbarkeitGeneralisierung, 59generische Anfrage, 239geographisches Informationssystem, 759geordnete Datenbank, 241Geschaftsprozess, 287Geschaftsprozessmodellierung, 287GIS, siehe geographisches Informations-
systemGlobal-As-View-Ansatz, 467globale Konflikt-Serialisierbarkeit, 740globaler Schedule, 737globaler TM, 735Google, 549Granularitat, 164, 679Greedy-Heuristik, 607Grouping Sets, 516grouping-Funktion, 512, 514Growing-Phase (beim 2PL), 675Grundatom, 234Grundfaktum, 234Grundsatze ordnungsmaßiger Modellierung,
51Gruppierung, 510Gruppierungsausdruck, 511
haufige Menge, 536Handshake, 690Hash-Funktion, 581
statische, 584Hash-Join, 609Hash-Verfahren
dynamisches, 584offenes, 582
heterogene Verteilung, 447Hibernate, 394Hierarchisierung, 539homogene Verteilung, 447Horn-Klausel, 228, 233Host-Language, siehe WirtsspracheHot Spot, 692HTML, 338, 360Hub, 548Hulle
einer Abhangigkeitsmenge, 169, 182einer Attributmenge, 173
IBM DB2, 418, 584IDB, siehe Datenbank, intensionaleImpedance Mismatch, 292Implikation
allgemeine, 182bei funktionalen Abhangigkeiten, 168,
182bei mehrwertigen Abhangigkeiten, 271endliche, 183unbeschrankte, 183
In-Place-Updating, 700Inclusion Dependency, siehe Inklusionsab-
hangigkeitInclusion Dependency Normal Form, 277Inconsistent Read, 642IND, siehe Inclusion DependencyIndex, 629
clustered, 629dichter, 567dunner, 567mehrstufiger, 569Primar-, 568Sekundar-, 568
Index-Partitionierung, 624Indexed-Sequential Access Method, 568Information Hiding, 289Information Retrieval, 551Informationssystem, 6
geographisches, 759Informationssystem-Lebenszyklus, 47Ingres, 243Inheritance, siehe VererbungInklusionsabhangigkeit, 102, 113
schlusselbasierte, 103unare, 103zyklische, 187
Instance, 101
814 Index
Instanz-Attribut, 297Instanz-Variable, 291Integration, 462
In-Advance-, 462materialisierte, 463On-Demand-, 462virtuelle, 462
IntegritatEntity-, 99referentielle, 99
Integritatsbedingung, 37, 112, 162, 232DEFERRED-Modus einer, 187dynamische, 163IMMEDIATE-Modus einer, 187statische, 162
Domain-, 163, 165Not-Null-, 163referentielle, 164Schlussel-, 164
transitionale, 162Uberwachung einer, 188
interne Ebene, 27internes Schema, 45Interoperabilitat, 451, 473, 733Intratransaktions-Parallelismus, 713invertierte Liste, 568IS-A-Beziehung, 76ISAM, siehe Indexed-Sequential Access Me-
thodIsolation, 643Itemset, 533Iterator, 617
in SQLJ, 393
J2EE, 394Java Database Connectivity, 388JavaScript, 378JD, siehe join dependencyJDBC, siehe Java Database Connectivityjoin dependency, siehe Abhangigkeit, Ver-
bund-Join-Implementierung
Hash-, 609Nested-Loop-, 608Sort-Merge-, 608
K-Nachster-Nachbar-Algorithmus, 529kaskadierende Aborts, 661
Vermeidung, 661Katalog, 110Key, siehe SchlusselKlasse, 289, 291
in UML, 303Klassenattribut, 297Klassendiagramm (in UML), 301Klassenname, 296Klassifikation, 59, 527
Distanz-basierte, 528Partitionierungs-basierte, 529
Klausel (in Datalog), 233Knowledge Discovery, 525Kollision (beim Hashen), 582Kommutativitat (von Transaktions-Schritten)
zustandsabhangige, 693zustandsunabhangige, 691
Komponentenschema, 453Konflikt
direkter, 739forcierter, 743indirekter, 739zwischen Operationen, 652, 691zwischen Sperren, 671
Konflikt-Aquivalenz, 653, 713, 732, 740Konflikt-Serialisierbarkeit, 654, 693, 740
globale, 740Konfliktgraph, 654–656, 715, 740, 748Konfliktrelation, 653Konfluenz, 192Konkatenations-Operation, 137Konsistenz (einer Transaktion), 643Konsolidierung (von Daten), 482Kontextknoten (bei XPath), 354konzeptionelle Ebene, 28konzeptioneller Entwurf, 55, 81konzeptionelles Schema, 45Koordinator, 721Kopf einer Regel, 234Korrektheit eines Schemas, 50, 87Korrektheitskriterium (fur Schedules), 647,
740Korrelationsvariable, 323Kostenfunktion, 606
Large Object, 111Late Binding, siehe spates BindenLateral-Tabelle, 323LAV, siehe Local-As-View-AnsatzLDBS, siehe lokales DatenbanksystemLeast Recently Used-Strategie, 563Legacy-System, 461Lesbarkeit eines Schemas, 50, 88Lese-Quorum, 733Lesesperre, 670Level of Isolation, 687
Index 815
Liest-Von-Relation, 651, 660, 730Lift, 544Literal (in Datalog), 233Lixto, 244, 477LOB, siehe Large ObjectLocal-As-View-Ansatz, 467Lock, siehe SperreLog, 35, 38, 702
logischer, 702physikalischer, 702verteilter, 721, 725
Logbuch, 708Logging, 702Logik-Programmierung, 226logischer Entwurf, 57lokaler Schedule, 737lokaler TM, 735lokales Datenbanksystem, 734lossless join, siehe Verbund, verlustloserlossy join, siehe Verbund, verlustbehafte-
terLost Update-Problem, 641LRU, siehe Least Recently Used-Strategie
Maßalgebraisches, 488distributives, 487
MDBS, siehe Multidatenbanksystem, sie-he Multidatenbanksystem
Measure, 486Mediafehler, 698Mediator, 464mehrdimensionale Daten, 486Mehrfachvererbung, 291Membership-Algorithmus (fur FDs), 175Membership-Problem
allgemeines, 182fur funktionale Abhangigkeiten, 169
Mengehaufige, 535
MengenoperationDifferenz, 204Durchschnitt, 204Vereinigung, 204
Message, siehe NachrichtMessage Passing, 291Message-Name, 299Meta-SQL, 364Metadaten, 35, 466Method, siehe MethodeMethode, 289, 299Methoden (in SQL), 325
MGL-Protokoll, siehe Multiple Granula-rity Locking
Middleware, 439, 473Migration, 49Minimalitat eines Schemas, 50Model Management, 766Modifizierbarkeit eines Schemas, 50MOLAP, siehe Multidimensional OLAPMost Recently Used-Strategie, 564Multidatenbanksystem, 452, 734, 737
Modell eines, 735Multidimensional OLAP, 489Multimenge, 131Multiple Granularity Locking, 679Multiple Inheritance, siehe Mehrfachver-
erbungmultivalued dependency, siehe Abhangig-
keit, mehrwertigeMutator-Methode, 315MVD, siehe multivalued dependencyMySQL, 380
Nachster-Nachbar-Anfrage, 759Nachricht, 289naturlicher Verbund, 93, 135, 205natural join, siehe naturlicher Verbund,
siehe naturlicher VerbundNavigation, 14, 322Nested-Loop-Join, 608Netzwerk-Partitionierung, 732Netzwerktransparenz, 450Nichtschlussel-Attribut, 253Normalform, 277
Boyce-Codd-, 254dritte, 254erste, 101funfte, 273fur Relationenschemata, 253Project-Join-, 273vierte, 273zweite, 254
Normalisierung, 57, 251, 259, 488, 629NP-vollstandiges Problem, 243, 258, 266,
276NSA, siehe Nichtschlussel-AttributNullwert, 98, 112, 140, 147
Oberklasse, 297Object, siehe ObjektObject Management Group, 473Object Sharing, 291Objekt, 283, 289, 290, 442
816 Index
Objekt-Identitat, 289objekt-orientiertes Datenmodell, 293Objekt-Orientierung, 290objekt-relationales Datenbanksystem, 300Objekt-Server-Architektur, 442Objekt-Struktur, 291Objekt-Verhalten, 291Observer-Methode, 315ODBC, 459, 473OLAP, siehe On-Line Analytical Proces-
singOMG, siehe Object Management GroupOn-Line Analytical Processing, 503one fact in one place-Prinzip, 266One-Copy-Schedule, 728Ontologie, 466Open Software Foundation, 473OSF, siehe Open Software FoundationOutlier, 530Overloading, siehe UberladungOverriding, siehe Uberschreiben
Page, siehe SeitePage Fault, 559Page Frame, siehe SeitenrahmenPage Scraping, 477Page-Server-Architektur, 442PageRank, 549Parallelverarbeitung, 454Partial Match-Query, 575Partial Range-Query, 575Partitionierung, 448, 626, 627Path Expression, 352Path-Pushing-Algorithmus, 719Pattern (in XSLT), 356PCA, siehe Prafix-Commit-AbgeschlossenheitPersistenz, 643Persistenzmechanismus, 394Pfad-Ausdruck, 352
regularer, 589Pfadausdruck, 322Phantom-Deadlock, 719PHP, 379PJ/NF, siehe Project-Join-NormalformPL/SQL, 386Polymorphismus, 290Portabilitat, 439Postorder, 590Prafix-Commit-Abgeschlossenheit, 658Pradikat, logisches, 226Precision, 551Preorder, 590
Primarindex, 568Primarschlussel, 65, 113Project-Join-Normalform, 273Projektions-Operation, 134, 202Projektions-Operation (fur Schedules), 657,
737Prolog, 226Prototyping, 58prozedurale Sprache, 214Prozessmodell, 49PSPACE, 241PTIME, 240Puffer-Directory, 701Puffer-Manager, 558, 563, 669, 700
QEP, siehe Query Execution PlanQEP-Erzeugung, 606Quadtree, 577Quantor (in XQuery), 406Query Containment, 237Query Execution Plan, 598query tree, siehe AnfragebaumQuery-Prozessor, 37, 615Quorum-Consensus-Verfahren, 733
RA, siehe Relationenalgebraraumliche Daten, 757RAID, siehe Redundant Array of Inex-
pensive DisksRaster-Modell, 758RC, siehe RucksetzbarkeitRDK, siehe Relationen-DomainkalkulRead Lock, siehe LesesperreRead-Write-Modell, 645Recall, 551Rechnerknoten
Autonomie, 734Record-Identifier, 586, 614Recovery, 637Recovery-Kosten, 676Recovery-Manager, 38, 669, 700, 703Recovery-Manager-Klassifikation, 703Recovery-Protokoll, 698
Entwurf eines, 705verteiltes, 720
Redo-Operation, 698Redo-Regel, 703, 721Redundant Array of Inexpensive Disks, 560referentielle Integritat, 99Referenztypkonstruktor, 312Reflektion, 245Regelsystem
Index 817
korrektes, 170vollstandiges, 170
Rekursion, 230Relation, 95, 97, 293
abgeleitete, 201, 230Basis-, 201bitemporale, 755transitive Hulle einer, 211typisierte, 300Zerlegung einer, 207
Relational OLAP, 489relationale Datenbank, 101relationale Maschine, 242Relationen-Domainkalkul, 215, 220
Atom des, 220Ausdruck des, 220Formel des, 220sicherer, 221
Relationen-Tupelkalkul, 215Atom des, 215Ausdruck des, 216Formel des, 215mit Bereichsdeklarationen, 219sicherer, 218
Relationenalgebra, 135, 208Abgeschlossenheit der, 210Ausdruck der, 208
Aquivalenz von, 212Auswertung eines, 209
Ausdruckskraft der, 211Berechnungskomplexitat der, 211Effizienz der, 210Semantik der, 209Sicherheit der, 218Syntax der, 208
Relationenformat, 97Relationenmodell, 95
flaches, 105, 294geschachteltes, 294
Relationenschema, 101Relationship, 69, 70
Grad eines, 72Komplexitat eines, 72many-many-, 74many-one-, 74one to many-, 74one to one-, 74Stelligkeit eines, 72
Relationship-Deklaration, 69Relationship-Set, 70Relationship-Typ, 70Replikation, 445, 447, 623
partielle, 448, 626vollstandige, 448, 626
Replikationstransparenz, 450replikative Datenbank
Concurrency Control, 732Repository, 35, 466Requirements Analysis, siehe Anforderungs-
analyseRestart-Operation, 700, 709Reverse Engineering, 125, 553RID, siehe Record -IdentifierRigorositat, 665, 743ROLAP, siehe Relational OLAPRoll-Up, 487, 504Roll-Up-Anfrage, 510Row Store, 764RTK, siehe Relationen-TupelkalkulRTKBD, siehe Relationen-Tupelkalkul mit
BereichsdeklarationenRuby on Rails, 394Rucksetzbarkeit (eines Schedules), 660, 729
ACA, 661RC, 660ST, 662
Rucksetzungsmechanismus, siehe Recovery-Protokoll
Rumpf einer Regel, 234RW-Modell, siehe Read-Write-Modell
S2PL-Protokoll, 678Sampling, 540Scan (eines Files), 617Schattenkopien, 700Schedule, 647, 648
freigabe-geordneterweitert, 748
globaler, 737Input-, 668korrekter, 663Korrektheit, 715lokaler, 737Output-, 668Projektion eines, 657replikativer, 729
Konflikt-Graph, 748vollstandiger, 729
serieller, 648verteilter, siehe verteilter Schedulevollstandiger, 647, 648
Schedule-EigenschaftCommit-Abgeschlossenheit, 657Monotonie, 664
818 Index
Prafix-Abgeschlossenheit, 657Scheduler, 668
aggressiver, 669f-sicherer, 670konservativer, 670nicht-sperrender, 670optimistischer, 742pessimistischer, 742s-sicherer, 670sicherer, 670sperrender, 670
Schema Merging, 56Schema-Modifikation, 50Schema-Modifikation (in SQL), 115Schema-Tableau, 262Schema-Transformation, 51Schemagraph, 588Schichtenmodell eines DBMS, 33Schlussel, 65, 100
eindeutiger, 178einfacher, 275Fremd-, 104Primar-, 65Sekundar-, 65
Schlusselabhangigkeit, 100Schlusselattribut, 65, 253Schlusselkandidat, 65, 113Schneeflockenschema, 490Schnittstelle
DBMS-interne, 34Schreib-Quorum, 733Schreibsperre, 670Scripting
client-seitig, 378Server-seitiges, 378
SET TRANSACTION-Kommando (in SQL), 687Seite, 559Seitenersetzungsstrategie, 559Seitenrahmen, 559Seitenserver-Architektur, 442Sekundarindex, 568Sekundarschlussel, 65Selbstwartbarkeit, 501SELECT-Kommando, 130, 131Selektionsoperation, 134, 202Selektivitat, 612Self-Maintainability, siehe Selbstwartbar-
keitsemantisches Datenmodell, 283
Objekt im, 283Semijoin, 249, 615semistrukturierte Daten, 337
SEQUEL, 127Serialisationsgraphen-Tester, 694Serialisierbarkeit
Commit-, 658CMCSR, 658, 663CMVSR, 658
Commitment Orderingerweitertes, 748
Ein-Kopien-, 731Konflikt-, 654, 714
globale, 740View-, 652
Serialisierbarkeits-Theorem, 655Server, 438Sessionizing, 552SGML, 337Shared-Disk-Architektur, 455Shared-Memory-Architektur, 455Shared-Nothing-Architektur, 456Shrinking-Phase (beim 2PL), 675Shuffle-Produkt, 648Sicherheit (von Formeln), 218Sicht, 46
materialisierte, 244typisierte, 316
Sichtenwartung, 244Signatur (einer Methode), 299SilkRoute, 426Simula, 288Snapshot Isolation, 695Snowflake Schema, 490SOAP, 475Sondieren, 583
lineares, 583quadratisches, 583
Sort-Merge-Join, 608spates Binden, 290Speicher
instabiler, 697stabiler, 698
Sperre, 670exklusive, 673intensionale, 680Kompatibilitat von, 673Konversion einer, 675, 682nicht exklusive, 673
Sperroperation, 672Sperrprotokoll, 672, 737
MGL-, 679Tree-, 682zweiphasiges, 672
Sperrtabelle, 671
Index 819
Spezialisierung, 59, 76partielle, disjunkte, 79partielle, nicht disjunkte, 78totale, disjunkte, 78totale, nicht disjunkte, 79
SphinX-Indexierung, 588SPJ-Ausdruck, 208SQL, 127, 440
Temporales, 755SQL-Methode, 325SQL-Routine, 325SQL-Typkonstruktoren, 311SQL/CLI, 386SQL/PSM, 386SQL/XML, 409SQL1, 127SQL89, 127SQL:1999, 128, 310SQL:2003, 128, 310SQLJ, 392SRDK, siehe Relationen-Domainkalkul, si-
chererSRTK, siehe Relationen-Tupelkalkul, si-
chererSS2PL-Protokoll, 679ST, siehe StriktheitStandard Query Language, siehe SQLStar Schema, 489Statisches SQL, 386Step (in XPath), 353Sternschema, 489STO, siehe striktes TO-ProtokollStorage Group, 585Stored Procedure, 440Stratifikation eines Datalog-Programms, 235Streuen, 583striktes TO-Protokoll, 690Striktheit (eines Schedules), 662Striping, 560, 622, 624Stylesheet, 356Subclass, siehe UnterklasseSubcube, 504Subquery, 146Subschema, 28Subtabelle, 316Subtransaktion, 736Subtypenbeziehung, 297Such-Strategie (fur QEPs), 606
Breiten-, 607Greedy-, 607Tiefen-, 607
Supergruppen, 508
Superkey, 65, 126Support, 533Support (einer Folge), 545Synchronisation (von Transaktionen), 639System/R, 127, 705Systemfehler, 697
Tabelletypisierte, 301, 316
Tabellen-Clustering, 630Tabellen-Definition (in SQL), 111Tableau, 183Tablespace, 584Template-Regel (in XSLT), 356Terminierungs-Operation, 647
abort, 647commit, 647
Theta-Verbund, 135Tiefensuche, 607Timeout, 675, 721Timestamp, 689Timestamp-Ordering-Protokoll, 689TL-Protokoll, siehe Tree LockingTO-Protokoll, siehe Timestamp-Ordering-
ProtokollTPC, siehe Transaction Processing Per-
formanz CouncilTPC-C-Benchmark, 632TPC-D-Benchmark, 632TPS, siehe Transaction Per SecondTPS-Rate, 631Trader, 475Transaction Per Second, 631Transaction Processing Performanz Coun-
cil, 631Transaktion, 38, 533, 638, 644
abgebrochene, 647, 649, 668aktive, 649, 668flache, 664freigabe-verzogert, 744freigegebene, 647, 649, 668geschachtelte, 664, 693globale, 736initialisierende, 650Interpretation einer, 645lokale, 736verteilte, 449, siehe verteilte Trans-
aktionverzogerte, 668
Transaktions-Manager, 38, 667Transaktionsfehler, 697Transaktionskonzept, 642
820 Index
Transaktionsmanagerglobaler, 735lokaler, 735
Transaktionsserver, 441Transaktionsverarbeitung
Aufteilung, 667dynamische, 647globale, 739
Transaktionszeit, 753transitive Hulle, 149, 211Transparenz, 450, 451Tree-Locking, 682Trigger, 188, 465TSQL2, 755Tuning, 57, 626Tuning-Prinzip, 627Tupel, 97
partielles, 98totales, 97
Typ-Konstruktor, 294
UDDI, 475Uberladung, 290Uberlaufbereich, 582Uberschreiben, 290Ubersetzer (eines View-Updates), 224Ubersetzung (eines View-Updates), 223Umbenennungs-Operation, 204UML, 301Undo-Operation, 698Undo-Regel, 703unentscheidbares Problem, 228Unified Modeling Language, 301Universal Coordinated Time, 754Universalrelation, 251Universalrelationen-Schema-Annahme, 252Universum, 252Unlock-Operation, 671Unrepeatable Read, 688Unterklasse, 289, 297Unternehmens-Administrator, 29Update, 29Update-Anomalie, 253Update-Operation
in SQL, 128View-, 223
Use Case (in UML), 306UTC, siehe Universal Coordinated Time
Variable, 227Verbund
außerer, 139
Equi-, 138innerer, 139naturlicher, 135, 136, 205Semi-, 249Theta-, 138verlustbehafteter, 207, 261verlustloser, 207
Verbund-Operationen in SQLcross join, 138full outer join, 140left outer join, 139natural join, 136outer join, 139right outer join, 140
Vereinigungsoperation, 204Vererbung, 60, 76, 289Vererbungshierarchie, 80Verklemmung, 675verteilte Datenbank, 728verteilte Objektverwaltung, 474verteilte Transaktion, 712verteilter Schedule, 713
Konflikt-Aquivalenz, 713Konflikt-Graph, 715Konflikt-Serialisierbarkeit, 714Korrektheit, 715Prafix, 713serieller, 714vollstandiger, 713
verteiltes DBMSheterogenes, 733
verteiltes DBSSystemfehler, 720
Kommunikations-Fehler, 720Site-Fehler, 720unzustellbare Nachrichten, 720
verteiltes Protokoll, 7152PC, 7222PL, 7163PC, 726SS2PL, 717TO, 716
verteiltes System, 444vierte Normalform (4NF), 273View (im Relationenmodell), 210View (in SQL), 114View Integration, 55View Modeling, 55View-Aquivalenz, 651, 730View-Komplement, 243, 517View-Serialisierbarkeit, 652View-Update, 223
Index 821
Ubersetzer eines, 224Ubersetzung eines, 223
Vollstandigkeitnach Bancilhon und Paredaens, 238nach Chandra und Harel, 238nach Codd, 215
Vollstandigkeit eines Schemas, 49VSR, siehe View-Serialisierbarkeit
W3C, 337W3C Recommendation, 398Wait-For-Graph, siehe Warte-GraphWarehouse-Administrator, 484Warenkorbanalyse, 532Warte-Graph, 676, 718–719Web Service, 475Wertebereich, 62WFG, siehe Warte-GraphWirtssprache, 29Wisconsin-Benchmark, 631Wrapper, 464Write Lock, siehe SchreibsperreWrite-Ahead-Log-Protokoll, siehe Undo-
RegelWrite-All-Ansatz, 732Write-All-Available-Ansatz, 732WSDL, 475Wurzelklasse, 298
XML, 21, 338Attribut, 339Elelement, 338Namespace, 342Tag, 338
XML Schema, 348XML-Dokument, 338
gultiges, 346wohlgeformtes, 338
XML-Normalform, 351XMLAGG, 413XMLATTRIBUTES, 413XMLCONCAT, 413XMLELEMENT, 413XMLEXISTS, 416XMLFOREST, 413XMLTABLE, 416XNF, 351XPath, 352XQuery, 397XQUERY-Funktion, 416XQuery-Syntax, 399XSD, 348
XSL, 356XSL-FO, 356XSLT, 356XSLT-Template, 357
Zeitbenutzer-definierte, 754gultige, 753Transaktions-, 753
Zeitstempel, 689Zerlegung, 207, 262
unabhangige, 262verlustlose, 207, 262
Zugriffsrecht (in SQL), 1152PL, siehe Zwei-Phasen-Sperrprotokoll2PL-Protokoll, 6842PL-Scheduler, siehe Zwei-Phasen Sperr-
protokollZwei-Phasen-Commitprotokoll, 722
Entscheidungsphase, 723Terminierungsprotokoll, 725Unsicherheitsphase, 723Wahlphase, 722
Zwei-Phasen-Sperrprotokoll, 672dynamisches, 678Growing-Phase, 675konservatives, 677Shrinking-Phase, 675strenges, 678
starkes, 679zweite Normalform (2NF), 254
Top Related