Fakultät für Informatik TU München - Fakultät für Informatik
Lehrstuhl III: Datenbanksysteme
Technische Universität München
Home  |  Personen  |  Forschung  |  Lehre  |  Sonstiges  | 

Inhaltsverzeichnis - Datenbanksysteme (6. Auflage, 2006)

Vorwort15

1Einleitung und Übersicht17
1.1Motivation für den Einsatz eines DBMS17
1.2Datenabstraktion19
1.3Datenunabhängigkeit20
1.4Datenmodelle21
1.5Datenbankschema und Ausprägung22
1.6Einordnung der Datenmodelle22
1.6.1Modelle des konzeptuellen Entwurfs22
1.6.2Logische (Implementations-)Datenmodelle23
1.7Architekturübersicht eines DBMS26
1.8Übungen28
1.9Literatur28

2Datenbankentwurf29
2.1Abstraktionsebenen des Datenbankentwurfs29
2.2Allgemeine Entwurfsmethodik30
2.3Die Datenbankentwurfsschritte31
2.4Die Anforderungsanalyse31
2.4.1Informationsstrukturanforderungen33
2.4.2Datenverarbeitungsanforderungen35
2.5Grundlagen des Entity-Relationship-Modells35
2.6Schlüssel37
2.7Charakterisierung von Beziehungstypen37
2.7.1Funktionalitäten der Beziehungen37
2.7.2Funktionalitätsangaben bei n-stelligen Beziehungen39
2.7.3Die $(min, max)$-Notation42
2.8Existenzabhängige Entitytypen46
2.9Generalisierung47
2.10Aggregation48
2.11Kombination von Generalisierung und Aggregation50
2.12Konsolidierung, Sichtenintegration51
2.13Konzeptuelle Modellierung mit UML57
2.13.1UML-Klassen57
2.13.2Assoziationen zwischen Klassen58
2.13.3Aggregation in UML59
2.13.4Anwendungsbeispiel: Begrenzungsflächendarstellung von Polyedern in UML60
2.13.5Generalisierung in UML-Notation61
2.13.6Die Modellierung der Universität in UML61
2.13.7Verhaltensmodellierung in UML62
2.13.8Anwendungsfall-Modellierung (use cases)62
2.13.9Interaktionsdiagramme64
2.13.10Interaktionsdiagramm zur Prüfungsdurchführung64
2.14Übungen65
2.15Literatur67

3Das relationale Modell69
3.1Definition des relationalen Modells69
3.1.1Mathematischer Formalismus69
3.1.2Schema-Definition70
3.2Umsetzung eines konzeptuellen Schemas in ein relationales Schema71
3.2.1Relationale Darstellung von Entitytypen71
3.2.2Relationale Darstellung von Beziehungen71
3.3Verfeinerung des relationalen Schemas76
3.3.1$1$:$N$-Beziehungen76
3.3.21:1-Beziehungen78
3.3.3Vermeidung von Null-Werten79
3.3.4Relationale Modellierung der Generalisierung80
3.3.5Beispielausprägung der Universitäts-Datenbank81
3.3.6Relationale Modellierung schwacher Entitytypen83
3.4Die relationale Algebra83
3.4.1Selektion84
3.4.2Projektion85
3.4.3Vereinigung85
3.4.4Mengendifferenz86
3.4.5Kartesisches Produkt (Kreuzprodukt)86
3.4.6Umbenennung von Relationen und Attributen87
3.4.7Definition der relationalen Algebra88
3.4.8Der relationale Verbund (Join)88
3.4.9Mengendurchschnitt93
3.4.10Die relationale Division94
3.4.11Operatorbaum-Darstellung95
3.5Der Relationenkalkül95
3.5.1Beispielanfrage im relationalen Tupelkalkül96
3.5.2Quantifizierung von Tupelvariablen97
3.5.3Formale Definition des Tupelkalküls98
3.5.4Sichere Ausdrücke des Tupelkalküls99
3.5.5Der relationale Domänenkalkül99
3.5.6Beispielanfragen im Domänenkalkül100
3.5.7Sichere Ausdrücke des Domänenkalküls101
3.6Ausdruckskraft der Anfragesprachen102
3.7Übungen102
3.8Literatur105

