cover

Gunter Saake
Kai-Uwe Sattler
Andreas Heuer

Datenbanken

Konzepte und Sprachen

Sechste Auflage

image

Vorwort zur sechsten Auflage

Datenbanken sind nach Softwaretechnik das wichtigste Teilgebiet der Fachrichtung Informatik. In einer aktuellen Umfrage der Gesellschaft für Informatik (GI) bezeichnen sich 30,32 Prozent der Informatiker als Datenbänker1, der stärkste Wert nach dem Gebiet Softwaretechnik mit 33,39 Prozent. Selbst dem Fachgebiet Wirtschaftsinformatik ordnen sich weniger GI-Mitglieder zu (24,54 Prozent). Und weitere Gebiete wie Technische Informatik (11,44 Prozent), Künstliche Intelligenz (8,68 Prozent) und Computergraphik (4,38 Prozent) sind weit abgehängt.

Datenbanken, genauer das Gebiet der Verwaltung großer Mengen strukturierter Daten, ist auch eines der alten, klassischen Gebiete der Informatik. Datenbanksysteme gibt es auf heutzutage veralteten Datenbankmodellen wie dem hierarchischen und Netzwerk-Modell seit den sechziger Jahren, das derzeit immer noch verbreitetste relationale Datenbankmodell ist bereits in den siebziger Jahren in der Forschung und dann in den achtziger Jahren in Form von kommerziellen Datenbank-Management-Systemen eingeführt worden. Die auch aus den siebziger Jahren stammende Datenbanksprache SQL ist immer noch intergalactic dataspeak, also die Standardsprache für die Verwaltung strukturierter Daten. Analysiert man große Online-Stellenportale wie das von Monster, so ist SQL nach Java und fast gleichauf mit C++ die drittgefragteste Sprache der Informatik — weit vor Python und anderen modernen Programmiersprachen und weit vor anderen Daten- und Dokumentbeschreibungssprachen wie XML und JSON.

Datenbanken hatte man aufgrund der langen Vorgeschichte im neuen Jahrtausend sowohl als Forschungsgebiet als auch als modernes Lehrgebiet in der Informatik den schleichenden Tod vorausgesagt: Relationale Datenbanksysteme waren nun einmal einfach da, veränderten sich kaum noch, gehörten zur Folklore für Informatiker. Das Kerngebiet der Informatik schien aus der Mode zu kommen.

Aber plötzlich erlebte das Forschungs- und Lehrgebiet Datenbanken einen riesigen Boom als Kernstück moderner Informationssystem-Infrastrukturen: Sowohl die Hardware entwickelte sich in verschiedene Richtungen weiter, als auch Anwendungen wie das Internet, Big Data, Industrie 4.0, das Internet der Dinge und Digitalisierung im allgemeinen Sinne sind abhängig von einer riesigen Menge von Daten, die effizient verwaltet und wiedergefunden werden muss. Und im Sinne von Big Data Analytics und Maschinellem Lernen müssen Daten heutzutage auch nicht nur wiedergefunden werden, es müssen auch komplexe Muster in riesigen Datenmengen gefunden werden und sie müssen statistisch analysiert werden.

All das führte dazu, dass sich in den 10er Jahren dieses Jahrhunderts das Gebiet Datenbanken dynamischer entwickelt als je zuvor. Und obwohl in diesem Lehrbuch für eine erste Grundvorlesung Datenbanken im Bachelor-Studium der Informatik, Wirtschaftsinformatik oder Technischen Informatik im Wesentlichen die klassischen Grundlagen wie das relationale Datenbankmodell und SQL vorgestellt werden müssen, müssen sich die Autoren auch auf die vielfältigen Neuentwicklungen einstellen. Die führen dazu, dass das Buch in dieser sechsten Auflage von 2018 wieder umstrukturiert wurde. Wir stellen im Folgenden kurz die Veränderungen von der ersten zur fünften Auflage vor und beschreiben dann, welche Neuerungen diese sechste Auflage bestimmen.

Von der ersten zur fünften Auflage

Abbildung 1: Die zweite und dritte Auflage des Biberbuches

Die erste Auflage des Biber-Buches erschien im September 1995, die zweite im Januar 2000, die dritte dann in 2008 (Abbildung 1 zeigt die Cover der Auflagen 2 und 3). In der Zeit bis zur dritten Auflage, immerhin über zehn Jahre, waren wichtige Themen wie SQL:2003, XML, objektrelationale Datenbanken, Data Warehouses und die Verwaltung multimedialer Daten dazugekommen. Weiterhin hatten sich auch im Aufbau, in laufenden Beispielen und in der Didaktik in den Vorlesungen zum Buch diverse Änderungen ergeben, die zur völligen Neuentwicklung schon bestehender Buchkapitel in der dritten Auflage führte.

Die Überarbeitung in der dritten Auflage wurde auch dazu genutzt, um den Stoff des Buches neu zu organisieren. Diese Umstrukturierung wurde auch dadurch motiviert, dass in einer nur zweistündigen Vorlesung die ersten Kapitel in den vorherigen Auflagen zu gehaltvoll waren, um direkt chronologisch als Stoff für eine Vorlesung herzuhalten. Seit der dritten Auflage ist das Buch in drei Teile aufgeteilt:

Der erste Teil bearbeitet umfassend die Kernkonzepte der relationalen Datenbanken, ohne auf Spezialitäten und andere Datenmodelle einzugehen. Er bildet den Kern einer Vorlesung „Grundlagen von Datenbanken“ auch mit geringerem Stundenumfang.

Der zweite Teil vertieft die Themen des ersten Teils, und kann insbesondere für eine 3- oder 4-stündige Vorlesung herangezogen werden. Zusammen geben die ersten beiden Teile eine umfassende Behandlung von Theorie, Entwurfsmethoden und Sprachkonzepten für relationale Datenbanken inklusive der ausführlichen Behandlung von SQL.

Der dritte Teil behandelt Alternativen und Erweiterungen bei Datenmodellen. Hiervon können ausgewählte Teile in eine Grundvorlesung übernommen werden, oder die Basis für Spezialvorlesungen bilden. In diesen Kapiteln wird die Sprach- bzw. Anwendungssicht in den Vordergrund gestellt; Implementierungsaspekte werden im Buch „Datenbanken: Implementierungstechniken“ [SSH11] der Autoren behandelt und sind deshalb hier ausgeblendet.

Abbildung 2: Die vierte und fünfte Auflage des Biberbuches

In der fünften Auflage [SSH13] (siehe Abbildung 2) wurden erstmals Teile wieder aus dem Buch entfernt: Der Stoff zu Datenbankkonzepten für Data- Warehouse-Anwendungen wurde derart umfangreich, dass wir ihn aus dem

Buch herausnahmen und stattdessen auf ein eigenes Spezialbuch zu dieser Thematik verweisen mussten [KSS12]. Des weiteren wurden aufgrund von Anregungen von Lesern die Abschnitte zur relationalen Entwurfstheorie und zu SQL an einigen Stellen überarbeitet. Neu hinzugekommen waren Abschnitte zu Datenbankzugriffen in der Cloud, zu RDF-Daten und zu temporalen Daten.

Die hier vorliegende sechste Auflage

