Lothar Piepmeyer
Grundkurs Datenbanksysteme
Von den Konzepten bis zur Anwendungsentwicklung
Inhaltsverzeichnis
6
Vorwort
14
Teil I: Einleitung
16
1 Was sind eigentlich Datenbanken?
18
1.1 Konsistenz ist Grundvoraussetzung
18
1.2 Keine Datenbank ohne Datenbankmanagementsystem
19
1.3 Dauerhafte Speicherung
20
1.4 Alle auf einen
21
1.5 Auf Nummer sicher
22
1.6 Damit alles stimmt
22
1.7 Tornadosicher
24
1.8 Der Mensch
24
1.9 Warum nicht selber machen?
25
1.10 Das ANSI SPARC-Modell als Lösung
28
1.11 Wie alles anfing
31
1.12 Mit IMS zum Mond
32
1.13 Und heute?
33
1.14 Wie geht es weiter?
34
2 Relationale Datenbanken – eine kurze Übersicht
36
2.1 Relationen gibt es schon lange
36
2.2 Die zwölf Gebote
37
2.3 Funktioniert das überhaupt?
38
2.4 Wo bekommt man ein RDBMS?
39
2.5 Ein RDBMS zum Anfassen
39
2.6 Erste Schritte mit SQL
41
2.7 Der Systemkatalog
43
2.8 Was kann SQL?
45
3 Das relationale Modell
48
3.1 Mengen
48
3.2 Das kartesische Produkt
49
3.3 Relationen
51
3.4 Die Projektion
53
3.5 Superschlüssel
54
3.6 Schlüsselkandidaten
56
3.7 Relationentyp
59
3.8 Fremdschlüssel
60
3.9 Alles nur graue Theorie?
63
4 Die Relationenalgebra
66
4.1 Die Projektion
67
4.2 Abgeschlossenheit
69
4.3 Produkt, Vereinigung und Differenz
70
4.4 Prädikate
73
4.5 Die einfache Selektion
76
4.6 Der Durchschnitt
77
4.7 Die allgemeine Selektion
77
4.8 Der Join
79
4.9 Wo sind die Grenzen?
81
4.10 Was soll das?
82
4.11 Atomare Werte
83
4.12 Wiederholungsgruppen
84
Teil II: Die Datenbank wird erschaffen
86
5 Tabellen und Constraints
88
5.1 Die Wirklichkeit ist nicht vollkommen
88
5.2 Keine Relationentypen in SQL
89
5.3 Domänen – ein selten besuchtes Gebiet
90
5.4 Der Typ ist wichtig
90
5.5 Die reine Lehre
91
5.6 Dubletten verhindern
92
5.7 Primärschlüssel
96
5.8 Fremdschlüssel
96
5.9 Natürliche Schlüssel
99
5.10 Künstliche Schlüssel leicht gemacht
102
5.11 Statische Regeln
103
5.12 Es muss nicht immer statisch sein
105
5.13 Tabellen mit gleichen Namen
106
5.14 null – die unbekannte Dimension
108
5.15 Änderungen von referenzierten Daten
115
5.16 Datentypen
117
6 Von der Idee zum Konzept
124
6.1 Entitäten und ihre Attribute
125
6.2 Entitätstypen
128
6.3 Beziehungen
131
6.4 Wie viel Entität darf's denn sein?
133
6.5 Rekursive Beziehungen
136
6.6 Hält doppelt gemoppelt besser?
138
6.7 Ist doch ganz einfach?
140
7 Von einem Modell zum nächsten
142
7.1 Mehrwertige Datentypen
143
7.2 Zusammengesetzte Attribute
144
7.3 Aus Entitätstypen werden Tabellen
144
7.4 Beziehungen mit mehr als zwei Teilnehmern
145
7.5 Binäre Beziehungen
147
7.5.1 C-CM-Beziehungen
148
7.5.2 1-CM-Beziehungen
148
7.5.3 1-C-Beziehungen
149
7.5.4 C-C-Beziehungen
149
7.5.5 CM-CM-Beziehungen
151
7.5.6 1-1-Beziehungen
152
7.5.7 Weitere Beziehungstypen
154
7.5.8 Beziehungen mit Attributen
154
8 Normalisierung
158
8.1 Anomalien
158
8.2 Die 1. Normalform
162
8.3 Funktionale Abhängigkeiten
163
8.4 Neuer Wein in alten Schläuchen
167
8.5 Die 2. Normalform
168
8.6 Der Weg in die Normalität
170
8.7 Die 3. Normalform
174
Teil III: Ran an die Daten
178
9 Grundlagen von SQL
180
9.1 Merkmale von SQL
180
9.2 Die Bestandteile von SQL
182
9.3 Der Standard
184
10 Einfache select-Anweisungen
186
10.1 Viele Möglichkeiten, um Spalten zu beschreiben
187
10.2 Datensätze mit where auswählen
191
10.3 Einige nützliche Operatoren
193
10.4 Sortieren
196
10.5 Alles in einen Topf
197
11 Funktionen in SQL-Anweisungen
202
11.1 Funktionen zur Textverarbeitung
204
11.2 Funktionen für Zahlen
206
11.3 Funktionen für Datumsangaben
208
11.4 Aggregatfunktionen
209
12 Daten zusammenfassen
214
12.1 Die group by-Komponente
214
12.2 Die having-Komponente
217
13 Datensätze verbinden
222
13.1 Joins mit SQL
224
13.2 Eine andere Syntax
227
13.3 Outer Joins
228
13.4 Muss es immer natürlich sein?
229
13.5 Joins mit mehr als zwei Tabellen
230
14 Geschachtelte Abfragen
234
14.1 Tabellen ohne Join verbinden
234
14.2 Vorsicht bei Mengen
236
14.3 Weitere Operatoren für Mengen
237
14.3.1 all
238
14.3.2 any
240
14.3.3 exists
241
14.4 Geschachtelte Abfragen oder Joins?
241
14.5 Korrelierte geschachtelte Abfragen
243
15 Views – sehen Sie Ihre Daten mal anders
246
15.1 Was sind Views?
248
15.2 Wozu Views?
249
15.3 Änderungen in Views
251
15.4 Codds 6. Regel
253
16 Machen Sie Ihre Datenbanken sicher!
256
16.1 Benutzerverwaltung
257
16.2 Welche Rechte gibt es?
259
16.3 Rechte auf Views
260
16.4 Weitergabe von Rechten
261
16.5 Verkettungen von Rechten
262
Teil IV: Anwendungsentwicklung
264
17 Transaktionen
266
17.1 Was schiefgehen kann, geht schief
266
17.2 Ein Experiment
268
17.3 Anweisungen gruppieren
269
17.4 Das Transaktionsprotokoll
271
17.5 Auch nach außen eine Einheit
272
17.6 ACID – Transaktionen kurz und bündig
274
18 JDBC
276
18.1 Der Cursor – die Verbindung zweier Welten
276
18.2 Wie bringe ich meiner Programmiersprache SQL bei?
279
18.3 Einige Vorarbeiten
280
18.4 Gute Verbindungen sind alles
281
18.5 Aus der Datenbank in das Programm
283
18.6 Ohne Transaktionen würde etwas fehlen
286
18.7 Flottes SQL dank guter Vorbereitung
287
18.8 Kurz vor Schluss
290
19 Hibernate
294
19.1 Was ist O/R-Mapping?
294
19.2 Aufbau einer Entwicklungsumgebung
296
19.3 Die Konfiguration
298
19.4 Ein einfaches Mapping
300
19.5 Daten einfügen und ändern
304
19.6 Daten lesen
306
19.7 Komplexe Attribute
307
19.8 Kein Allheilmittel
309
20 Unter der Haube
312
20.1 Alles kann so einfach sein
312
20.2 Die Festplatte
313
20.3 Caching
316
20.4 Wenn's mal kracht
317
20.5 Das Transaktionsprotokoll
319
20.6 Der Optimierer
321
20.7 Der Index
325
20.8 B+-Bäume
328
20.8.1 Idee
328
20.8.2 Beispiel
330
20.8.3 Regeln
330
20.8.4 Suchen
332
20.8.5 Einfügen
333
20.8.6 Löschen
334
20.8.7 Wie schnell ist das?
335
20.9 Indizierung mit SQL
336
Teil V: Es muss nicht immer relational sein
340
21 Objektdatenbanken
342
21.1 Das Manifest
342
21.2 db4o
344
21.2.1 db4o kann so einfach sein
345
21.2.2 Query By Example
346
21.2.3 Native Abfragen
348
21.3 Warum nicht gleich objektorientiert?
350
22 XML-Datenbanken
352
22.1 Eine ganz einfache Syntax
353
22.2 Selbstdefinierte Regeln
355
22.3 XML und relationale Datenbanken
358
22.3.1 Datenzentriertes XML
358
22.3.2 Dokumentenzentriertes XML
360
22.4 XPath – eine Abfragesprache für XML
362
22.5 XQuery – fast wie zu Hause
366
22.6 Der hybride Ansatz
370
23 NoSQL
374
23.1 Das Kreuz mit dem Schema
374
23.2 Gewaltige Datenmengen
375
23.3 Nicht immer das Gleiche
376
23.4 Schemafreie Datenbanken mit MongoDB
376
23.5 Gruppieren und Aggregieren mit MapReduce
379
23.6 Sharding mit MongoDB
380
23.7 Drum prüfe, wer sich bindet
384
Literaturverzeichnis
386
Stichwortverzeichnis
390
© 2009-2024 ciando GmbH