4Relationale Anfragesprachen107
4.1Geschichte107
4.2Datentypen108
4.3Schemadefinition108
4.4Schemaveränderung109
4.5Elementare Datenmanipulation: Einfügen von Tupeln110
4.6Einfache SQL-Anfragen110
4.7Anfragen über mehrere Relationen111
4.8Aggregatfunktionen und Gruppierung114
4.9Geschachtelte Anfragen115
4.10Quantifizierte Anfragen in SQL120
4.11Nullwerte122
4.12Spezielle Sprachkonstrukte123
4.13Joins in SQL-92125
4.14Rekursion125
4.15Veränderungen am Datenbestand130
4.16Sichten132
4.17Sichten zur Modellierung von Generalisierungen133
4.18Charakterisierung update-fähiger Sichten135
4.19Einbettung von SQL in Wirtssprachen136
4.20Anfragen in Anwendungsprogrammen137
4.21JDBC: Java Database Connectivity140
4.21.1Verbindungsaufbau zu einer Datenbank141
4.21.2Resultset-Programmbeispiel143
4.21.3Vorübersetzung von SQL-Ausdrücken145
4.22SQLJ: Eine Einbettung von SQL in Java145
4.23Query by Example148
4.24Übungen150
4.25Literatur153

5Datenintegrität155
5.1Referentielle Integrität156
5.2Gewährleistung referentieller Integrität156
5.3Referentielle Integrität in SQL157
5.4Überprüfung statischer Integritätsbedingungen158
5.5Das Universitätsschema mit Integritätsbedingungen160
5.6Komplexere Integritätsbedingungen162
5.7Trigger163
5.8Übungen165
5.9Literatur166

6Relationale Entwurfstheorie167
6.1Funktionale Abhängigkeiten167
6.1.1Konventionen zur Notation168
6.1.2Einhaltung einer funktionalen Abhängigkeit168
6.2Schlüssel169
6.3Bestimmung funktionaler Abhängigkeiten170
6.3.1Kanonische Überdeckung173
6.4`Schlechte' Relationenschemata174
6.4.1Die Updateanomalien174
6.4.2Einfügeanomalien175
6.4.3Löschanomalien175
6.5Zerlegung (Dekomposition) von Relationen175
6.5.1Verlustlosigkeit176
6.5.2Kriterien für die Verlustlosigkeit einer Zerlegung178
6.5.3Abhängigkeitsbewahrung179
6.6Erste Normalform181
6.7Zweite Normalform182
6.8Dritte Normalform184
6.9Boyce-Codd Normalform186
6.10Mehrwertige Abhängigkeiten189
6.11Vierte Normalform191
6.12Zusammenfassung193
6.13Übungen194
6.14Literatur197

7Physische Datenorganisation199
7.1Speichermedien199
7.2Speicherarrays: RAID200
7.3Der Datenbankpuffer204
7.4Abbildung von Relationen auf den Sekundärspeicher206
7.5Indexstrukturen207
7.6ISAM209
7.7B-Bäume211
7.8$\unhbox \voidb@x \hbox {B}^+\mskip -\thinmuskip $-Bäume215
7.9Präfix-$\unhbox \voidb@x \hbox {B}^+\mskip -\thinmuskip $-Bäume216
7.10Hashing217
7.11Erweiterbares Hashing219
7.12Mehrdimensionale Indexstrukturen221
7.13Ballung logisch verwandter Datensätze225
7.14Unterstützung eines Anwendungsverhaltens227
7.15Physische Datenorganisation in SQL229
7.16Übungen229
7.17Literatur231

8Anfragebearbeitung233
8.1Logische Optimierung234
8.1.1Äquivalenzen in der relationalen Algebra236
8.1.2Anwendung der Transformationsregeln238
8.2Physische Optimierung242
8.2.1Implementierung der Selektion244
8.2.2Implementierung von binären Zuordnungsoperatoren244
8.2.3Gruppierung und Duplikateliminierung251
8.2.4Projektion und Vereinigung252
8.2.5Zwischenspeicherung252
8.2.6Übersetzung der logischen Algebra254
8.3Kostenmodelle257
8.3.1Selektivitäten258
8.3.2Kostenabschätzung für die Selektion260
8.3.3Kostenabschätzung für den Join261
8.3.4Kostenabschätzung für die Sortierung261
8.4`Tuning' von Datenbankanfragen262
8.5Übungen263
8.6Literatur266

9Transaktionsverwaltung269
9.1Begriffsbildung269
9.2Anforderungen an die Transaktionsverwaltung270
9.3Operationen auf Transaktions-Ebene270
9.4Abschluss einer Transaktion271
9.5Eigenschaften von Transaktionen273
9.6Transaktionsverwaltung in SQL274
9.7Zustandsübergänge einer Transaktion275
9.8Literatur276

