Skip to main content
main-content

Über dieses Buch

Dieses Buch vermittelt dem Leser fundierte Grundkenntnisse sowohl in Datenbanken als auch in SQL. Eine Zusammenfassung und zahlreiche Übungsaufgaben in jedem Kapitel dienen der Vertiefung des Stoffes und verbessern den Lernerfolg deutlich. Die Schwerpunkte des Buches sind relationale Datenbanken, Entwurf von Datenbanken, die Programmiersprache SQL und der Zugriff auf Datenbanken mittels der Sprache PHP. Aber auch Themen wie Recovery, Concurrency, Sicherheit und Integrität werden ausführlich besprochen. Ein Kapitel zu verteilten Datenbanken, NoSQL und objektrelationalen Datenbanken führt in die jeweilige Thematik ein. Ein eigenes Kapitel über Performance gibt wertvolle Anregungen und Tipps zum Betrieb von leistungsfähigen Datenbanken. Der Autor legt sehr viel Wert auf die praktische Anwendung. Mit Hilfe einer Beispieldatenbank kann das Gelernte sofort geübt werden. Diese Datenbank, alle vorgestellten Programme und die Lösungen zu allen Übungen werden im Internet zum Download bereitgestellt.

Inhaltsverzeichnis

Frontmatter

1. Übersicht über Datenbanken

Zusammenfassung
Aller Anfang ist schwer. Dieses Kapitel soll diesen Anfang erleichtern und führt in diese ganz neue Welt der Datenbanken mit all ihren Begriffen und Besonderheiten ein. Wir beginnen mit der Definition einer Datenbank und stellen anschließend einen Katalog über Wünsche und Erwartungen an Datenbanken zusammen. Es überrascht nicht, dass dieser ziemlich umfangreiche Katalog heute von Datenbanken fast vollständig erfüllt wird. Und schon beginnen wir zu erahnen, wie mächtig und komplex moderne Datenbanksysteme sind. In den folgenden Abschnitten definieren wir die Aufgaben eines Datenbank-Administrators, lernen grob die einzelnen Datenbankmodelle kennen, gewinnen einen Überblick über Datenbankzugriffe und stoßen schließlich auf den enorm wichtigen Transaktionsbegriff. Der Leser, der bereits Grundkenntnisse in Datenbanken besitzt, kann dieses Kapitel gerne überspringen.
Edwin Schicker

2. Das Relationenmodell

Zusammenfassung
Dieses Kapitel beschäftigt sich mit dem logischen Aufbau einzelner Tabellen und ihrer Beziehungen zueinander. Wir beginnen mit einer Beispieltabelle, die wir nicht zur Nachahmung empfehlen. Erfahrungsgemäß motivieren Negativbeispiele dahingehend, es zukünftig besser zu machen. Wir gehen anschließend ausführlich auf relationale Datenstrukturen ein und werden relationale Datenbanken exakt definieren. Es folgt ein Abschnitt über die zwei Integritätsregeln, die zur Sicherstellung der Integrität in Datenbanken erfüllt sein müssen, und die deshalb den Aufbau von Tabellen und die Beziehungen zwischen den Tabellen entscheidend mitprägen. Wir beenden dieses Kapitel mit einem theoretischen Abschnitt zur relationalen Algebra, der mathematischen Grundlage des Zugriffs auf relationale Datenbanken.
Edwin Schicker

3. Datenbankdesign

Zusammenfassung
Wir werden in diesem Kapitel Normalformen von Relationen und die dazu benötigten Definitionen einführen. Während die Normalformenlehre immer nur einzelne Relationen getrennt untersucht, unterstützt das anschließend vorgestellte Entity-Relationship-Modell das Gesamtdesign einer Datenbank mit all den Beziehungen zwischen den einzelnen Relationen. Das Entity-Relationship-Modell ist enorm hilfreich und wird vielseitig eingesetzt, übrigens nicht nur in relationalen Datenbanken.
Edwin Schicker

4. Die Zugriffssprache SQL

Zusammenfassung
Dieses Kapitel behandelt überwiegend den lesenden Zugriff auf die Datenbankdaten. Wir arbeiten uns systematisch durch den Select-Befehl, um schließlich mittels Unterabfragen und Verbundoperationen (Joins) auch komplexe Zugriffe auf die Inhalte einer Datenbank meistern können. Im zweiten Teil behandeln wir Mutationsbefehle, die Schreibzugriffe auf die Daten. Diese Befehle sind relativ einfach, da sie syntaktisch weitgehend auf den Lesezugriffen aufbauen. Zuletzt gehen wir auf den Transaktionsbetrieb und einen Vergleich zur relationalen Algebra ein.
Edwin Schicker

5. Die Beschreibungssprache SQL

Zusammenfassung
In diesem Kapitel geht es um das Erstellen von Datenbanken. Im Zentrum steht dabei das Erzeugen von Basistabellen, temporären Tabellen und Sichten. Anschließend lernen wir, Zusicherungen und Gebiete zu definieren. Wichtig für einen Datenbank sind auch Trigger und Sequenzen. Enorm wichtig ist aber ein umfassender Zugriffsschutz. Hierzu gehören vor allem passgenaue Zugriffsrechte und die Sicherstellung der Integrität. Wir gehen ganz ausführlich darauf ein.
Zuletzt beschäftigen wir uns noch mit dem generellen Aufbau, dem Einrichten und der Verwaltung von Datenbanken.
Edwin Schicker

6. Datenbankprogrammierung mit PHP

