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 . . . 13
TEIL 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 . . . 86
TEIL 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 . . . 334
TEIL 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 . . . 362
10. 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 . . . 407
11. 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 . . . 424
12. 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 . . . 458
13. 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 . . . 494
14. 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 . . . 515
TEIL IV. Administration und Programmierung . . . 517
15. 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 . . . 534
16. Logging und Backups . . . 539
16. 1 . . . Logging . . . 539
16. 2 . . . Backups . . . 543
16. 3 . . . Import und Export . . . 551
17. Replikation und High Availability . . . 555
17. 1 . . . Replikation . . . 555
17. 2 . . . Replikations-Setup in MySQL . . . 562
17. 3 . . . High Availability . . . 566
18. 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 . . . 589
19. 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 . . . 600
TEIL V. NoSQL . . . 607
20. 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 . . . 648
21. 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