Inhaltsverzeichnis Einleitung 19 Über dieses Buch Konventionen in diesem Buch Was Sie nicht lesen müssen Törichte Annahmen über den Leser Wie dieses Buch aufgebaut ist Teil I: Einführung in Datenbanksysteme Teil II: Von der Aufgabenstellung zur relationalen Datenbank Teil III: Zugriff auf relationale Datenbanken mit SQL Teil IV: Die Verwaltung einer relationalen Datenbank Teil V: Objektrelationale Datenbanksysteme Teil VI: Grundlagen von Datenbankanwendungen Teil VII: Der Top-10-Teil Symbole, die in diesem Buch verwendet werden Wie es weitergeht 19 20 21 21 22 22 22 22 22 23 23 23 23 24 Teil I Einführung in Datenbanksysteme 25 Kapitel 1 Wozu Datenbanksysteme da sind 27 Daten und ihre Speicherung Ein einführendes Beispiel Aufgaben Vertiefungsfragen Übungen 27 30 36 36 36 Kapitel 2 Definition und Architektur von Datenbanksystemen 37 Dateiverarbeitung: Ein Überblick Merkmale von Anwendungen mit Dateizugriff Datenbanksysteme: Architektur und Definition Eigenschaften von Datenbanksystemen Datenbank- und Informationssysteme Wer macht was Gesellschaftliche Auswirkungen großer Datenbanken 37 37 41 42 44 44 45 9 Datenbanksysteme für Dummies Aufgaben Wiederholungsfragen Vertiefungsfragen Kapitel 3 Überblick über Datenmodelle Klassifikation von Daten Datenmodelle Ein historischer Überblick Das netzwerkartige Datenmodell Das relationale Datenmodell Tabellen Beziehungen Datenbankschema Beispiel NoSQL-Datenmodelle Spaltenorientierte Datenbanken Dokumentenorientierte Datenbanken Vergleich von NoSQL- und relationalen Systemen Benutzungsschnittstellen Übersicht über Datenbanksysteme Aufgaben Übungsaufgaben Vertiefungsfragen Übungen Kapitel 4 Vorgehensweise bei der Datenbankentwicklung Ein einfacher Software-Entwicklungsprozess Wie schreibt man Programme Überblick über aktuelle Vorgehensweisen Phasenmodell der Datenbankentwicklung Die Datenbank kommt ins Spiel Von der Anforderungsanalyse zu Betrieb und Wartung Die Anforderungsanalyse im Detail Erhebungstechniken Ergebnis der Anforderungsanalyse Der Datenbankentwurf im Detail Semantischer Entwurf Logischer Entwurf Physischer Entwurf Beispiel Ein Beispiel mit Anforderungsanalyse und Entwurf 10 46 46 46 47 47 48 50 51 54 54 55 56 56 57 57 58 59 59 61 62 62 62 62 63 63 63 65 66 66 67 70 70 71 71 72 72 73 73 74 Inhaltsverzeichnis Aufgaben Wiederholungsfragen Vertiefungsfragen Übungen 78 78 79 79 Teil II Von der Aufgabenstellung zur relationalen Datenbank 81 Kapitel 5 Semantische Modellierung einer Datenbank 83 Entitätstypen, Attribute und Beziehungen Entitätstypen Attribute Beziehungen Beziehung oder Attribut Die Entity-Relationship-Modellierung Entitätstypen und Attribute Beziehungen Erweiterung des klassischen ER-Modells: die MC-Notation Beispiele Weitere Notationsformen Semantische Modellierung mit UML-Klassendiagrammen Klassendiagramme Beziehungen in UML-Klassendiagrammen Constraints bei Beziehungen Aufgaben Wiederholungsfragen Vertiefungsfragen Übungen 83 83 85 86 89 90 90 91 93 95 99 100 101 101 103 104 104 104 104 Kapitel 6 Das relationale Datenbankmodell im Detail 107 Erläuterungen zum Begriff »Relation« Relationen sind Mengen Konstruktionsregeln für Relationen Primär- und Fremdschlüssel 3-Ebenen-Architektur Datenunabhängigkeit Sichten und Schemata Merkmale relationaler Datenbanken 107 107 109 110 112 112 112 115 11 Datenbanksysteme für Dummies Integritätsaspekte relationaler Datenbanken Schlüsselintegrität Typintegrität Referenzielle Integrität Transaktionsintegrität Relationenalgebra im Überblick Mengenoperationen der Relationenalgebra Das kartesische Produkt Spezielle Operationen der Relationenalgebra Beispiele für Datenbankabfragen mit der Relationenalgebra Aufgaben Wiederholungsfragen Übungen Kapitel 7 Entwurf und Implementierung des Datenbankschemas Umsetzung eines Entity-Relationship-Diagramms in ein Datenbankschema Entitätstypen und Attribute Beziehungen Tabellen und ihre Attribute Woran erkennt man gut strukturierte Tabellen? Das Anomalie-Problem Kriterien einer guten Zerlegung von Tabellen Normalisierung Die erste Normalform Die zweite Normalform Die dritte Normalform Die Boyce-Codd-Normalform Zusammenfassung Erzeugen der Tabellen mit SQL Syntax der SQL-Definitionen Der Befehl CREATE TABLE Datentypen Integritätsbedingungen (Constraints) Automatische Schlüsselgenerierung Änderung der Tabellenstruktur Aufgaben Wiederholungsfragen Vertiefungsfragen Übungen 12 117 118 120 120 121 125 125 127 128 131 132 132 132 135 135 135 136 140 141 141 142 145 145 146 148 150 150 151 151 152 153 154 158 159 160 160 161 161 Inhaltsverzeichnis Teil III Zugriff auf relationale Datenbanken mit SQL 165 Kapitel 8 Die DML-Befehle von SQL 167 SQL und relationale Datenbanksysteme Der SELECT-Befehl im Überblick Der INSERT-Befehl Einzelne Tupel speichern Mehrere Tupel speichern Attribute mit automatisch vergebenen Werten Der UPDATE-Befehl Der DELETE-Befehl DML-Befehle und Fremdschlüssel Aufgaben Wiederholungsfragen Vertiefungsfragen Übungen 167 168 172 173 173 174 175 176 176 178 178 178 178 Kapitel 9 Der SELECT-Befehl im Detail 179 Datenbankschema für die Beispiele Abfrage einer einzelnen Tabelle Zählen und Sortieren Numerische Operatoren String-Operatoren Logische Operatoren Mengenwertige Filter Behandlung von NULL-Werten Abfragen über mehrere Tabellen Mengenoperatoren Join in der Where-Klausel Der Join-Operator Der EXISTS-Quantor Gruppierung mit »GROUP BY« Unterabfragen Subselect in der Where-Klausel Subselect in der From-Klausel Subselect in der Select-Klausel Aufgaben Wiederholungsfragen Übungen 179 180 180 182 184 185 186 186 189 189 190 193 195 197 199 200 201 202 204 204 204 13 Datenbanksysteme für Dummies Teil IV Die Verwaltung einer relationalen Datenbank 207 Kapitel 10 Benutzersichten 209 Was sind Benutzersichten? Definition von Views Beispiele für Views Vorteile von Views Datenunabhängigkeit Datenschutz durch Views Vordefinition von SQL-Abfragen Views und die Generalisierung/Spezialisierung Untertypen als View Obertyp als View DML-Operationen bei Views Aufgaben Wiederholungsfragen Vertiefungsfragen Übungen Kapitel 11 Datensicherheit und Zugriffsrechte bei Datenbanken Datensicherheit und Datenschutz Was bedeutet das? Schutzziele und Schutzmechanismen bei Datenbanken Benutzer und ihre Zugriffsrechte Benutzer Rollen Vergabe von Zugriffsrechten Zurücknahme von Rechten Aufgaben Vertiefungsfragen Übungen Kapitel 12 Datenbankoptimierung Einflussmöglichkeiten bei SQL-Abfragen Übersetzung und Optimierung Transaktionsverarbeitung Speicherverwaltung Ansatzpunkte für Tuning-Möglichkeiten 14 209 209 210 212 212 212 213 213 214 215 216 218 218 218 218 221 221 221 222 224 224 224 225 227 228 228 228 229 229 230 232 232 232 Inhaltsverzeichnis Indizes als Zugriffspfade Klassischer Index Bitmap-Index Der Ausführungsplan Partitionierung Range-Partitionierung List-Partitionierung Hash-Partitionierung Optimierung des Datenbankschemas Zusammenfassung von Relationen Einführung redundanter Daten Zerlegung einer Relation in mehrere kleinere Spaltenorientierte Speicherung Hardware und Systemumgebung Einige Tipps zur Performance-Steigerung Das sollten Sie beachten Ein Beispiel Aufgaben Wiederholungsfragen Vertiefungsfragen Übungen 233 234 236 237 238 239 240 241 241 242 242 243 243 245 245 245 246 247 247 247 247 Teil V Objektrelationale Datenbanksysteme 249 Kapitel 13 Objektorientierung und relationale Datenbanksysteme 251 Objektorientierte Softwareentwicklung Eigenschaften von Objekten Beziehungen zwischen Klassen Die Generalisierung/Spezialisierung Übertragung objektorientierter Konstrukte in die relationale Datenbankwelt Schachtelung von Objekten Assoziation, Aggregation und Komposition bei relationalen Datenbanken Generalisierung/Spezialisierung und relationale Datenbanken Der Begriff »Impedance Mismatch« Das objektrelationale Datenbankmodell Relationale Datenbanken und Objektorientierung Merkmale des objektrelationalen Datenbankmodells Beispiele für objektrelationale Strukturen Aufgaben Wiederholungsfragen Vertiefungsfragen Übungen 251 251 252 252 253 253 254 254 255 256 256 257 259 260 260 260 260 15 Datenbanksysteme für Dummies Kapitel 14 Arbeiten mit objektrelationalen Tabellen Einige objektrelationale Strukturen Tabellen mit UDT als Attribut Tabellen mit Listen als Attribut Tabellen mit Tabellen als Attribut Aufgaben Wiederholungsfragen Vertiefungsfragen Übungen 263 263 264 267 269 272 272 272 272 Teil VI Grundlagen zur Erstellung von Datenbanksystemen 273 Kapitel 15 Trigger und Stored Procedures 275 Architektur von Datenbank-Anwendungsprogrammen PL/SQL Grundlagen Cursor-Verarbeitung Trigger Arten von Triggern Syntax Beispiele Stored Procedures Beispiele Aufgaben Wiederholungsfragen Vertiefungsfragen Übungen Kapitel 16 Programmieren oder Generieren von Datenbankanwendungen JDBC Architektur und Funktionalität PDO: PHP und MySQL Generieren von Web-Anwendungen APEX-Grundlagen Beurteilung Aufgaben Wiederholungsfragen Vertiefungsfragen Übungen 16 275 277 277 278 279 279 280 282 285 285 286 286 286 287 289 289 289 294 296 296 297 298 298 298 298 Inhaltsverzeichnis Kapitel 17 Anwendungsbereiche relationaler Datenbanken 299 Informationssysteme in Unternehmen Relationale Datenbanken als Basis von Data-Warehouse-Systemen Definition und Grundlagen Relationale Datenbank als Data Warehouse Geo-Datenbanken als Anwendung objektrelationaler Systeme Einführung Oracle Spatial (Locator) Aufgaben Wiederholungsfragen Vertiefungsfragen Übungen 299 300 300 303 305 305 306 309 309 309 310 Kapitel 18 SQL oder nicht SQL 311 Zusammenfassung Merkmale relationaler Datenbanksysteme Welche Datenbank für welches Problem? Aufgaben Vertiefungsfragen 311 312 312 313 313 Teil VII Der Top-10-Teil 315 Kapitel 19 Die 10 größten Fehler beim Entwurf relationaler Datenbanken 317 Verletzung der Normalformen Schlecht gewählte Variablennamen und Datentypen Keine Check-Klauseln für Attribute Keine Fremdschlüsseldefinitionen Redundante Daten Datenbankdateien und deren Kopien auf demselben Laufwerk Keine vollständige und korrekte Abbildung des semantischen Modells Zu wenig Absprache mit dem Anwender Glossar nicht überprüft bzw. angepasst Nicht genügend Testdaten 317 318 318 318 318 319 319 320 320 320 Kapitel 20 Die 10 wichtigsten SQL-Befehle und ihre Varianten 323 SELECT mit einer Tabelle SELECT mit mehreren Tabellen (Join) SELECT mit Gruppierung 323 324 324 17 Datenbanksysteme für Dummies SELECT mit Unterabfrage INSERT UPDATE DELETE CREATE DROP COMMIT und ROLLBACK Kapitel 21 10 Fragen bei der Entity-Relationship-Modellierung ER-Modellierung oder UML? Welche Schreibweise? Sind die Entitätstypen korrekt gebildet? Sind alle notwendigen Beziehungen erkannt? Redundante Beziehungen oder nicht? Gibt es existenzabhängige Entitätstypen? 1:1-Beziehung: muss das sein? Stimmen die Kardinalitäten? Ist das ER-Diagramm mit dem Anwender abgesprochen? Ist das Glossar korrekt? 325 325 325 326 326 327 327 329 329 330 330 330 331 331 332 332 332 332 Anhang 333 Lösungen zu den Übungen 335 Übungen zu Kapitel 1 Übungen zu Kapitel 3 Übungen zu Kapitel 4 Übungen zu Kapitel 5 Übungen zu Kapitel 6 Übungen zu Kapitel 7 Übungen zu Kapitel 8 Übungen zu Kapitel 9 Übungen zu Kapitel 10 Übungen zu Kapitel 11 Übungen zu Kapitel 12 Übungen zu Kapitel 13 Übungen zu Kapitel 14 Übungen zu Kapitel 15 Übungen zu Kapitel 16 Übungen zu Kapitel 17 335 336 337 337 339 341 344 344 348 351 351 352 355 356 358 360 Literaturverzeichnis 363 Stichwortverzeichnis 367 18