10Fehlerbehandlung277
10.1Fehlerklassifikation277
10.1.1Lokaler Fehler einer Transaktion277
10.1.2Fehler mit Hauptspeicherverlust278
10.1.3Fehler mit Hintergrundspeicherverlust279
10.2Die Speicherhierarchie279
10.2.1Ersetzung von Puffer-Seiten279
10.2.2Einbringen von Änderungen einer Transaktion280
10.2.3Einbringstrategie281
10.2.4Hier zugrunde gelegte Systemkonfiguration282
10.3Protokollierung von Änderungsoperationen282
10.3.1Struktur der Log-Einträge283
10.3.2Beispiel einer Log-Datei283
10.3.3Logische oder physische Protokollierung283
10.3.4Schreiben der Log-Information284
10.3.5Das WAL-Prinzip286
10.4Wiederanlauf nach einem Fehler286
10.4.1Analyse des Logs287
10.4.2Redo-Phase288
10.4.3Undo-Phase288
10.5Fehlertoleranz des Wiederanlaufs288
10.6Lokales Zurücksetzen einer Transaktion290
10.7Partielles Zurücksetzen einer Transaktion291
10.8Sicherungspunkte292
10.8.1Transaktionskonsistente Sicherungspunkte292
10.8.2Aktionskonsistente Sicherungspunkte293
10.8.3Unscharfe (fuzzy) Sicherungspunkte295
10.9Recovery nach einem Verlust der materialisierten Datenbasis296
10.10Übungen297
10.11Literatur298

11Mehrbenutzersynchronisation299
11.1Fehler bei unkontrolliertem Mehrbenutzerbetrieb300
11.1.1Verlorengegangene Änderungen (lost update)300
11.1.2Abhängigkeit von nicht freigegebenen Änderungen300
11.1.3Phantomproblem301
11.2Serialisierbarkeit301
11.2.1Beispiele serialisierbarer Ausführungen (Historien)302
11.2.2Nicht serialisierbare Historie302
11.3Theorie der Serialisierbarkeit305
11.3.1Definition einer Transaktion305
11.3.2Historie (Schedule)306
11.3.3Äquivalenz zweier Historien307
11.3.4Serialisierbare Historien308
11.3.5Kriterien für Serialisierbarkeit308
11.4Eigenschaften von Historien bezüglich der Recovery310
11.4.1Rücksetzbare Historien310
11.4.2Historien ohne kaskadierendes Rücksetzen310
11.4.3Strikte Historien311
11.4.4Beziehungen zwischen den Klassen von Historien311
11.5Der Datenbank-Scheduler312
11.6Sperrbasierte Synchronisation313
11.6.1Zwei Sperrmodi313
11.6.2Zwei-Phasen-Sperrprotokoll314
11.6.3Kaskadierendes Rücksetzen (Schneeballeffekt)316
11.7Verklemmungen (Deadlocks)316
11.7.1Erkennung von Verklemmungen317
11.7.2Preclaiming zur Vermeidung von Verklemmungen318
11.7.3Verklemmungsvermeidung durch Zeitstempel319
11.8Hierarchische Sperrgranulate320
11.9Einfüge- und Löschoperationen, Phantome324
11.10Zeitstempel-basierende Synchronisation325
11.11Optimistische Synchronisation327
11.12Synchronisation von Indexstrukturen328
11.13Mehrbenutzersynchronisation in SQL-92331
11.14Übungen333
11.15Literatur336

12Sicherheitsaspekte337
12.1Discretionary Access Control339
12.2Zugriffskontrolle in SQL339
12.2.1Identifikation und Authentisierung340
12.2.2Autorisierung und Zugriffskontrolle340
12.2.3Sichten341
12.2.4Individuelle Sicht für eine Benutzergruppe342
12.2.5Auditing343
12.3Verfeinerung des Autorisierungsmodells343
12.3.1Rollenbasierte Autorisierung: Implizite Autorisierung von Subjekten344
12.3.2Implizite Autorisierung von Operationen346
12.3.3Implizite Autorisierung von Objekten346
12.3.4Implizite Autorisierung entlang einer Typhierarchie347
12.4Mandatory Access Control348
12.5Multilevel-Datenbanken349
12.6Kryptographie352
12.6.1Der Data Encryption Standard353
12.6.2Public-Key Kryptographie354
12.6.3Public Key Infrastruktur (PKI)356
12.7Zusammenfassung356
12.8Übungen357
12.9Literatur358