Die sechste Auflage bietet nun sowohl einige Umstrukturierungen, neue Kapitel zu aktuellen Themen als auch (leider) wieder Streichungen bestimmter Kapitel. Einige kleinere Fehler, die in den bisherigen Auflagen übersehen oder unglücklicherweise neu eingebaut wurden, haben wir in dieser sechsten Auflage auch korrigiert— und wahrscheinlich unvermeidlicherweise auch neue Fehler eingebaut. Im Wesentlichen haben wir aber den Stand der Technik auf das Jahr 2018 gebracht und beispielsweise den Stand der SQL-Standardisierung auf die derzeit aktuelle Version SQL:2016. Im Folgenden geben wir einen Überblick über die Änderungen. Eine Änderung auf dem Cover möchten wir noch erwähnen: Der Biber als Logo für die gesamte Buchreihe findet sich auch weiterhin (stilisiert und klein) auf dem Cover, hat aber dort seine seitenfüllende Präsenz verloren. Als Ausgleich haben wir in Abbildung 3 noch einmal den Biber in voller Schönheit präsentiert (gezeichnet von Arved Sattler).

Abbildung 3: Der Biber als Logo für die gesamte Buchreihe (Zeichnung von Arved Sattler)

Umstrukturierungen. Während die oben für die dritte Auflage beschriebene Aufteilung des Buches in Teile eins bis drei stabil bleibt, wurden bestehende Kapitel aufgetrennt und verschoben bzw. Teile des Stoffes neu zugeordnet.

Kapitel 1 haben wir stark gekürzt, da die Einführung in das klassische relationale Datenbankmodell nun in einem eigenen Kapitel direkt anschließend erfolgt.

Kapitel 2 ist neu und führt nun das relationale Datenbankmodell zunächst informal, aber bereits sehr frühzeitig im Buch ein.

In Kapitel 5 wird das relationale Datenbankmodell und die Relationenalgebra als erstes Anfragemodell formal eingeführt. Die alternativen Anfragekalküle werden aber erst im zweiten Teil des Buches in Kapitel 10 eingeführt.

Ebenso werden im Kapitel 7 über den Relationalen Datenbankentwurf nur noch die Kriterien für einen guten Datenbankentwurf und das einfachste Entwurfsverfahren, die Dekomposition, vorgestellt. Erweiterte Kriterien und Verfahren werden nun auch erst in einem eigenen Kapitel 9 im zweiten Teil des Buches aufgegriffen.

Der dritte Teil des Buches ab Kapitel 17 ist völlig neu strukturiert und sortiert worden. Hier beschreiben wir die diversen Erweiterungen des Relationenmodells und in den letzten Jahrzehnten entstandenen alternativen Datenbankmodelle, die in vielen Fällen auch als Erweiterungen in den SQL-Standard mit eingeflossen sind.

Neue Kapitel zu neuen Themen. In den letzten Jahren sind diverse Datenbanktechniken neu entwickelt worden, in eigenen Linien von Datenbanksystemen auch bereits umgesetzt und breit verwendet worden, teilweise aber auch bereits als Erweiterungen in den aktuellen SQL-Standard aufgenommen worden. Diese neuen Techniken werden in eigenen Abschnitten oder Kapiteln eingeführt, etwa die Erkennung von Tupelmustern in relationalen Datenbanken als neue Analyseform in SQL:2016 (Abschnitt 11.6) und erweiterte Programmierschnittstellen als Verbindung von Java mit relationalen Datenbanken (Abschnitt 14.4 zu JPA: Java Persistence API). Stark erweitert wurden im Bereich des Datenschutzes Anonymitätsmaße und die Prinzipien der datensparsamen Anfrageverarbeitung (Abschnitt 16.3) sowie im Bereich des Text Retrieval das Ranking im Vektorraummodell (Abschnitt 17.2). In zwei eigenen Kapiteln am Schluss des dritten Teiles gehen wir auf die Entwicklungen zu NoSQL- und NewSQL-Datenbanksystemen (Kapitel 21) sowie Graph-Datenbanken (Kapitel 22) näher ein.

Streichungen. Aufgrund des Umfangs des Buches und der produktionstechnisch vorgegebenen Seitengrenze mussten wir diverse Teile der fünften Auflage aus dem Buch streichen. Im digitalen Zeitalter nutzen wir aber die Möglichkeit, diese eliminierten Teile als virtuelle Kapitel über das Internet als pdf-Dateien zur Verfügung stellen zu können. Alle virtuellen Kapitel führen wir in Anhang B kurz ein, dort befindet sich auch der Link auf die elektronischen Dokumente. Die eliminierten Abschnitte oder Kapitel betreffen die historischen Modelle (hierarchisches Modell, Netzwerkmodell) aus der vorrelationalen Zeit, die Erweiterungen des Entity-Relationship-Modells als Entwurfsmodell, objektorientierte Datenbankmodelle inklusive des ODMG-Standards, einige Erweiterungen des Relationenmodells und ihrer Anfragesprachen um strukturierte Tabellen nicht in erster Normalform, eine Umsetzung der Relationenalgebra in eine Lehrsprache (Tutorial D) sowie ECA-Regeln und aktive Datenbanken.

Die Biber-Reihe

Das Gebiet Datenbanken wird in mehreren Büchern behandelt, an denen Autoren dieses Buches auch beteiligt sind. Obwohl nicht auf allen Covern der Bücher ein Bezug zum Biber hergestellt wird, nennen wir diese Bücher Biber 1 bis Biber 4, wobei Biber 1 das hier vorliegende Buch „Datenbanken: Konzepte und Sprachen“ darstellt.

Biber 2. Implementierungsaspekte von Datenbanksystemen wie Dateiorganisationsformen und Zugriffstrukturen (etwa Indexdateien), Anfrageoptimierung und Transaktionskonzepte (Concurrency Control) werden im Buch „Datenbanken: Implementierungstechniken“ [SSH11] behandelt (siehe Abbildung 4). Aufgrund der dramatischen Entwicklung im Bereich der Prozessoren (Single Instruction Multiple Data, Mehrkern) und der Speichertechnologie (Cache-Levels, Non-Volatile RAM, Storage Class Memory) müssen wir die hierfür vollständig neu entwickelten Implementierungstechniken in den nächsten Jahren in einem getrennten Band anbieten.

Abbildung 4: Der zweite Band der Biberbuch-Reihe: Biber 2 oder Datenbanken: Implementierungstechniken

Biber 3. Bereits in Auflage drei dieses Buches wurden die Datenbankkonzepte für Data-Warehouse-Anwendungen derart umfangreich, dass wir sie aus dem Buch herausnahmen und stattdessen in ein eigenes Spezialbuch zu dieser Thematik aufgenommen haben [KSS12].

Biber 4. Bei einem anderen Verlag ist zusätzlich ein Buch erschienen, das die Reihe durch Techniken für extrem große, auf diversen Rechnern im Netz verteilten Datenbeständen ergänzt sowie die parallele Verarbeitung von Datenbankoperationen auf Rechnerclustern thematisiert [RSS15].

Danksagungen

Zu danken haben wir bei den Neuauflagen dieses Biber-1-Buches insbesondere für Korrekturen und Hinweise zu nötigen Aktualisierungen und Erweiterungen unseren (jetzigen und ehemaligen) Mitarbeitern und Studenten Ingolf Geist, Eike Schallehn, Andreas Lübcke, Stephan Vornholt, Christine Krause, Rita Schindler, Constantin, Pohl, Meike Klettke, Holger Meyer, Temenushka Ignatova, Andre Peters, Martin Garbe, Alf-Christian Schering, Dagmar Waltemath, Nils Weber, Sebastian Schick, Thomas Nösinger sowie den Lesern Lorenz Froihofer und Andreas Hilmer. Weiterhin danken wir Knut Stolze für die Unterstützung bei praktischen Tests.