Zusammenfassung
In der Praxis wird nur selten mittels einzelner SQL-Befehle auf Datenbanken zugegriffen. Vielmehr werden umfangreiche Programme eingesetzt, um komplexe Aufgaben mit Unterstützung von Datenbanken zu bewältigen. Dabei spielt das Internet eine immer wichtigere Rolle. Wir werden daher in diesem Kapitel mittels der Internet-Programmiersprache PHP lernen, Datenbanken gezielt einzusetzen.
Wir benutzen in PHP die datenbankunabhängige Schnittstelle PDO. Wir beginnen mit einfachen Anwendungen, werden dann ganze Tabellen auslesen und schließlich komplexe Transaktionen einschließlich Fehlerbehandlung ausführen. Auch der Zugriff auf große Binärdateien wird für uns am Schluss keine große Herausforderung mehr sein.
Edwin Schicker

7. Performance in Datenbanken

Zusammenfassung
Dass Datenbanken so kurze Antwortzeiten besitzen, ist ausgefeilten Performance-Maßnahmen zu verdanken. Einige ganz wichtige Optimierungen wollen wir in diesem Kapitel vorstellen. Wir sehen uns zunächst den in allen größeren Datenbanken implementierten Optimizer an, der alle Zugriffsbefehle überprüft und optimiert, noch bevor sie ausgeführt werden. Mit Hilfe eines vom Optimizer generierten Ausführungsplans können wir nachvollziehen, wie ein Befehl letztendlich ausgeführt wird.
Damit ausgerüstet, können wir gleich mit Indexen testen, wie viel diese sehr wichtigen Strukturen leisten. Bei sehr großen Relationen bietet die Partitionierung ebenfalls enorme Antwortzeitgewinne. In eine ganz andere Richtung gehen wir mit materialisierten Sichten. Performancemäßig nützen Sichten nur, wenn wir diese auch physisch speichern. Und genau dies tun materialisierten Sichten.
Weiter geben wir Hinweise, wie wir unsere Select-Befehle optimieren können. Neben weiteren Optimierungen spielen Stored Procedures eine wichtige Rolle. Wir werden auch darauf eingehen.
Edwin Schicker

8. Concurrency und Recovery

Zusammenfassung
In der Praxis ist entscheidend, dass Zugriffe auf eine Datenbank deren Konsistenz unter keinen Umständen verletzen, auch nicht im Fehlerfall, und auch dann nicht, wenn hunderte Anwendungen parallel zugreifen. Wir wollen in diesem Kapitel ausgiebig über die Sicherstellung der Konsistenz in Situationen wie Parallelbetrieb und Rechnerabsturz sprechen.
Unter Recovery verstehen wir die Rekonstruktion einer Datenbank im Fehlerfall. Aufgabe der Recovery ist es, nach aufgetretenen Problemen und Fehlern die Konsistenz der Daten zu gewährleisten. Unabhängig von der Art der Probleme, wie etwa plötzlicher Rechnerausfall oder sogar Feuer im Rechenzentrum, muss die konsistente Wiederherstellung der Daten möglich sein.
Concurrency ist der englische Begriff für Parallelbetrieb. Gefordert ist hier das Zulassen gleichzeitiger Zugriffe mehrerer Benutzer auf eine Datenbank. Ohne entsprechende Maßnahmen können durch solch gleichzeitige Zugriffe Konsistenzverletzungen und Datenverlust auftreten. Dies lässt sich mit entsprechenden Synchronisationsmechanismen unterbinden.
Edwin Schicker

9. Moderne Datenbankkonzepte

Zusammenfassung
In den letzten Jahren stieg das Interesse für verteilte Datenbanken enorm an. Hier sei nur das Stichwort Cloud erwähnt. Dieses Kapitel gibt im ersten Teil einen kleinen Überblick über den aktuellen Stand verteilter Datenbanken und von NoSQL. Dabei wird das Hauptgewicht auf die Definition und die Idee der verteilten Datenbanken gelegt.
In verteilten Datenbanken werden die Daten nicht wie bisher zentral gespeichert, sondern auf mindestens zwei Rechner oder gleich im gesamten Netz verteilt. Diese Daten müssen inklusive einer möglichen Mehrfachhaltung korrekt verwaltet werden. Wir werden als Beispiel auf das Protokoll des Zwei-Phasen-Commit eingehen, das bereits seit vielen Jahren im praktischen Einsatz ist.
Anders als bei verteilten Systemen stehen hinter objektorientierten Datenbanken Zugriffsstrukturen. Wir werden im zweiten Teil dieses Kapitels die objektrelationalen Konzepte am Beispiel von Oracle aufzeigen.
Edwin Schicker

10. Anhang

Zusammenfassung
Die Beispieldatenbank Bike wird in diesem Buch zu Übungszwecken durchgängig verwendet. Diese Datenbank ist der Praxis entnommen: Der hier betrachtete Fahrradhändler kann seine Aufgaben mit dieser Datenbank verwalten, auch wenn noch Wünsche offen bleiben. Dafür ist diese Datenbank mit nur zehn Relationen sehr übersichtlich und daher optimal für den Anfänger geeignet.
Es heißt, wir lernen aus Fehlern, und so enthält die Datenbank Bike einige Designschwächen. Nicht jede Relation befindet sich in der 3. Normalform, auch inhaltlich ist die Datenbank Bike nicht immer optimal aufgebaut. Im Buch wird gezielt auf diese Problemfälle aufmerksam gemacht. Davon unabhängig sei als Übung empfohlen, die noch enthaltenen Designfehler zu identifizieren und zu beseitigen.
Dieser Anhang enthält eine Gesamtdarstellung der Beispieldatenbank Bike. Die Installationsskripte für diese Datenbank werden kostenlos für Oracle, MS SQL Server und MySQL im Internet unter der folgenden Adresse zur Verfügung gestellt:
  • http://bike.oth-regensburg.de
Edwin Schicker

Backmatter

Weitere Informationen

Premium Partner

    Bildnachweise