13Objektorientierte Datenbanken359
13.1Bestandsaufnahme relationaler Datenbanksysteme359
13.2Vorteile der objektorientierten Datenmodellierung363
13.3Der ODMG-Standard364
13.4Eigenschaften von Objekten365
13.4.1Objektidentität366
13.4.2Typ eines Objekts367
13.4.3Wert eines Objekts367
13.5Definition von Objekttypen368
13.5.1Attribute368
13.5.2Beziehungen368
13.5.3Typeigenschaften: Extensionen und Schlüssel375
13.6Modellierung des Verhaltens: Operationen375
13.7Vererbung und Subtypisierung378
13.7.1Terminologie378
13.7.2Einfache und Mehrfachvererbung379
13.8Beispiel einer Typhierarchie380
13.9Verfeinerung (Spezialisierung) und spätes Binden von Operationen383
13.10Mehrfachvererbung386
13.11Die Anfragesprache OQL387
13.11.1Einfache Anfragen387
13.11.2Geschachtelte Anfragen und Partitionierung388
13.11.3Pfadausdrücke389
13.11.4Erzeugung von Objekten390
13.11.5Operationsaufruf390
13.12C++-Einbettung390
13.12.1Objektidentität392
13.12.2Objekterzeugung und Ballung393
13.12.3Einbettung von Anfragen393
13.13Übungen394
13.14Literatur395

14Erweiterbare und objekt-relationale Datenbanken397
14.1Übersicht über die objekt-relationalen Konzepte397
14.2Large Objects (LOBs)398
14.3Distinct Types: Einfache benutzerdefinierte Datentypen400
14.4Table Functions404
14.4.1Nutzung einer \textit {Table Function} in Anfragen405
14.4.2Implementierung einer \textit {Table Function}405
14.5Benutzerdefinierte strukturierte Objekttypen407
14.6Geschachtelte Objekt-Relationen411
14.7Vererbung von SQL-Objekttypen415
14.8Komplexe Attribut-Typen418
14.9Übungen419
14.10Literatur420

15Deduktive Datenbanken421
15.1Terminologie421
15.2Datalog421
15.3Eigenschaften von Datalog-Programmen425
15.3.1Rekursivität425
15.3.2Sicherheit von Datalog-Regeln425
15.4Auswertung von nicht-rekursiven Datalog-Programmen426
15.4.1Auswertung eines Beispielprogramms426
15.4.2Auswertungs-Algorithmus429
15.5Auswertung rekursiver Regeln431
15.6Inkrementelle (semi-naive) Auswertung rekursiver Regeln433
15.7Bottom-Up oder Top-Down Auswertung437
15.8Negation im Regelrumpf439
15.8.1Stratifizierte Datalog-Programme439
15.8.2Auswertung von Regeln mit Negation440
15.8.3Ein etwas komplexeres Beispiel441
15.9Ausdruckskraft von Datalog441
15.10Übungen443
15.11Literatur447

16Verteilte Datenbanken449
16.1Terminologie und Abgrenzung449
16.2Entwurf verteilter Datenbanken451
16.3Horizontale und vertikale Fragmentierung453
16.3.1Horizontale Fragmentierung454
16.3.2Abgeleitete horizontale Fragmentierung456
16.3.3Vertikale Fragmentierung457
16.3.4Kombinierte Fragmentierung459
16.3.5Allokation für unser Beispiel460
16.4Transparenz in verteilten Datenbanken461
16.4.1Fragmentierungstransparenz461
16.4.2Allokationstransparenz462
16.4.3Lokale Schema-Transparenz462
16.5Anfrageübersetzung und -optimierung in VDBMS463
16.5.1Anfragebearbeitung bei horizontaler Fragmentierung463
16.5.2Anfragebearbeitung bei vertikaler Fragmentierung465
16.6Join-Auswertung in VDBMS467
16.6.1Join-Auswertung ohne Filterung467
16.6.2Join-Auswertung mit Filterung468
16.7Transaktionskontrolle in VDBMS471
16.8Mehrbenutzersynchronisation in VDBMS476
16.8.1Serialisierbarkeit476
16.8.2Das Zwei-Phasen-Sperrprotokoll in VDBMS476
16.9Deadlocks in VDBMS477
16.9.1Erkennung von Deadlocks477
16.9.2Deadlock-Vermeidung480
16.10Synchronisation bei replizierten Daten481
16.11Übungen484
16.12Literatur487