Speziell bei der sechsten Auflage bedanken wir uns bei Tanja Auge, Henrik Hertel, Mark Lukas Möller, Johannes Goltz, Michael Poppe, Daniel Dietrich, Ben Hellmanzik, Enrico Gruner, Frank Röger, Hannes Grunert, Ilvio Bruder und Frank Meyer.

Mit praktischen Tests haben bei der sechsten Auflage mitgeholfen: Ilvio Bruder, Daniel Dietrich, Johannes Goltz, Hannes Grunert, Martin Jurklies und Rita Schindler.

Ein Dankeschön geht auch an die zuständige Lektorin des MITP-Verlages Sabine Janatschek, die viel Geduld aufgebracht hat, sowie an Jürgen Dubau und Astrid Langen für das sorgfältige Korrekturlesen.

Gunter Saake bedankt sich bei Birgit, Torben und Annkristin für den liebevollen und familiären Rückhalt, der sich lange hinziehende Buchprojekte erst erträglich machen kann.

Kai-Uwe Sattler bedankt sich bei Britta, Arved und Bennett, ohne deren Liebe, Rückhalt und Verständnis ein solches Buchprojekt wohl nicht möglich wäre.

Andreas Heuer möchte sich schließlich bei Renate für die über 30-jährige Unterstützung und Geduld über alle sechs Auflagen hinweg bedanken.

Ergänzende Informationen zum Buch, wie Verweise zu begleitenden Vorlesungsmaterialien, gegebenenfalls erforderliche Fehlerkorrekturen und alle virtuellen Kapitel, die aus Platzgründen nicht mehr in dieses Buch passten, sind im Web unter folgender Adresse zu finden:

http://www.biberbuch.de

Informationen und Downloads zur Buchreihe gibt es auch auf der Verlagsseite:

http://www.mitp.de/776

Magdeburg, Ilmenau und Rostock, im Februar 2018

Gunter Saake, Kai-Uwe Sattler und Andreas Heuer

Inhaltsverzeichnis

Vorwort zur sechsten Auflage

Inhaltsverzeichnis

1 Grundlegende Konzepte

1.1 Motivation und Historie

1.2 Komponenten und Funktionen

1.2.1 Prinzipien und Aufgaben

1.2.2 Einsatzgebiete, Grenzen und Entwicklungstendenzen

1.2.3 Wann kommt was?

1.3 Beispielanwendung

1.4 Vertiefende Literatur

1.5 Übungsaufgaben

2 Relationale Datenbanken – Daten in Tabellen

2.1 Relationen für tabellarische Daten

2.1.1 Begriffe im Relationenmodell

2.1.2 Integritätsbedingungen: Schlüssel

2.1.3 Integritätsbedingungen: Fremdschlüssel

2.2 Datendefinition in SQL

2.2.1 Mögliche Wertebereiche in SQL

2.2.2 Beispiele für die Datendeklaration

2.2.3 Nullwerte

2.3 Grundoperationen: Die Relationenalgebra

2.3.1 Selektion σ

2.3.2 Projektion π

2.3.3 Natürlicher Verbund

2.3.4 Umbenennung ß

2.3.5 Mengenoperationen

2.4 Qualität entworfener Tabellen

2.5 SQL als Anfragesprache

2.6 Änderungsoperationen in SQL

2.6.1 Die update-Anweisung

2.6.2 Die delete-Anweisung

2.6.3 Die insert-Anweisung

2.7 Sichten in SQL

2.8 Wie geht es weiter?

2.9 Übungsaufgaben

I Kernkonzepte relationaler Datenbanken

3 Architekturen von Datenbanksystemen

3.1 Schemaarchitektur und Datenunabhängigkeit

3.2 Systemarchitekturen

3.2.1 ANSI-SPARC-Architektur

3.2.2 Der Weg einer Anfrage

3.2.3 Fünf-Schichten-Architektur

3.2.4 Konkrete Systemarchitekturen

3.3 Anwendungsarchitekturen

3.4 Zusammenfassung

3.5 Vertiefende Literatur

3.6 Übungsaufgaben

4 Das Entity-Relationship-Modell

4.1 Datenbankmodelle

4.2 Grundlagen des Entity-Relationship-Modells

4.2.1 Grundkonzepte des klassischen ER-Modells

4.2.2 Ein einfaches Beispiel für ein ER-Schema

4.2.3 Semantik eines ER-Schemas

4.3 Eigenschaften von Beziehungen

4.3.1 Stelligkeit

4.3.2 Kardinalitäten und funktionale Beziehungen

4.3.3 Kardinalitäten in der klassischen Chen-Notation

4.3.4 Kardinalitäten in funktionaler Notation

4.3.5 Kardinalitäten in Intervallnotation

4.4 Weitere Konzepte im Entity-Relationship-Modell

4.4.1 Abhängige Entity-Typen

4.4.2 Die IST-Beziehung

4.4.3 Optionalität von Attributen

4.5 Zusammenfassung

4.6 Vertiefende Literatur

4.7 Übungsaufgaben

5 Relationenmodell und Relationenalgebra

5.1 Relationenmodell: Strukturteil

5.1.1 Schemata und Instanzen

5.1.2 Integritätsbedingungen

5.2 Relationenalgebra: Operationenteil

5.2.1 Kriterien für Anfragesprachen

5.2.2 Relationenalgebra

5.3 Änderungsoperationen

5.3.1 Allgemeine Grundprinzipien

5.3.2 Relationale Änderungsoperationen

5.4 Zusammenfassung

5.5 Vertiefende Literatur

5.6 Übungsaufgaben

6 Phasen des Datenbankentwurfs

6.1 Entwurfsaufgabe

6.2 Phasenmodell

6.2.1 Anforderungsanalyse

6.2.2 Konzeptioneller Entwurf

6.2.3 Verteilungsentwurf

6.2.4 Logischer Entwurf

6.2.5 Datendefinition

6.2.6 Physischer Entwurf

6.2.7 Implementierung und Wartung

6.2.8 Objektorientierte Entwurfsmethoden

6.2.9 Phasenbegleitende Methoden

6.3 Aspekte der Datenintegration

6.3.1 Heterogenität der Datenmodelle

6.3.2 Heterogene Datenbankschemata

6.3.3 Heterogenität auf der Datenebene

6.3.4 Schemakonflikte bei der Integration

6.4 Entity-Relationship-Abbildung auf das Relationenmodell

6.4.1 Informationskapazität

6.4.2 Beispiel für eine Abbildung auf das Relationenmodell

6.4.3 Abbildungsregeln für das relationale Modell

6.5 Zusammenfassung

6.6 Vertiefende Literatur

6.7 Übungsaufgaben

7 Relationaler Datenbankentwurf

7.1 Funktionale Abhängigkeiten

7.1.1 Definition funktionaler Abhängigkeiten

7.1.2 Ableitung von funktionalen Abhängigkeiten

7.2 Schemaeigenschaften

7.2.1 Änderungsanomalien

7.2.2 Normalformen

7.2.3 Minimalität

7.3 Transformationseigenschaften

7.3.1 Abhängigkeitstreue

7.3.2 Verbundtreue

7.4 Entwurfsverfahren

7.4.1 Ziele

7.4.2 Dekompositionsverfahren

7.4.3 Ausblick Syntheseverfahren

7.5 Zusammenfassung

7.6 Vertiefende Literatur

7.7 Übungsaufgaben

8 Die relationale Datenbanksprache SQL

