Vorwort zur sechsten Auflage | 5 |
Inhaltsverzeichnis | 11 |
Grundlegende Konzepte | 25 |
Motivation und Historie | 25 |
Komponenten und Funktionen | 31 |
Prinzipien und Aufgaben | 32 |
Einsatzgebiete, Grenzen und Entwicklungstendenzen | 34 |
Wann kommt was? | 37 |
Beispielanwendung | 38 |
Vertiefende Literatur | 40 |
Übungsaufgaben | 40 |
Relationale Datenbanken – Daten in Tabellen | 41 |
Relationen für tabellarische Daten | 41 |
Begriffe im Relationenmodell | 42 |
Integritätsbedingungen: Schlüssel | 43 |
Integritätsbedingungen: Fremdschlüssel | 44 |
Datendefinition in SQL | 45 |
Mögliche Wertebereiche in SQL | 46 |
Beispiele für die Datendeklaration | 46 |
Nullwerte | 47 |
Grundoperationen: Die Relationenalgebra | 47 |
Selektion | 48 |
Projektion | 49 |
Natürlicher Verbund | 49 |
Umbenennung | 51 |
Mengenoperationen | 51 |
Qualität entworfener Tabellen | 52 |
SQL als Anfragesprache | 55 |
Änderungsoperationen in SQL | 57 |
Die update-Anweisung | 57 |
Die delete-Anweisung | 59 |
Die insert-Anweisung | 60 |
Sichten in SQL | 61 |
Wie geht es weiter? | 61 |
Übungsaufgaben | 62 |
I Kernkonzepte relationaler Datenbanken | 63 |
Architekturen von Datenbanksystemen | 65 |
Schemaarchitektur und Datenunabhängigkeit | 66 |
Systemarchitekturen | 71 |
ANSI-SPARC-Architektur | 71 |
Der Weg einer Anfrage | 74 |
Fünf-Schichten-Architektur | 76 |
Konkrete Systemarchitekturen | 79 |
Anwendungsarchitekturen | 83 |
Zusammenfassung | 87 |
Vertiefende Literatur | 87 |
Übungsaufgaben | 88 |
Das Entity-Relationship-Modell | 91 |
Datenbankmodelle | 91 |
Grundlagen des Entity-Relationship-Modells | 98 |
Grundkonzepte des klassischen ER-Modells | 98 |
Ein einfaches Beispiel für ein ER-Schema | 105 |
Semantik eines ER-Schemas | 107 |
Eigenschaften von Beziehungen | 107 |
Stelligkeit | 108 |
Kardinalitäten und funktionale Beziehungen | 111 |
Kardinalitäten in der klassischen Chen-Notation | 114 |
Kardinalitäten in funktionaler Notation | 115 |
Kardinalitäten in Intervallnotation | 116 |
Weitere Konzepte im Entity-Relationship-Modell | 121 |
Abhängige Entity-Typen | 122 |
Die ist-Beziehung | 123 |
Optionalität von Attributen | 125 |
Zusammenfassung | 126 |
Vertiefende Literatur | 126 |
Übungsaufgaben | 127 |
Relationenmodell und Relationenalgebra | 129 |
Relationenmodell: Strukturteil | 129 |
Schemata und Instanzen | 130 |
Integritätsbedingungen | 134 |
Relationenalgebra: Operationenteil | 138 |
Kriterien für Anfragesprachen | 139 |
Relationenalgebra | 140 |
Änderungsoperationen | 151 |
Allgemeine Grundprinzipien | 152 |
Relationale Änderungsoperationen | 153 |
Zusammenfassung | 154 |
Vertiefende Literatur | 154 |
Übungsaufgaben | 154 |
Phasen des Datenbankentwurfs | 159 |
Entwurfsaufgabe | 159 |
Phasenmodell | 162 |
Anforderungsanalyse | 164 |
Konzeptioneller Entwurf | 165 |
Verteilungsentwurf | 167 |
Logischer Entwurf | 168 |
Datendefinition | 170 |
Physischer Entwurf | 170 |
Implementierung und Wartung | 171 |
Objektorientierte Entwurfsmethoden | 171 |
Phasenbegleitende Methoden | 172 |
Aspekte der Datenintegration | 172 |
Heterogenität der Datenmodelle | 173 |
Heterogene Datenbankschemata | 173 |
Heterogenität auf der Datenebene | 174 |
Schemakonflikte bei der Integration | 175 |
Entity-Relationship-Abbildung auf das Relationenmodell | 176 |
Informationskapazität | 177 |
Beispiel für eine Abbildung auf das Relationenmodell | 179 |
Abbildungsregeln für das relationale Modell | 180 |
Zusammenfassung | 189 |
Vertiefende Literatur | 189 |
Übungsaufgaben | 190 |
Relationaler Datenbankentwurf | 191 |
Funktionale Abhängigkeiten | 193 |
Definition funktionaler Abhängigkeiten | 193 |
Ableitung von funktionalen Abhängigkeiten | 195 |
Schemaeigenschaften | 201 |
Änderungsanomalien | 201 |
Normalformen | 203 |
Minimalität | 210 |
Transformationseigenschaften | 211 |
Abhängigkeitstreue | 211 |
Verbundtreue | 213 |
Entwurfsverfahren | 216 |
Ziele | 216 |
Dekompositionsverfahren | 217 |
Ausblick Syntheseverfahren | 221 |
Zusammenfassung | 222 |
Vertiefende Literatur | 222 |
Übungsaufgaben | 222 |
Die relationale Datenbanksprache SQL | 225 |
SQL als Datendefinitionssprache | 226 |
Erzeugen von Tabellen | 227 |
Tabellen mit Integritätsbedingungen | 231 |
Löschen und Ändern von Tabellendefinitionen | 232 |
Erzeugen und Löschen von Indexen | 234 |
SQL als relationale Anfragesprache | 235 |
Überblick | 236 |
Die from-Klausel | 237 |
Die select-Klausel | 240 |
Die where-Klausel | 242 |
Mengenoperationen | 246 |
Schachtelung von Anfragen | 247 |
Mächtigkeit des SQL-Kerns | 253 |
Änderungsoperationen in SQL | 254 |
Übersicht über Änderungen in SQL | 255 |
Die update-Anweisung | 255 |
Die delete-Anweisung | 257 |
Die insert-Anweisung | 258 |
Die merge-Anweisung | 259 |
Probleme bei SQL-Änderungen | 260 |
Zusammenfassung | 261 |
Vertiefende Literatur | 261 |
Übungsaufgaben | 262 |
II Erweiterte Konzepte für relationale Datenbanken | 265 |
Erweiterter relationaler Datenbankentwurf | 267 |
Überdeckungen von funktionalen Abhängigkeiten | 268 |
Nicht-redundante Überdeckung | 269 |
Reduzierte Überdeckung | 271 |
Bildung von Äquivalenzklassen | 273 |
Minimale Überdeckung | 274 |
Ringförmige Überdeckung | 275 |
Syntheseverfahren | 276 |
Ablauf der Synthese | 277 |
Erreichung der Verbundtreue | 279 |
Verfeinerung des Entity-Relationship-Datenbankentwurfs | 280 |
Mehrwertige Abhängigkeiten | 281 |
Grundlagen | 281 |
Schemaeigenschaften | 284 |
Transformationseigenschaften | 286 |
Weitere Abhängigkeiten und Normalformen | 286 |
Verbundabhängigkeiten | 286 |
Inklusionsabhängigkeiten | 287 |
Weitere relationale Entwurfsverfahren | 288 |
Weitere Anwendungen der relationalen Theorie | 289 |
Zusammenfassung | 290 |
Vertiefende Literatur | 291 |
Übungsaufgaben | 292 |
Grundlagen von relationalen Anfragen | 293 |
Erweiterungen der Relationenalgebra | 293 |
Anfragekalküle | 297 |
Ein allgemeiner Kalkül | 297 |
Ergebnisbestimmung einer Anfrage | 299 |
Tupelkalkül | 300 |
Definition des Tupelkalküls | 300 |
Beispielanfragen im Tupelkalkül | 301 |
Bezug zu SQL | 302 |
Bereichskalkül | 304 |
Sichere Anfragen | 306 |
Beispielanfragen im Bereichskalkül | 307 |
Eigenschaften des Bereichskalküls | 309 |
Relationenalgebraoperationen im Bereichskalkül | 309 |
Zusammenfassung | 310 |
Vertiefende Literatur | 310 |
Übungsaufgaben | 312 |
Erweiterte Konzepte von SQL | 315 |
Weitere Operationen und Prädikate | 315 |
Skalare Ausdrücke | 315 |
Prädikate | 321 |
Quantoren und Mengenvergleiche | 321 |
Behandlung von Nullwerten | 324 |
Aggregation, Gruppierung und Sortierung | 326 |
Aggregatfunktionen | 326 |
Gruppierung | 329 |
Sortierung | 332 |
Erweiterte Aggregatfunktionen in SQL:2003 | 333 |
Top-k-Anfragen | 338 |
Skyline-Anfragen | 341 |
Äußere Verbunde | 342 |
Künstliche Schlüssel und Sequenzgeneratoren | 344 |
Benannte Anfragen und Rekursion | 346 |
Benannte Anfragen | 346 |
Rekursive Anfragen | 347 |
Erkennung von Tupelmustern | 355 |
SQL-Versionen | 359 |
SEQUEL2 | 359 |
SQL-89 | 361 |
SQL-92 | 361 |
SQL:1999 und SQL:2003 | 363 |
SQL:2006 und SQL:2008 | 365 |
SQL:2011 und SQL:2016 | 365 |
Zusammenfassung | 368 |
Vertiefende Literatur | 368 |
Übungsaufgaben | 368 |
Weitere relationale Datenbanksprachen | 373 |
QUEL | 374 |
Anfragen in QUEL | 374 |
Änderungsoperationen in QUEL | 377 |
Query by Example | 377 |
Anfragen in QBE | 378 |
Funktionen, Sortierung und Aggregierung in QBE | 382 |
Formale Semantik von QBE | 383 |
Ausdrucksfähigkeit von QBE | 384 |
Änderungen in QBE | 385 |
Anfragen in MS Access | 387 |
Datalog | 391 |
Grundbegriffe | 391 |
Semantik rekursiver Regeln | 393 |
Semantik und Auswertung von Datalog | 394 |
Zusammenfassung | 395 |
Vertiefende Literatur | 396 |
Übungsaufgaben | 396 |
Transaktionen, Integrität & Trigger | 397 |
Grundlagen von Transaktionen | 398 |
ACID-Prinzip | 398 |
Probleme im Mehrbenutzerbetrieb | 400 |
Transaktionssteuerung in SQL | 405 |
Transaktionen und Integritätssicherung | 408 |
Architekturen zur Integritätssicherung | 409 |
Integritätssicherung durch Anwendung | 410 |
Integritätsmonitor als Komponente des DBMS | 410 |
Integritätssicherung durch Einkapselung | 411 |
Integritätsbedingungen in SQL | 412 |
Inhärente Integritätsbedingungen im Relationenmodell | 413 |
Weitere Bedingungen in der SQL-DDL | 413 |
Die assertion-Klausel | 414 |
Verwaltung und Überprüfung von Bedingungen | 415 |
Klassifikation von Integritätsbedingungen | 416 |
Trigger | 418 |
Methoden der Integritätssicherung | 421 |
Integritätssicherung durch Trigger | 422 |
Integritätssicherung durch Anfragemodifikation | 424 |
Zusammenfassung | 425 |
Vertiefende Literatur | 426 |
Übungsaufgaben | 427 |
Datenbankanwendungsentwicklung | 429 |
Grundprinzipien | 430 |
Programmiersprachenanbindung: Call-Level-Schnittstellen | 432 |
SQL/CLI: Der Standard | 433 |
ODBC | 436 |
JDBC | 437 |
Weitere Call-Level-Schnittstellen | 442 |
Eingebettetes SQL | 443 |
Statische Einbettung: Embedded SQL | 444 |
Dynamische Einbettung: Dynamic SQL | 451 |
SQLJ: Embedded SQL für Java | 452 |
High-Level-Schnittstellen | 454 |
Persistenz von Objekten | 455 |
Grundlagen der Abbildung | 456 |
JPA und Hibernate | 459 |
Weitere Technologien | 467 |
Prozedurale SQL-Erweiterungen und Datenbanksprachen | 468 |
Vorteile von gespeicherten Prozeduren | 469 |
SQL/PSM: Der Standard | 470 |
PL/SQL von Oracle | 477 |
Gespeicherte Prozeduren in Java | 479 |
Anwendungsentwicklung in der Cloud | 482 |
Database-as-a-Service und Cloud-Datenbanken | 483 |
Klassische DBMS in der Cloud | 484 |
NoSQL-Systeme in der Cloud | 485 |
Zusammenfassung | 485 |
Vertiefende Literatur | 487 |
Übungsaufgaben | 487 |
Sichten | 489 |
Motivation und Begriffsbildung | 490 |
Sichten und externe Schemata | 491 |
Definition von Sichten | 491 |
Definition von Sichten in SQL | 492 |
Vorteile von Sichten | 493 |
Probleme mit Sichten | 494 |
Kriterien für Änderungen auf Sichten | 495 |
Projektionssichten | 496 |
Selektionssichten | 498 |
Verbundsichten | 499 |
Aggregierungssichten | 501 |
Klassifikation der Problembereiche | 502 |
Behandlung von Sichten in SQL | 503 |
Auswertung von Anfragen an Sichten in SQL | 504 |
Sichtänderungen in SQL-92 | 505 |
Sichtänderungen ab SQL:2003 | 506 |
Theorie änderbarer Sichten | 508 |
Instead-of-Trigger für Sichtänderungen | 510 |
Zusammenfassung | 513 |
Vertiefende Literatur | 513 |
Übungsaufgaben | 515 |
Zugriffskontrolle & Privacy | 517 |
Sicherheitsmodelle | 519 |
Diskrete Sicherheitsmodelle | 519 |
Verbindliche Sicherheitsmodelle | 519 |
Rechtevergabe in SQL | 520 |
Benutzer und Schemata | 521 |
Rechtevergabe in SQL | 521 |
Zurücknahme von Rechten | 523 |
Rollenmodell in SQL:2003 | 524 |
Auditing | 524 |
Authentifikation und Autorisierung | 526 |
Privacy-Aspekte in Datenbanken | 526 |
Statistische Datenbanken | 527 |
Quasi-Identifikator | 529 |
k-Anonymität | 530 |
l-Diversität, t-Closeness, Differential Privacy | 531 |
Datensparsame Anfrageverarbeitung | 532 |
Zusammenfassung | 535 |
Vertiefende Literatur | 536 |
Übungsaufgaben | 536 |
III Erweiterte Datenbankmodelle und -techniken | 539 |
Multimediale Daten | 541 |
Multimedia-Datenbanken | 542 |
Grundbegriffe | 542 |
Grundlagen des Multimedia Retrieval | 546 |
Text Retrieval | 553 |
Information Retrieval auf Texten | 553 |
Grundtechniken des Text Retrieval | 553 |
Deskribierung | 555 |
Recherche | 558 |
Ranking | 563 |
Information-Retrieval-Systeme | 566 |
SQL/MM | 567 |
SQL/MM Full Text | 568 |
SQL/MM Still Image | 570 |
Der Datentyp Video | 571 |
SQL/MM Spatial | 572 |
Zusammenfassung | 572 |
Vertiefende Literatur | 572 |
Übungsaufgaben | 574 |
Räumliche und temporale Daten | 575 |
Verwaltung raumbezogener Daten | 575 |
Grundbegriffe | 576 |
Modellierung raumbezogener Daten | 578 |
Prädikate und Anfragen auf raumbezogenen Daten | 583 |
Oracle Spatial | 590 |
Weitere Systeme | 593 |
Temporale Daten | 594 |
Grundbegriffe | 595 |
Umsetzung in SQL | 596 |
Temporale Schlüssel, Fremdschlüssel und Anfragen | 598 |
Weitere Entwicklung und Einordnung | 600 |
Zusammenfassung | 601 |
Vertiefende Literatur | 602 |
Übungsaufgaben | 603 |
Objektorientierte und objektrelationale Modelle | 605 |
Exkurs: Objektorientierte Datenbankmodelle | 605 |
Abbildung von Objekten auf Relationen | 607 |
Typkonstruktoren | 608 |
Abbildung der Spezialisierungshierarchie | 609 |
Objektrelationale Erweiterungen | 611 |
Large Objects: BLOB und CLOB | 612 |
Typkonstruktoren | 612 |
Identitäten, Referenzen und Pfadausdrücke | 617 |
Hierarchien und Vererbung | 617 |
Methoden | 619 |
Objektrelationale Konzepte in SQL:2003 | 619 |
Typsystem und DDL | 620 |
Anfragen | 627 |
Methoden in SQL:2003 | 630 |
Zusammenfassung | 631 |
Vertiefende Literatur | 631 |
Übungsaufgaben | 632 |
XML, XQuery und SQL/XML | 633 |
Semistrukturierte Datenmodelle | 633 |
Merkmale semistrukturierter Datenmodelle | 634 |
Datenmodelle für semistrukturierte Dokumente | 635 |
XML | 638 |
Bausteine von XML | 638 |
Verarbeitung von XML | 641 |
Datendefinition in XML | 644 |
Dokumenttypdefinition | 644 |
XML Schema | 648 |
XML-Abbildung auf relationale Schemata | 653 |
Navigation in XML-Dokumenten: XPath | 654 |
Pfadausdrücke und Lokalisierungsschritte | 655 |
Selektionsprädikate und Funktionen | 659 |
Die Anfragesprache XQuery | 661 |
FLWOR-Ausdrücke | 662 |
Elementkonstruktoren | 665 |
Verbunde und Gruppierungen | 667 |
Ausdrücke und Vergleiche | 671 |
Funktionen | 674 |
SQL/XML: XML-Erweiterungen für SQL | 676 |
XML-Datentypen | 676 |
XML-Konstruktion mit SQL | 678 |
Zusammenfassung | 682 |
Vertiefende Literatur | 683 |
Übungsaufgaben | 684 |
NoSQL-Datenbanken | 685 |
Exkurs: Big Data | 686 |
Motivation für NoSQL | 689 |
KV-Stores und das Wide-Column-Datenmodell | 691 |
Datenmodell: Key-Value-Stores | 691 |
Datenmodell: Wide Column | 692 |
Document Stores | 695 |
Das JSON-Format | 695 |
Anfragen bei dokumentenorientierter Speicherung | 696 |
Datenrepräsentation und Anfragen in MongoDB | 697 |
NewSQL – relationale Datenbanken schlagen zurück | 705 |
Zusammenfassung | 709 |
Vertiefende Literatur | 710 |
Übungsaufgaben | 711 |
Graph-Datenbanken | 713 |
Graph-Datenmodelle: Grundlagen | 713 |
Repräsentation von Graphstrukturen | 714 |
Operationen und Anfragen auf Graphen | 715 |
Das Resource Description Framework | 716 |
Das RDF-Modell | 718 |
RDF-Repräsentationen | 721 |
RDF Schema und Vokabulare | 725 |
Die RDF-Anfragesprache SPARQL | 729 |
Grundlagen | 730 |
SPARQL-Elemente | 731 |
Aggregation und Gruppierung | 738 |
Weitere Anfragetypen | 738 |
Updates | 739 |
Property-Graph-Modelle | 741 |
Anfragen in Cypher | 744 |
Anfragen in Gremlin | 750 |
Zusammenfassung | 756 |
Vertiefende Literatur | 757 |
Übungsaufgaben | 758 |
Laufendes Beispiel | 759 |
ER-Schema der Weindatenbank | 759 |
Relationale Repräsentation | 760 |
Vereinfachtes Schema und Beispieldaten | 761 |
Zusätzliche Kapitel | 763 |
Historische Modelle | 763 |
Erweiterte Entwurfsmodelle | 764 |
Erweiterte Modelle und Anfragealgebren | 764 |
Objektorientierte und objektrelationale Modelle inklusive SQL:2003 | 764 |
Tutorial D | 765 |
ECA-Regeln und aktive Datenbanken | 765 |
Grundlegende Datenbanktechniken | 765 |
SQL/JSON | 766 |
Literaturverzeichnis | 767 |
Sachindex | 767 |