Datenbanken sind das Rückgrat moderner IT-Systeme. Wie Sie sicher mit ihnen arbeiten, zeigt Ihnen Dr. Michael Kofler in diesem umfassenden Handbuch. Sie lernen grundlegende Begriffe und Konzepte kennen, die Sie für gutes Datenbankdesign brauchen, und erfahren, wie Sie Daten modelliere und strukturieren. Ein Schnellkurs in SQL zeigt Ihnen, wie Daten abgefragt und geändert werden, Praxiswissen zur Client-Entwicklung und DBMS-Administration machen Sie fit für den Berufsalltag, Übungen und anschauliche Beispiele helfen Ihnen beim Selbststudium und der Prüfungsvorbereitung.
Aus dem Inhalt:
- Datenbankmodellierung: vom ER-Modell zum perfekten Schema
- Datentypen
- Primary Keys, Foreign Keys und referenzielle Integrität
- Indizes
- Daten mit SQL abfragen und ändern
- SQL für Fortgeschrittene: Subqueries, Transaktionen, Rekursion, DDL
- Client-Programmierung
- Benutzerverwaltung und Access Control
- Backups und Logging
- Replikation und High Availability
- Stored Procedures und Trigger
- NoSQL: Datenverarbeitung jenseits relationaler Datenbanken
Inhaltsverzeichnis
Materialien zum Buch . . . 12 Vorwort . . . 13TEIL I. Grundlagen . . . 17 1. Wozu Datenbanken? . . . 19 1. 1 . . . Datenbanken sind allgegenwärtig . . . 19 1. 2 . . . Warum eine Excel-Tabelle nicht ausreicht . . . 24 1. 3 . . . Die erste eigene Datenbank . . . 27 1. 4 . . . Realisierung des Beispiels mit der MySQL Workbench . . . 35 2. Grundlagen relationaler Datenbanken . . . 47 2. 1 . . . Datenbank versus Datenbankmanagementsystem . . . 47 2. 2 . . . Das relationale Modell . . . 56 2. 3 . . . Transaktionen . . . 65 2. 4 . . . Datensicherheit und ACID . . . 68 2. 5 . . . Codds zwölf Gebote . . . 78 2. 6 . . . Kritik am relationalen Modell . . . 81 2. 7 . . . Wiederholungsfragen . . . 86TEIL II. Datenbanken modellieren . . . 91 3. Datenbankmodellierung . . . 93 3. 1 . . . Datenbankschema . . . 94 3. 2 . . . Modellierungsstufen . . . 96 3. 3 . . . Modellierungstechniken . . . 100 3. 4 . . . Das Entity-Relationship-Modell . . . 104 3. 5 . . . Sonderfälle im ER-Modell . . . 110 3. 6 . . . Alternative Diagrammformen und Notationen (IDEF1X, Min-Max, UML) . . . 118 3. 7 . . . Vom ER-Diagramm zum Tabellenschema . . . 129 3. 8 . . . Namensregeln . . . 137 3. 9 . . . Normalformen . . . 142 3. 10 . . . Normalisierungsbeispiel . . . 154 3. 11 . . . Modellierung hierarchischer bzw. unstrukturierter Daten . . . 157 3. 12 . . . Wiederholungsfragen . . . 164 4. Datentypen . . . 169 4. 1 . . . SQL und das Kommando »CREATE TABLE« . . . 169 4. 2 . . . Ganze Zahlen . . . 172 4. 3 . . . Gleit- und Festkommazahlen . . . 174 4. 4 . . . Zeichenketten . . . 178 4. 5 . . . Datum und Uhrzeit . . . 183 4. 6 . . . Boolesche Zustände . . . 184 4. 7 . . . Binäre Daten (BLOBs) . . . 185 4. 8 . . . NULL, Defaultwerte und Werteinschränkungen (CHECKs) . . . 188 4. 9 . . . Besondere Datentypen . . . 191 4. 10 . . . Eigene Datentypen . . . 195 4. 11 . . . Virtuelle Spalten (Generated Columns) . . . 197 4. 12 . . . Beispiele . . . 198 4. 13 . . . Wiederholungsfragen . . . 200 5. Primary Keys, Foreign Keys und referenzielle Integrität . . . 203 5. 1 . . . Primary Keys (Primärschlüssel) . . . 204 5. 2 . . . Foreign Keys (Fremdschlüssel) . . . 217 5. 3 . . . Foreign-Key-Beispiele . . . 225 5. 4 . . . Wiederholungsfragen . . . 232 6. Indizes . . . 235 6. 1 . . . Indexformen . . . 236 6. 2 . . . Index-Interna und B-Trees . . . 242 6. 3 . . . Indizes -- Pro und Kontra . . . 257 6. 4 . . . Cache-Systeme für Abfragen . . . 260 6. 5 . . . Wiederholungsfragen . . . 262 7. Physische Modellierung . . . 265 7. 1 . . . DBMS-Auswahl . . . 265 7. 2 . . . Dimensionierung von Datenbanken . . . 269 7. 3 . . . Views . . . 274 7. 4 . . . Partitionen . . . 281 7. 5 . . . Wiederholungsfragen . . . 286 8. Modellierungsbeispiele . . . 289 8. 1 . . . »books«-Datenbank . . . 290 8. 2 . . . »todo«-Datenbank . . . 292 8. 3 . . . »school«-Datenbank . . . 301 8. 4 . . . »clouddb«-Datenbank . . . 312 8. 5 . . . »sakila«-Datenbank . . . 323 8. 6 . . . »employees«-Datenbank . . . 329 8. 7 . . . Noch mehr Musterdatenbanken . . . 332 8. 8 . . . Wiederholungsfragen . . . 334TEIL III. Structured Query Language (SQL) . . . 337 9. Relationale Algebra und SQL . . . 339 9. 1 . . . Relationale Algebra . . . 340 9. 2 . . . Relationenkalkül (relationaler Calculus) . . . 350 9. 3 . . . Structured Query Language (SQL) . . . 355 9. 4 . . . Elementare SQL-Syntaxregeln . . . 360 9. 5 . . . Wiederholungsaufgaben . . . 36210. Daten abfragen (SELECT) . . . 365 10. 1 . . . Zugriff auf die Beispieldatenbanken . . . 365 10. 2 . . . Einfache Abfragen (WHERE, DISTINCT) . . . 368 10. 3 . . . Tabellen verknüpfen (JOIN) . . . 373 10. 4 . . . Ergebnisse gruppieren (GROUP BY) . . . 385 10. 5 . . . Ergebnisse sortieren (ORDER BY) . . . 389 10. 6 . . . Ergebnisse limitieren (LIMIT) . . . 390 10. 7 . . . SELECT-Syntax-Zusammenfassung . . . 392 10. 8 . . . Der Umgang mit NULL . . . 393 10. 9 . . . Abfragen kombinieren (UNION) . . . 395 10. 10 . . . Abfrageausführung und -optimierung . . . 396 10. 11 . . . Wiederholungsaufgaben . . . 40711. Daten ändern (INSERT, UPDATE, DELETE) . . . 411 11. 1 . . . Daten einfügen (INSERT) . . . 412 11. 2 . . . Daten ändern (UPDATE) . . . 417 11. 3 . . . Daten löschen (DELETE) . . . 421 11. 4 . . . Wiederholungsaufgaben . . . 42412. Transaktionen . . . 425 12. 1 . . . Transaktionen in SQL . . . 426 12. 2 . . . Isolation Level . . . 429 12. 3 . . . Dirty Read, Phantom Read und andere Isolation-Probleme . . . 435 12. 4 . . . Locking-Verfahren . . . 446 12. 5 . . . Multiversion Concurrency Control (MVCC) . . . 453 12. 6 . . . Wiederholungsaufgaben . . . 45813. Subqueries, Rekursion, Zusatzfunktionen . . . 461 13. 1 . . . SQL-Funktionen . . . 461 13. 2 . . . Subqueries . . . 468 13. 3 . . . Window-Funktionen (OVER) . . . 474 13. 4 . . . Rekursion . . . 479 13. 5 . . . Data Definition Language (DDL) . . . 484 13. 6 . . . Systemkatalog . . . 489 13. 7 . . . Wiederholungsaufgaben . . . 49414. Volltextsuche, geografische Daten, XML und JSON . . . 495 14. 1 . . . Volltextindex und Volltextsuche . . . 495 14. 2 . . . Geografische Daten (GIS-Funktionen) . . . 500 14. 3 . . . XML . . . 506 14. 4 . . . JSON . . . 512 14. 5 . . . Wiederholungsaufgaben . . . 515TEIL IV. Administration und Programmierung . . . 51715. Benutzerverwaltung . . . 519 15. 1 . . . Authentifizierung . . . 520 15. 2 . . . Privilegien und Rollen . . . 522 15. 3 . . . Administration der Benutzerrechte (DCL) . . . 526 15. 4 . . . Ein Blick hinter die Kulissen . . . 532 15. 5 . . . Server-Konfiguration und -Absicherung . . . 53416. Logging und Backups . . . 539 16. 1 . . . Logging . . . 539 16. 2 . . . Backups . . . 543 16. 3 . . . Import und Export . . . 55117. Replikation und High Availability . . . 555 17. 1 . . . Replikation . . . 555 17. 2 . . . Replikations-Setup in MySQL . . . 562 17. 3 . . . High Availability . . . 56618. Stored Procedures und Trigger . . . 567 18. 1 . . . Programmierung auf DBMS-Ebene versus Client-Code . . . 567 18. 2 . . . Hello, Stored Procedure! . . . 570 18. 3 . . . Stored Procedures und Funktionen . . . 575 18. 4 . . . Fehlerabsicherung und Cursor . . . 583 18. 5 . . . Administration und Sicherheit . . . 587 18. 6 . . . Trigger . . . 58919. Client-Programmierung . . . 591 19. 1 . . . Konzepte der Client-Programmierung . . . 591 19. 2 . . . Beispiel 1: Java und JDBC . . . 596 19. 3 . . . Beispiel 2: Kotlin und Exposed . . . 600TEIL V. NoSQL . . . 60720. Von relationalen Datenbanken zu NoSQL . . . 609 20. 1 . . . Verteilte Datenbankmanagementsysteme . . . 610 20. 2 . . . Objektorientierte Datenbanken . . . 619 20. 3 . . . Online Analytical Processing (OLAP) . . . 625 20. 4 . . . NoSQL . . . 633 20. 5 . . . Wiederholungsfragen . . . 64821. MongoDB . . . 651 21. 1 . . . Installation . . . 651 21. 2 . . . Abfragen durchführen . . . 656 21. 3 . . . Nicht relationales Datenbankdesign . . . 662 21. 4 . . . »todo«-Datenbank . . . 665 Anhang . . . 669 A. MySQL installieren und einrichten . . . 669 A. 1 . . . MySQL Workbench . . . 670 A. 2 . . . Onlinezugriff auf die Beispieldatenbanken . . . 672 A. 3 . . . MySQL-Server unter Windows installieren . . . 673 A. 4 . . . MySQL-Server unter macOS installieren . . . 676 A. 5 . . . MySQL-Server unter Linux installieren . . . 677 A. 6 . . . Der Kommando-Client mysql . . . 679 A. 7 . . . Die MySQL-Shell mysqlsh . . . 683 A. 8 . . . Beispieldatenbanken lokal installieren . . . 685 A. 9 . . . Server-Konfiguration für den Unterricht . . . 686 B. Lösungen . . . 691 B. 1 . . . Kapitel 2: »Grundlagen relationaler Datenbanken« . . . 691 B. 2 . . . Kapitel 3: »Datenbankmodellierung« . . . 699 B. 3 . . . Kapitel 4: »Datentypen« . . . 711 B. 4 . . . Kapitel 5: »Primary Keys, Foreign Keys und referenzielle Integrität« . . . 714 B. 5 . . . Kapitel 6: »Indizes« . . . 720 B. 6 . . . Kapitel 7: »Physische Modellierung« . . . 726 B. 7 . . . Kapitel 8: »Modellierungsbeispiele« . . . 729 B. 8 . . . Kapitel 9: »Relationale Algebra und SQL« . . . 738 B. 9 . . . Kapitel 10: »Daten abfragen (SELECT)« . . . 741 B. 10 . . . Kapitel 11: »Daten ändern (INSERT, UPDATE, DELETE)« . . . 747 B. 11 . . . Kapitel 12: »Transaktionen« . . . 750 B. 12 . . . Kapitel 13: »Subqueries, Rekursion, Zusatzfunktionen« . . . 753 B. 13 . . . Kapitel 14: »Volltextsuche, geografische Daten, XML und JSON« . . . 759 B. 14 . . . Kapitel 20: »Von relationalen Datenbanken zu NoSQL« . . . 760 Index . . . 769