8.1 SQL als Datendefinitionssprache

8.1.1 Erzeugen von Tabellen

8.1.2 Tabellen mit Integritätsbedingungen

8.1.3 Löschen und Ändern von Tabellendefinitionen

8.1.4 Erzeugen und Löschen von Indexen

8.2 SQL als relationale Anfragesprache

8.2.1 Überblick

8.2.2 Die from-Klausel

8.2.3 Die select-Klausel

8.2.4 Die where-Klausel

8.2.5 Mengenoperationen

8.2.6 Schachtelung von Anfragen

8.2.7 Mächtigkeit des SQL-Kerns

8.3 Änderungsoperationen in SQL

8.3.1 Übersicht über Änderungen in SQL

8.3.2 Die update-Anweisung

8.3.3 Die delete-Anweisung

8.3.4 Die insert-Anweisung

8.3.5 Die merge-Anweisung

8.3.6 Probleme bei SQL-Änderungen

8.4 Zusammenfassung

8.5 Vertiefende Literatur

8.6 Übungsaufgaben

II Erweiterte Konzepte für relationale Datenbanken

9 Erweiterter relationaler Datenbankentwurf

9.1 Überdeckungen von funktionalen Abhängigkeiten

9.1.1 Nicht-redundante Überdeckung

9.1.2 Reduzierte Überdeckung

9.1.3 Bildung von Äquivalenzklassen

9.1.4 Minimale Überdeckung

9.1.5 Ringförmige Überdeckung

9.2 Syntheseverfahren

9.2.1 Ablauf der Synthese

9.2.2 Erreichung der Verbundtreue

9.3 Verfeinerung des Entity-Relationship-Datenbankentwurfs

9.4 Mehrwertige Abhängigkeiten

9.4.1 Grundlagen

9.4.2 Schemaeigenschaften

9.4.3 Transformationseigenschaften

9.5 Weitere Abhängigkeiten und Normalformen

9.5.1 Verbundabhängigkeiten

9.5.2 Inklusionsabhängigkeiten

9.5.3 Weitere relationale Entwurfsverfahren

9.5.4 Weitere Anwendungen der relationalen Theorie

9.6 Zusammenfassung

9.7 Vertiefende Literatur

9.8 Übungsaufgaben

10 Grundlagen von relationalen Anfragen

10.1 Erweiterungen der Relationenalgebra

10.2 Anfragekalküle

10.2.1 Ein allgemeiner Kalkül

10.2.2 Ergebnisbestimmung einer Anfrage

10.3 Tupelkalkül

10.3.1 Definition des Tupelkalküls

10.3.2 Beispielanfragen im Tupelkalkül

10.3.3 Bezug zu SQL

10.4 Bereichskalkül

10.4.1 Sichere Anfragen

10.4.2 Beispielanfragen im Bereichskalkül

10.4.3 Eigenschaften des Bereichskalküls

10.4.4 Relationenalgebraoperationen im Bereichskalkül

10.5 Zusammenfassung

10.6 Vertiefende Literatur

10.7 Übungsaufgaben

11 Erweiterte Konzepte von SQL

11.1 Weitere Operationen und Prädikate

11.1.1 Skalare Ausdrücke

11.1.2 Prädikate

11.1.3 Quantoren und Mengenvergleiche

11.1.4 Behandlung von Nullwerten

11.2 Aggregation, Gruppierung und Sortierung

11.2.1 Aggregatfunktionen

11.2.2 Gruppierung

11.2.3 Sortierung

11.2.4 Erweiterte Aggregatfunktionen in SQL:2003

11.2.5 Top-k-Anfragen

11.2.6 Skyline-Anfragen

11.3 Äußere Verbunde

11.4 Künstliche Schlüssel und Sequenzgeneratoren

11.5 Benannte Anfragen und Rekursion

11.5.1 Benannte Anfragen

11.5.2 Rekursive Anfragen

11.6 Erkennung von Tupelmustern

11.7 SQL-Versionen

11.7.1 SEQUEL2

11.7.2 SQL-89

11.7.3 SQL-92

11.7.4 SQL:1999 und SQL:2003

11.7.5 SQL:2006 und SQL:2008

11.7.6 SQL:2011 und SQL:2016

11.8 Zusammenfassung

11.9 Vertiefende Literatur

11.10 Übungsaufgaben

12 Weitere relationale Datenbanksprachen

12.1 QUEL

12.1.1 Anfragen in QUEL

12.1.2 Änderungsoperationen in QUEL

12.2 Query by Example

12.2.1 Anfragen in QBE

12.2.2 Funktionen, Sortierung und Aggregierung in QBE

12.2.3 Formale Semantik von QBE

12.2.4 Ausdrucksfähigkeit von QBE

12.2.5 Änderungen in QBE

12.2.6 Anfragen in MS Access

12.3 Datalog

12.3.1 Grundbegriffe

12.3.2 Semantik rekursiver Regeln

12.3.3 Semantik und Auswertung von Datalog

12.4 Zusammenfassung

12.5 Vertiefende Literatur

12.6 Übungsaufgaben

13 Transaktionen, Integrität & Trigger

13.1 Grundlagen von Transaktionen

13.1.1 ACID-Prinzip

13.1.2 Probleme im Mehrbenutzerbetrieb

13.1.3 Transaktionssteuerung in SQL

13.1.4 Transaktionen und Integritätssicherung

13.2 Architekturen zur Integritätssicherung

13.2.1 Integritätssicherung durch Anwendung

13.2.2 Integritätsmonitor als Komponente des DBMS

13.2.3 Integritätssicherung durch Einkapselung

13.3 Integritätsbedingungen in SQL

13.3.1 Inhärente Integritätsbedingungen im Relationenmodell

13.3.2 Weitere Bedingungen in der SQL-DDL

13.3.3 Die assertion-Klausel

13.3.4 Verwaltung und Überprüfung von Bedingungen

13.4 Klassifikation von Integritätsbedingungen

13.5 Trigger

13.6 Methoden der Integritätssicherung

13.6.1 Integritätssicherung durch Trigger

13.6.2 Integritätssicherung durch Anfragemodifikation

13.7 Zusammenfassung

13.8 Vertiefende Literatur

13.9 Übungsaufgaben

14 Datenbankanwendungsentwicklung

14.1 Grundprinzipien

14.2 Programmiersprachenanbindung: Call-Level-Schnittstellen

14.2.1 SQL/CLI: Der Standard

14.2.2 ODBC

14.2.3 JDBC

14.2.4 Weitere Call-Level-Schnittstellen

14.3 Eingebettetes SQL

14.3.1 Statische Einbettung: Embedded SQL

14.3.2 Dynamische Einbettung: Dynamic SQL

14.3.3 SQLJ: Embedded SQL für Java

14.4 High-Level-Schnittstellen

14.4.1 Persistenz von Objekten

14.4.2 Grundlagen der Abbildung

14.4.3 JPA und Hibernate

14.4.4 Weitere Technologien

14.5 Prozedurale SQL-Erweiterungen und Datenbanksprachen

14.5.1 Vorteile von gespeicherten Prozeduren

14.5.2 SQL/PSM: Der Standard

14.5.3 PL/SQL von Oracle

14.5.4 Gespeicherte Prozeduren in Java

14.6 Anwendungsentwicklung in der Cloud

14.6.1 Database-as-a-Service und Cloud-Datenbanken

14.6.2 Klassische DBMS in der Cloud

14.6.3 NoSQL-Systeme in der Cloud

14.7 Zusammenfassung

14.8 Vertiefende Literatur