17Betriebliche Anwendungen: OLTP, Data Warehouse, Data Mining489
17.1SAP R/3: Ein betriebswirtschaftliches Datenbankanwendungssystem489
17.1.1Architektur von SAP R/3489
17.1.2Datenmodell und Schema von SAP R/3490
17.1.3ABAP/4491
17.1.4Transaktionen in SAP R/3494
17.2Data Warehouse, Decision-Support, OLAP495
17.2.1Datenbankentwurf für das Data Warehouse496
17.2.2Anfragen im Sternschema: Star Join499
17.2.3Roll-Up/Drill-Down-Anfragen500
17.2.4Flexible Auswertungsmethoden502
17.2.5Materialisierung von Aggregaten502
17.2.6Der cube-Operator504
17.2.7Wiederverwendung materialisierter Aggregate504
17.2.8Bitmap-Indices für OLAP-Anfragen507
17.2.9Auswertungsalgorithmen für komplexe OLAP-Anfragen508
17.2.10Data Warehouse-Architekturen510
17.3Data Mining511
17.3.1Klassifikation von Objekten512
17.3.2Assoziationsregeln513
17.3.3Der Á Priori-Algorithmus514
17.3.4Bestimmung der Assoziationsregeln516
17.3.5Cluster-Bestimmung517
17.4Übungen518
17.5Literatur519

18Internet-Datenbankanbindungen521
18.1HTML- und HTTP-Grundlagen521
18.1.1HTML: Die Hypertext-Sprache des World Wide Web521
18.1.2Adressierung von Web-Dokumenten522
18.1.3Client/Server-Architektur des World Wide Web524
18.1.4HTTP: Das HyperText Transfer Protokoll524
18.1.5HTTPS525
18.2Web-Datenbank-Anbindung via Servlets526
18.2.1Beispiel-Servlet526
18.3Java Server Pages / Active Server Pages532
18.3.1JSP/HTML-Seite mit Java-Code533
18.3.2HTML-Seite mit Java-Bean-Aufruf535
18.3.3Die Java-Bean Komponente VorlesungenBean536
18.3.4Sokrates' Homepage538
18.4Datenbankanbindung via Java-Applets538
18.5Übungen539
18.6Literatur540

19XML-Datenmodellierung und Web-Services541
19.1XML-Datenmodellierung541
19.1.1Schema oder kein Schema542
19.1.2Rekursive Schemata544
19.1.3Universitätsinformation in XML-Format544
19.1.4XML-Namensräume546
19.1.5XML Schema: Eine Schemadefinitionssprache548
19.1.6Verweise (Referenzen) in XML-Daten550
19.2XQuery: Eine XML-Anfragesprache551
19.2.1Pfadausdrücke551
19.2.2Verkürzte XPath-Syntax556
19.2.3Beispiel-Pfadausdrücke in verkürzter Syntax557
19.2.4Anfragesyntax von XQuery558
19.2.5Geschachtelte Anfragen560
19.2.6Joins in XQuery560
19.2.7Join-Prädikat im Pfadausdruck561
19.2.8Das let-Konstrukt562
19.2.9Dereferenzierung in FLWOR-Ausdrücken563
19.2.10Rekursive Anfragen565
19.3Zusammenspiel von relationalen Datenbanken und XML567
19.3.1XML-Repräsentation gemäß Pre- und Postorder-Rängen573
19.3.2Der neue Datentyp xml577
19.3.3Änderungen der XML-Dokumente581
19.3.4Publikation relationaler Daten als XML-Dokumente582
19.4Web-Services586
19.4.1Erstellen und Nutzen eines Web-Services im Überblick588
19.4.2Das Auffinden von Diensten591
19.4.3Ein Beispiel-Web-Service593
19.4.4Definition der Web-Service-Schnittstellen593
19.4.5Nachrichtenformat für die Interaktion mit Web-Services596
19.4.6Implementierung des Web-Services598
19.4.7Aufruf des Web-Services599
19.5Übungen601
19.6Literatur604

20Leistungsbewertung607
20.1Überblick über Datenbanksystem-Benchmarks607
20.2Der TPC-C Benchmark607
20.3Die TPC-H und TPC-R (früher TPC-D) Benchmarks610
20.4Der OO7 Benchmark für oo-Datenbanken616
20.5Der TPC-W Benchmark617
20.6Übungen620
20.7Literatur620

Literaturverzeichnis621

Index657

Lehrstuhl für Datenbanksysteme
Letzte Änderung: 05.04.2006 um 17:16:46