14.9 Übungsaufgaben

15 Sichten

15.1 Motivation und Begriffsbildung

15.1.1 Sichten und externe Schemata

15.1.2 Definition von Sichten

15.1.3 Definition von Sichten in SQL

15.1.4 Vorteile von Sichten

15.2 Probleme mit Sichten

15.2.1 Kriterien für Änderungen auf Sichten

15.2.2 Projektionssichten

15.2.3 Selektionssichten

15.2.4 Verbundsichten

15.2.5 Aggregierungssichten

15.2.6 Klassifikation der Problembereiche

15.3 Behandlung von Sichten in SQL

15.3.1 Auswertung von Anfragen an Sichten in SQL

15.3.2 Sichtänderungen in SQL-92

15.3.3 Sichtänderungen ab SQL:2003

15.4 Theorie änderbarer Sichten

15.5 Instead-of-Trigger für Sichtänderungen

15.6 Zusammenfassung

15.7 Vertiefende Literatur

15.8 Übungsaufgaben

16 Zugriffskontrolle & Privacy

16.1 Sicherheitsmodelle

16.1.1 Diskrete Sicherheitsmodelle

16.1.2 Verbindliche Sicherheitsmodelle

16.2 Rechtevergabe in SQL

16.2.1 Benutzer und Schemata

16.2.2 Rechtevergabe in SQL

16.2.3 Zurücknahme von Rechten

16.2.4 Rollenmodell in SQL:2003

16.2.5 Auditing

16.2.6 Authentifikation und Autorisierung

16.3 Privacy-Aspekte in Datenbanken

16.3.1 Statistische Datenbanken

16.3.2 Quasi-Identifikator

16.3.3 k-Anonymität

16.3.4 l-Diversität, t-Closeness, Differential Privacy

16.3.5 Datensparsame Anfrageverarbeitung

16.4 Zusammenfassung

16.5 Vertiefende Literatur

16.6 Übungsaufgaben

III Erweiterte Datenbankmodelle und -techniken

17 Multimediale Daten

17.1 Multimedia-Datenbanken

17.1.1 Grundbegriffe

17.1.2 Grundlagen des Multimedia Retrieval

17.2 Text Retrieval

17.2.1 Information Retrieval auf Texten

17.2.2 Grundtechniken des Text Retrieval

17.2.3 Deskribierung

17.2.4 Recherche

17.2.5 Ranking

17.2.6 Information-Retrieval-Systeme

17.3 SQL/MM

17.3.1 SQL/MM Full Text

17.3.2 SQL/MM Still Image

17.3.3 Der Datentyp Video

17.3.4 SQL/MM Spatial

17.4 Zusammenfassung

17.5 Vertiefende Literatur

17.6 Übungsaufgaben

18 Räumliche und temporale Daten

18.1 Verwaltung raumbezogener Daten

18.1.1 Grundbegriffe

18.1.2 Modellierung raumbezogener Daten

18.1.3 Prädikate und Anfragen auf raumbezogenen Daten

18.1.4 Oracle Spatial

18.1.5 Weitere Systeme

18.2 Temporale Daten

18.2.1 Grundbegriffe

18.2.2 Umsetzung in SQL

18.2.3 Temporale Schlüssel, Fremdschlüssel und Anfragen

18.2.4 Weitere Entwicklung und Einordnung

18.3 Zusammenfassung

18.4 Vertiefende Literatur

18.5 Übungsaufgaben

19 Objektorientierte und objektrelationale Modelle

19.1 Exkurs: Objektorientierte Datenbankmodelle

19.2 Abbildung von Objekten auf Relationen

19.2.1 Typkonstruktoren

19.2.2 Abbildung der Spezialisierungshierarchie

19.3 Objektrelationale Erweiterungen

19.3.1 Large Objects: BLOB und CLOB

19.3.2 Typkonstruktoren

19.3.3 Identitäten, Referenzen und Pfadausdrücke

19.3.4 Hierarchien und Vererbung

19.3.5 Methoden

19.4 Objektrelationale Konzepte in SQL:2003

19.4.1 Typsystem und DDL

19.4.2 Anfragen

19.4.3 Methoden in SQL:2003

19.5 Zusammenfassung

19.6 Vertiefende Literatur

19.7 Übungsaufgaben

20 XML, XQuery und SQL/XML

20.1 Semistrukturierte Datenmodelle

20.1.1 Merkmale semistrukturierter Datenmodelle

20.1.2 Datenmodelle für semistrukturierte Dokumente

20.2 XML

20.2.1 Bausteine von XML

20.2.2 Verarbeitung von XML

20.3 Datendefinition in XML

20.3.1 Dokumenttypdefinition

20.3.2 XML Schema

20.3.3 XML-Abbildung auf relationale Schemata

20.4 Navigation in XML-Dokumenten: XPath

20.4.1 Pfadausdrücke und Lokalisierungsschritte

20.4.2 Selektionsprädikate und Funktionen

20.5 Die Anfragesprache XQuery

20.5.1 FLWOR-Ausdrücke

20.5.2 Elementkonstruktoren

20.5.3 Verbunde und Gruppierungen

20.5.4 Ausdrücke und Vergleiche

20.5.5 Funktionen

20.6 SQL/XML: XML-Erweiterungen für SQL

20.6.1 XML-Datentypen

20.6.2 XML-Konstruktion mit SQL

20.7 Zusammenfassung

20.8 Vertiefende Literatur

20.9 Übungsaufgaben

21 NoSQL-Datenbanken

21.1 Exkurs: Big Data

21.2 Motivation für NoSQL

21.3 KV-Stores und das Wide-Column-Datenmodell

21.3.1 Datenmodell: Key-Value-Stores

21.3.2 Datenmodell: Wide Column

21.4 Document Stores

21.4.1 Das JSON-Format

21.4.2 Anfragen bei dokumentenorientierter Speicherung

21.4.3 Datenrepräsentation und Anfragen in MongoDB

21.5 NewSQL – relationale Datenbanken schlagen zurück

21.6 Zusammenfassung

21.7 Vertiefende Literatur

21.8 Übungsaufgaben

22 Graph-Datenbanken

22.1 Graph-Datenmodelle: Grundlagen

22.1.1 Repräsentation von Graphstrukturen

22.1.2 Operationen und Anfragen auf Graphen

22.2 Das Resource Description Framework

22.2.1 Das RDF-Modell

22.2.2 RDF-Repräsentationen

22.2.3 RDF Schema und Vokabulare

22.3 Die RDF-Anfragesprache SPARQL

22.3.1 Grundlagen

22.3.2 SPARQL-Elemente

22.3.3 Aggregation und Gruppierung

22.3.4 Weitere Anfragetypen

22.3.5 Updates

22.4 Property-Graph-Modelle

22.4.1 Anfragen in Cypher

22.4.2 Anfragen in Gremlin

22.5 Zusammenfassung

22.6 Vertiefende Literatur

22.7 Übungsaufgaben

A Laufendes Beispiel

A.1 ER-Schema der Weindatenbank

A.2 Relationale Repräsentation

A.3 Vereinfachtes Schema und Beispieldaten

B Zusätzliche Kapitel

B.1 Historische Modelle

B.2 Erweiterte Entwurfsmodelle

B.3 Erweiterte Modelle und Anfragealgebren

B.4 Objektorientierte und objektrelationale Modelle inklusive SQL:2003

B.5 Tutorial D

B.6 ECA-Regeln und aktive Datenbanken

B.7 Grundlegende Datenbanktechniken

B.8 SQL/JSON

Literaturverzeichnis

1

Grundlegende Konzepte

Dieses erste Kapitel ist den grundlegenden Konzepten der Datenbankterminologie und -technik gewidmet. Wir werden uns die historische Entwicklung von Datenbanksystemen ansehen, Gründe für den Einsatz von derartigen Systemen diskutieren sowie Funktionen und Architektur von Datenbanksystemen betrachten. Ferner stellen wir als eine Beispielanwendung eine Weinkellerverwaltung vor, die wir über das ganze Buch hinweg verwenden werden.

1.1 Motivation und Historie

Wie ordnen sich Datenbanksysteme in die Vielfalt von Softwarepaketen ein, die heutzutage eingesetzt werden? Zur Beantwortung dieser Frage diskutieren wir zuerst eine verbreitete Klassifikation von Softwaresystemen.

Softwareschichten

Üblicherweise teilt man die Software eines Computersystems in mehrere Schichten ein, etwa der Aufteilung in Abbildung 1.1 folgend. In der Praxis können natürlich einige Softwarepakete mehrere Schichten umfassen.

Jede Schicht baut auf den weiter innen liegenden Schichten auf. Beispielsweise bietet das Betriebssystem Dateien und Operationen auf Dateien, Möglichkeiten zum Drucken etc. an. Anwendungssoftware wie Textverarbeitungssoftware nutzt diese Möglichkeiten als Dienste der niedrigeren Schicht. Als Beispiele für typische Softwareprodukte auf den einzelnen Schichten mag die folgende Auswahl dienen:

• Typische Betriebssysteme sind etwa Windows, Linux, MacOS X oder z/OS.

Abbildung 1.1: Aufteilung in Softwareschichten

• Zur Systemsoftware, die direkt auf diesen Betriebssystemen aufbaut, zählen Datenbanksysteme und Benutzerschnittstellen (wie das Windows-GUI oder X11-Produkte unter Unix).

• Zur Basissoftware, die wiederum auf der Systemsoftware aufbaut, gehören etwa Graphiksysteme wie OpenGL.

• Anwendungs- und Individualsoftware ist auf bestimmte Anwendungsklassen hin zugeschnitten: CAD-Systeme für Konstruktionsanwendungen, Desktop-Publishing-Systeme für Publikationsanwendungen sowie Buchhaltungssysteme, Lagerverwaltungssysteme oder allgemeiner ERP-Systeme (Enterprise Resource Planning) zur Unterstützung aller Geschäftsprozesse in Unternehmen.

Die Rolle der Datenbanksysteme ist also eine sehr elementare. Idealerweise sollten selbst Textverarbeitungssysteme ihre Texte und Informationen über Texte in einem Datenbanksystem verwalten und nicht einfach in einem Dateisystem. Genauso sollten CAD-Systeme sich allgemeinerer Graphiksysteme bedienen und diese wiederum zur Speicherung von Graphiken auf Datenbanksysteme zurückgreifen. Die Welt der kommerziellen Software ist von dieser Idealvorstellung jedoch leider noch etwas entfernt.

Das Problem der Datenredundanz

Ohne den Einsatz von Datenbanksystemen tritt das Problem der Datenredundanz auf. Die Basis- oder Anwendungssoftware verwaltet in diesem Szenario jeweils ihre eigenen Daten in ihren eigenen Dateien, und zwar jeweils in eigenen speziellen Formaten. Ein typisches Szenario gibt die folgende Auflistung wieder:

• Ein Textverarbeitungssystem verwaltet Texte, Artikel und Adressen.

• Die Buchhaltung speichert ebenso Artikel- und Adressinformationen.

• In der Lagerverwaltung werden Artikel und Aufträge benötigt und verwendet.

• Die Auftragsverwaltung manipuliert Aufträge, Artikel und Kundenadressen.

• Das CAD-System verwaltet Artikeldaten, technische Daten und technische Bausteine.

• Die Bereiche Produktion, Bestelleingang und Kalkulation benötigen teilweise ebenfalls diese Daten.

In diesem Szenario sind die Daten redundant, also mehrfach gespeichert. So werden Artikel und Adressen von mehreren Anwendungen verwaltet. Die entstehenden Probleme sind Verschwendung von Speicherplatz und „Vergessen“ von lokalen Änderungen, die typisch für das Fehlen einer zentralen, genormten Datenhaltung sind. Ein Ziel der Entwicklung von Datenbanksystemen ist die Beseitigung der Datenredundanz.

Weitere Problemfelder

Die meisten anderen Softwaresysteme (auch Programmiersprachen, Tabellenkalkulationen, Dateiverwaltungssysteme …) können große Mengen von Daten nicht effizient verarbeiten, so dass fehlender Einsatz von Datenbankmanagementsystemen (DBMS) zu erheblichen Effizienzeinbußen führen kann. Auch ermöglichen es viele Systeme nicht, dass mehrere Benutzer oder Anwendungen parallel mit den gleichen Daten arbeiten können, ohne einander zu stören. Weiterhin können gar Datenverluste durch unkontrolliertes Überschreiben entstehen. Diese Kontrolle ist eine Basisfunktion moderner DBMS.

Auch in der Anwendungserstellung führt der fehlende Einsatz einer zentralen Datenhaltungskomponente zu erheblichen Defiziten. Die Anwendungsprogrammierer oder auch Endanwender können Anwendungen nicht programmieren bzw. benutzen, ohne

• die interne Darstellung der Daten sowie

• Speichermedien oder Rechner (bei verteilten Systemen)

zu kennen. Dieses Problem wird als fehlende Datenunabhängigkeit bezeichnet und in Abschnitt 3.1 intensiver diskutiert. Auch ist die Sicherstellung der Zugriffskontrolle und der Datensicherheit ohne zentrale Datenhaltung nicht gewährleistet.

Datenintegration

Die obigen Probleme können mithilfe des Einsatzes von Datenbanktechnologien gelöst werden. Wir sprechen dann im Gegensatz zur Datenredundanz von einer Datenintegration. Das Prinzip der Datenintegration basiert auf folgenden Überlegungen:

Die gesamte Basis- und Anwendungssoftware arbeitet mit denselben Daten, die in einer zentralen Datenhaltungskomponente verwaltet werden. Der Gesamtbestand der Daten wird nun als Datenbank bezeichnet. Diese Architekturvorstellung wird in Abbildung 1.4 auf Seite 6 im Rahmen der historischen Entwicklung von Datenhaltungskomponenten graphisch verdeutlicht. Eine derartige Datenbank muss natürlich äußerst sorgfältig entworfen und in einer geeigneten Datendefinitionssprache beschrieben werden.

In unserem Beispielszenario bedeutet Datenintegration, dass zum Beispiel Adressen und Artikel nur einmal gespeichert werden, also nicht mehr redundant vorliegen.

Auch andere Probleme im Umgang mit großen Datenbeständen, etwa Fragestellungen der Effizienz, Parallelität, Zugriffskontrolle und Datensicherheit können mit heutigen kommerziellen Datenbankmanagementsystemen zufriedenstellend gelöst werden. Diese Systeme zeichnen sich durch folgende Eigenschaften aus:

• Datenbanksysteme können große Datenmengen effizient verwalten. Sie bieten benutzergerechte Anfragesprachen an, die eine komfortable Anfrageformulierung ohne Rücksichtnahme auf die interne Realisierung der Datenspeicherung ermöglichen. Eine interne Optimierung ermöglicht trotzdem einen effizienten Zugriff auf die Datenbestände.

• Viele Benutzer können parallel auf Datenbanken arbeiten. Das Transaktionskonzept verhindert hier unerwünschte Nebeneffekte beim Zugriff auf gemeinsam genutzte Daten.

• Die Datenunabhängigkeit wird durch ein Drei-Ebenen-Konzept gewährleistet, das eine externe Ebene der Anwendungssicht, eine konzeptuelle Ebene der logischen Gesamtsicht auf den Datenbestand und eine interne Ebene der implementierten Datenstrukturen unterscheidet.

• Zugriffskontrolle (kein unbefugter Zugriff) und Datensicherheit (kein ungewollter Datenverlust) werden vom System gewährleistet.

Historische Entwicklung

Die historische Entwicklung hin zu Datenbankmanagementsystemen kann in drei Stufen skizziert werden:

Die erste Stufe ist zu Beginn der 60er Jahre anzusiedeln, also zu einem Zeitpunkt, als die ersten Anwendungen der Massendatenverarbeitung auf Rechnern realisiert wurden. Die Daten wurden in elementaren Dateien abgelegt, und es erfolgte eine anwendungsspezifische Datenorganisation. Die Datenorganisation war geräteabhängig, zwangsweise redundant und führte leicht zu inkonsistenten Datenbeständen. Die Situation ist in Abbildung 1.2 verdeutlicht.

Abbildung 1.2: Historische Entwicklung 1: Zugriff auf Dateien ohne spezielle Verwaltung

Die zweite Stufe kennzeichnet die Situation Ende der 60er Jahre. Sie ist durch die Verwendung sogenannter Dateiverwaltungssysteme gekennzeichnet (bekannte Methoden sind etwa die Systeme SAM und ISAM für den sequentiellen und indexsequentiellen Dateizugriff, die auch in der Datenbankimplementierung eine große Rolle spielen [HR01, SSH11]). Dateiverwaltungssysteme konnten um zusätzliche Dienstprogramme ergänzt werden, etwa zum Sortieren von Datenbeständen. Die Situation der zweiten Stufe ist in Abbildung 1.3 dargestellt. Als wesentlicher Fortschritt wurde die Geräteunabhängigkeit der Datenhaltung erreicht, die Probleme der redundanten und eventuell inkonsistenten Datenhaltung blieben aber bestehen.

Diese Probleme konnten ab den 70er Jahren mit dem Einsatz von Datenbanksystemen gelöst werden. Sie garantieren Geräte- und Datenunabhängigkeit und ermöglichen eine redundanzfreie und konsistente Datenhaltung. Das Prinzip der Datenbanksysteme ist in Abbildung 1.4 skizziert: Der Datenbestand ist in einer Datenbank integriert, und jeder Zugriff erfolgt ausschließlich durch den „Filter“ des DBMS.

Abbildung 1.3: Historische Entwicklung 2: Dateiverwaltungssoftware

Abbildung 1.4: Historische Entwicklung 3: Datenbankmanagementsysteme

Ein wesentlicher Erfolgsfaktor war das von Codd vorgeschlagene Relationenmodell und dessen Umsetzung in relationalen Datenbanksystemen. Das erste System wurde – noch als Forschungsprototyp – von IBM unter dem Namen System R entwickelt und 1977 erstmals in einer größeren Installation eingesetzt. Später wurde es in das kommerzielle Produkt unter dem Namen DB2 überführt. Fast zeitgleich wurde an der University of California in Berkeley (UCB) unter Leitung von Mike Stonebraker das System Ingres entwickelt, das Vorläufer für Systeme wie Postgres, Sybase und der aktuellen Version von Ingres war. 1979 wurde auch Oracle erstmals veröffentlicht – interessanterweise gleich als Version 2, weil die Firma (wohl berechtigterweise) davon ausging, dass Kunden der zweiten Version eines Produktes mehr Vertrauen schenken würden. Darüber hinaus hat Oracle von Beginn an die Bedeutung einer Standardisierung erkannt und dies in Form einer Kompatibilität zum IBM-Konkurrenzprodukt umgesetzt. Dagegen war das DBMS von Microsoft – der SQL Server – zunächst keine Eigenentwicklung: Als Microsoft Ende der 80er Jahre den Bedarf eines DBMS für die eigene Serverplattform Windows NT erkannte, wurde kurzerhand der Quellcode von Sybase gekauft und als eigenes Produkt vermarktet. Erst nach und nach haben sich die beiden Produkte unabhängig voneinander weiterentwickelt.

Nachdem der Markt für SQL-basierte RDBMS mit drei bis vier großen Playern jahrzehntelang sehr überschaubar war, ist er nach 2000 geradezu explodiert, indem beispielsweise Open Source DBMS (etwa MySQL) und komplette Neuentwicklungen wie SAP HANA eine bisher ungewohnte Vielfalt erzeugten.

Neben dem stabilen Einsatz von SQL-DBMS lassen sich ferner Zehn- Jahres-Hypes von innovativen Datenbanktechnologien erkennen, die zu sehr vielen Neuentwicklungen geführt haben, deren Technologien aber üblicherweise dann vom SQL-Standard und von den RDBMS-Herstellern nach der Hype-Zeit aufgegriffen wurden. In den 90ern wurden die objektorientierten DBMS populär, deren Konzepte zum großen Teil in die SQL-Standards SQL:1999 und SQL:2003 aufgenommen und in objektrelationalen DBMS dann weit verbreitet wurden. In den 00er Jahren wurden XML-Datenbanksysteme modern, die in der Dokumentbeschreibungssprache XML strukturierte Daten und Dokumente verarbeiten konnten. Sie wurden dann von SQL:2003 bis SQL:2008 schrittweise in den SQL-Standard aufgenommen (SQL/XML). In den 10er Jahren sind NoSQL-Datenbanksysteme, die schwachstrukturierte Daten sehr flexibel und hochgradig skalierbar verarbeiten können, der aktuelle Hype. Die RDBMS-Hersteller reagieren auf diesen Trend durch diverse Verbesserungen auf der internen Ebene der DBMS sowie durch Spracherweiterungen, die insgesamt mit NewSQL zusammengefasst werden. Erste Ansätze sind auch bereits im SQL-Standard erschienen (SQL:2016: SQL/JSON).

Die Entwicklung der Datenbanksysteme bis zum heutigen Stand sowie aktuelle Entwicklungstendenzen werden wir in den verschiedenen Abschnitten dieses Buchs noch genauer betrachten.

1.2 Komponenten und Funktionen

Im vorigen Abschnitt haben wir die Vorteile von Datenbanksystemen gegenüber einfacher Dateispeicherung erläutert. In diesem Abschnitt werden wir uns die Aufgaben eines derartigen Systems sowie die daraus folgenden grundlegenden Komponenten eines Datenbanksystems im Überblick anschauen. Eine genauere Beschreibung der Komponenten eines DBMS und insbesondere der verwendeten Implementierungstechniken kann im Datenbankimplementierungsbuch [SSH11] gefunden werden.

1.2.1 Prinzipien und Aufgaben

Wir wollen die Diskussion der Funktionen eines Datenbanksystems damit beginnen, dass wir die allgemeinen Aufgaben kurz skizzieren sowie einige grundlegende Begriffe einführen.

Aufgaben eines Datenbankmanagementsystems (DBMS)

Im Laufe der Jahre hat sich eine Basisfunktionalität herauskristallisiert, die von einem Datenbankmanagementsystem erwartet wird. Codd hat 1982 diese Anforderungen in neun Punkten zusammengefasst [Cod82]:

1. Integration
Die Datenintegration erfordert die einheitliche Verwaltung aller von Anwendungen benötigten Daten. Hier verbirgt sich die Möglichkeit der kontrollierten nicht-redundanten Datenhaltung des gesamten relevanten Datenbestands.

2. Operationen
Auf der Datenbank müssen Operationen möglich sein, die Datenspeicherung, Suchen und Änderungen des Datenbestands ermöglichen.

3. Katalog
Der Katalog, auch Data Dictionary genannt, ermöglicht Zugriffe auf die Datenbeschreibungen der Datenbank.

4. Benutzersichten
Für unterschiedliche Anwendungen sind unterschiedliche Sichten auf den Datenbestand notwendig, sei es in der Auswahl relevanter Daten oder in einer angepassten Strukturierung des Datenbestands. Die Abbildung dieser speziellen Sichten auf den Gesamtdatenbestand muss vom System kontrolliert werden.

5. Konsistenzüberwachung
Die Konsistenzüberwachung, auch als Integritätssicherung bekannt, übernimmt die Gewährleistung korrekter Datenbankinhalte und der korrekten Ausführung von Änderungen, so dass diese die Konsistenz nicht verletzen können.

6. Zugriffskontrolle
Aufgabe des Zugriffskontrolle ist der Ausschluss unautorisierter Zugriffe auf die gespeicherten Daten. Dies umfasst datenschutzrechtlich relevante Aspekte personenbezogener Informationen ebenso wie den Schutz firmenspezifischer Datenbestände vor Werksspionage.

7. Transaktionen
Unter einer Transaktion versteht man eine Zusammenfassung von Datenbankänderungen zu Funktionseinheiten, die als Ganzes ausgeführt werden sollen und die bei Erfolg permanent in der Datenbank gespeichert werden.

8. Synchronisation
Konkurrierende Transaktionen mehrerer Benutzer müssen synchronisiert werden, um gegenseitige Beeinflussungen, etwa Schreibkonflikte auf gemeinsam benötigten Datenbeständen, zu vermeiden.

9. Datensicherung
Aufgabe der Datensicherung ist es, die Wiederherstellung von Daten, etwa nach Systemfehlern, zu ermöglichen.

Prinzipien von Datenbanksystemen

Unter dem Begriff Datenbankmanagementsystem verstehen wir die Gesamtheit der Softwaremodule, die die Verwaltung einer Datenbank übernehmen. Ein Datenbanksystem, kurz DBS, ist die Kombination eines DBMS mit einer Datenbank1. Diese Begriffsbildung ist für das Verständnis der Datenbankkonzepte essentiell und wird in Tabelle 1.1 zusammengefasst.

Tabelle 1.1: Begriffsbildungen für Datenbanksysteme

Grundmerkmale von modernen Datenbanksystemen sind die folgenden (angelehnt an die aufgeführten neun Punkte von Codd):

• DBMSe verwalten persistente (langfristig zu haltende) Daten, die einzelne Läufe von Anwendungsprogrammen überstehen sollen.

• Sie haben die Aufgabe, große Datenmengen effizient zu verwalten.

• DBMSe definieren ein Datenbankmodell, mit dessen Konzepten alle Daten einheitlich beschrieben werden.

• Sie stellen Operationen und Sprachen (Datendefinitionssprache, interaktive Anfragesprachen, Datenmanipulationssprachen usw.) zur Verfügung. Derartige Sprachen sind deskriptiv, verzichten also auf die explizite Angabe von Berechnungsschritten. Die Sprachen sind getrennt von einer Programmiersprache zu benutzen.

• DBMSe unterstützen das Transaktionskonzept inklusive Mehrbenutzerkontrolle: Logisch zusammenhängende Operationen werden zu Transaktionen zusammengefasst, die als atomare (unteilbare) Einheit bearbeitet werden. Auswirkungen von Transaktionen sind langlebig. Transaktionen können parallel durchgeführt werden, wobei sie voneinander isoliert werden.

• Sie unterstützen die Einhaltung des Datenschutzes, gewährleisten Datenintegrität (Konsistenz) und fördern die Datensicherheit durch geeignete Maßnahmen.

1.2.2 Einsatzgebiete, Grenzen und Entwicklungstendenzen

Bisher haben wir die Grundkonzepte von DBMS beschrieben. Nun müssen wir sie in die Softwarelandschaft einordnen sowie Entwicklungslinien der Vergangenheit und Entwicklungstendenzen der Zukunft diskutieren.

Einsatzgebiete und Grenzen

Die klassischen Einsatzgebiete der Datenbanken sind Anwendungen im kommerziellen Bereich, die sich aus Buchhaltungs- und Katalogisierungsproblemen entwickelt haben. Ein typisches Beispiel neben unserer kleinen Weindatenbank sind beispielsweise Artikelverwaltungs- und Bestellsysteme im Handel bzw. E-Commerce. Derartige Anwendungen zeichnen sich durch einige Charakteristika aus: Es gibt viele Objekte (20.000 Artikel, 10.000 Kunden, 1.000 Bestellvorgänge pro Tag usw.), aber vergleichsweise wenige Objekttypen (ARTIKEL, KUNDE, BESTELLUNG). Objekte sind einfach strukturiert und verhältnismäßig klein. Durchzuführende Transaktionen sind kurz und betreffen wenige Objekte (etwa die Bestellung eines Artikels), und die ausgeführten Operationen sind relativ unkompliziert, wie etwa einfache arithmetische Berechnungen.

Andere wichtige Beispiele für Datenbankanwendungen sind Enterprise Resource Planning (ERP)-Systeme, die die gesamte Ressourcenplanung in Unternehmen unterstützen. Derartige Systeme beinhalten neben der Stammdatenverwaltung Komponenten für die Materialwirtschaft (Lagerhaltung, Beschaffung), Finanz- und Rechnungswesen, Controlling, Personalwirtschaft und Produktion2. Die bekanntesten Vertreter sind sicherlich SAP R/3 bzw. der Nachfolger mySAP ERP und PeopleSoft.

Ein weiteres Beispiel sind Customer Relationship Management (CRM)- Systeme, die zur Verwaltung der Kundenbeziehungen eines Unternehmens dienen. In einer Datenbank werden dazu alle Kundenkontakte erfasst – beginnend bei den Adressen über die Historie von Anfragen, Angeboten und Kaufvorgängen bis hin zur finanziellen Situation. Derartige Systeme werden insbesondere zur Unterstützung des Vertriebs und für Marketingaktionen eingesetzt.

Datenbanksysteme bilden auch die Basis für sogenannte Data Warehouses. Hierbei handelt es sich um eine integrierte Datenbasis für Unternehmensdaten aus verschiedenen Quellsystemen, die zum Zweck der Analyse längerfristig und unabhängig von den Quellsystemen gespeichert werden. Aspekte von Data Warehouses werden u.a. in [KSS12] ausführlich behandelt.

Natürlich haben herkömmliche Datenbanksysteme auch Grenzen:

• Relationale Datenbanksysteme mit ihren flachen, einheitlich strukturierten Daten (siehe Kapitel 2) sind überfordert, wenn sehr tiefe, auch wechselnde Strukturen der Daten mit vielen Objekttypen benötigt werden und wenn Transaktionen viele Objekte über längere Zeiträume hinweg manipulieren. Beispiele hierfür sind CAD- und andere technische oder wissenschaftliche Anwendungen wie in der Physik, Astronomie oder Genomforschung.

•