Inhaltsverzeichnis

Alle Kapitel aufklappen
Alle Kapitel zuklappen
Materialien zum Buch
21
1 Einführung
23
1.1 Für wen ist dieses Buch geschrieben?
23
1.2 Aufbau des Buches
24
1.2.1 Teil I - Einführung und Grundlagen
24
1.2.2 Teil II - Die SELECT-Anweisung
25
1.2.3 Teil III - Datenmanipulation und Erzeugung von Datenbankobjekten
27
1.2.4 Teil IV - Spezielle Abfragetechniken
28
1.2.5 Teil V - Datenbankmodellierung
31
1.3 Anmerkung zur dritten Auflage
33
1.4 Anmerkung zur zweiten Auflage
34
1.5 Danksagung
35
Teil I Einführung und Grundlagen
37
2 Verwendete Werkzeuge und Skripte
39
2.1 Aufsetzen einer Beispieldatenbank
39
2.1.1 Warum Sie eine Datenbank zum Testen haben sollten
39
2.1.2 Eine Datenbank herunterladen und installieren
40
2.1.3 Installation der Beispielschemata
51
2.2 Die Datenbankbenutzer
53
2.2.1 SYS und SYSTEM
54
2.2.2 SCOTT
54
2.2.3 HR
54
2.2.4 SH
54
2.2.5 OE
55
2.3 SQL Developer
55
2.3.1 SQL Developer herunterladen und installieren
55
2.3.2 Übersicht SQL Developer
56
2.3.3 Eine Datenbankverbindung aufbauen
56
2.3.4 SQL-Anweisungen ausführen
59
2.4 Online-Dokumentation und weiterführende Literatur
60
3 Konzept einer relationalen Datenbank
65
3.1 Die Idee der relationalen Speicherung
65
3.1.1 Aufteilung der Daten auf Tabellen
67
3.1.2 Die Spielregeln relationaler Datenbanken
68
3.1.3 Die 1:n-Beziehung und ihre Varianten
73
3.1.4 Die m:n-Beziehung
75
3.1.5 Zusammenfassung
80
3.2 SQL - die »Lingua franca« der Datenbank
82
3.2.1 Was ist SQL?
82
3.2.2 Von Daten und Informationen
84
3.2.3 Wozu wird SQL in der Datenbank verwendet?
85
3.2.4 Kurzübersicht: Die Standards und was davon zu halten ist
87
3.3 Analyse vorhandener Datenmodelle
89
3.3.1 Warum es nicht »das« Datenmodell gibt
89
3.3.2 Beispielanalyse: Der Benutzer HR
91
3.3.3 Ausblick
95
Teil II Die SELECT-Anweisung
97
4 Grundlagen: Auswahl und Projektion
99
4.1 Projektion
99
4.1.1 Spalten einschränken
100
4.1.2 Mit Spaltenwerten rechnen
103
4.1.3 Mit alphanumerischen Spalten arbeiten
105
4.1.4 Die Tabelle DUAL
108
4.1.5 Spalten- und Tabellenalias
109
4.2 Auswahl
113
4.2.1 Zeilen auswählen mit der WHERE-Klausel
113
4.2.2 Boolesche Operatoren
116
4.2.3 Einschränkungen mit LIKE, IN und BETWEEN
118
4.2.4 Duplikate filtern mit DISTINCT
127
4.3 Sortieren von Zeilenmengen
129
4.3.1 ORDER BY
130
4.3.2 ASC/DESC
130
4.3.3 NULLS FIRST und NULLS LAST
131
4.3.4 Einfluss der Sortierung auf die Datenbankleistung
132
4.4 Fallunterscheidungen
133
4.4.1 CASE-Anweisung
133
4.4.2 DECODE-Funktion
138
4.5 Die Klausel ROW LIMITING
140
4.6 Pseudospalten
143
4.6.1 ROWNUM
143
4.6.2 Sequenzwerte
145
4.6.3 ROWID
147
4.6.4 ORA_ROWSCN
148
4.6.5 Weitere Pseudospalten
148
4.7 Kommentare
149
4.7.1 Einzeiliger Kommentar
149
4.7.2 Mehrzeiliger Kommentar
149
4.7.3 Einige Anmerkungen zu Kommentaren
150
4.8 Der NULL-Wert
151
4.8.1 Was ist ein NULL-Wert bei Oracle?
152
4.8.2 Ein bisschen Quälerei mit NULL-Werten
154
4.8.3 Der NULL-Wert bei booleschen Operatoren
155
4.9 Übungen
159
5 Daten aus mehreren Tabellen lesen: Joins
161
5.1 Einführung in Joins
162
5.2 Inner Join
163
5.2.1 Equi-Join
165
5.2.2 Reihenfolge der Tabellen
170
5.2.3 Non-Equi-Join
171
5.2.4 Oracle-proprietäre Schreibweise
174
5.2.5 Joins versus Datenbank-Constraints
175
5.3 Outer Join
176
5.3.1 Left und Right Outer Join
177
5.3.2 Oracle-proprietäre Schreibweise
181
5.3.3 Full Join
182
5.3.4 Oracle-proprietäre Schreibweise
184
5.3.5 Cross-Join
184
5.3.6 Oracle-proprietäre Schreibweise
185
5.4 Anti-Join, Semi-Join, Self-Join und Natural Join
185
5.4.1 Anti-Join
186
5.4.2 Semi-Join
187
5.4.3 Self-Join
188
5.4.4 Natural Join
190
5.5 Mengenoperationen mit UNION, MINUS und INTERSECT
191
5.5.1 UNION und UNION ALL
191
5.5.2 MINUS
193
5.5.3 INTERSECT
195
5.5.4 Besonderheiten und Einsatzbeispiele
195
5.6 Übungen
197
5.7 Zusatz: Weiterführende Join-Konzepte
198
5.7.1 Datenverdichtung mit partitionierten Joins
198
5.7.2 CROSS APPLY, OUTER APPLY und LATERAL
203
6 Zeilenfunktionen
205
6.1 Grundsätzliches zu Funktionen
206
6.1.1 Funktionstypen
206
6.1.2 Funktionsparameter
206
6.1.3 Die verschiedenen Arten von Zeilenfunktionen
208
6.2 Zeichenfunktionen
209
6.2.1 Funktionen zur Textsuche und -auswertung
209
6.2.2 Funktionen zur Textmanipulation
212
6.2.3 Reguläre Ausdrücke
219
6.2.4 Erzeugungs- und Konvertierungsfunktionen
229
6.2.5 Mister Q
230
6.2.6 Übungen
233
6.3 Datumsfunktionen
233
6.3.1 Ein Datum erzeugen
236
6.3.2 Erzeugung eines Intervalls
246
6.3.3 Rundungsfunktionen
247
6.3.4 Datumsarithmetik
249
6.3.5 Datumsfunktionen
252
6.3.6 Übungen
255
6.4 Mathematische Funktionen
255
6.4.1 Übersicht über die mathematischen Funktionen
256
6.4.2 Konvertierungsfunktionen und Zahlenformate
265
6.4.3 Spezielle mathematische Funktionen
269
6.4.4 Übungen
271
6.5 Allgemeine Funktionen
271
6.5.1 Vergleichsfunktionen GREATEST und LEAST
272
6.5.2 COLLATE-Operator zur Kontrolle des Sortier- und Vergleichsverhaltens
272
6.5.3 Arbeiten mit dem NULL-Wert
277
6.5.4 Konvertierungsfunktionen
281
6.5.5 Funktionen für Spezialfelder von Oracle
286
6.5.6 Hashcodes erstellen
289
6.5.7 Übungen
291
6.6 Eigene Funktionen erstellen: Berechnung der Fakultät
291
6.6.1 Anforderungen und Test
291
6.6.2 Implementierung in PL/SQL
292
7 Gruppenfunktionen
297
7.1 Die Standardgruppenfunktionen
298
7.1.1 AVG, MAX, MIN, SUM und COUNT
298
7.1.2 MEDIAN, VARIANCE und STDDEV
299
7.1.3 Gruppenfunktionen und NULL-Werte
301
7.1.4 Gruppenfunktion und die DISTINCT-/UNIQUE-Klausel
303
7.2 Gruppierung von Gruppenfunktionen
303
7.2.1 Die Klausel GROUP BY
304
7.2.2 Der NULL-Wert und die Gruppierung
305
7.2.3 Gruppieren nach mehreren Kriterien
306
7.2.4 Wozu dient die Gruppierung?
309
7.2.5 Filtern der Gruppenergebnisse durch HAVING
309
7.2.6 Erweiterte Konzepte der Gruppierung: ROLLUP und CUBE
311
7.2.7 Geschachtelte Gruppenfunktionen
316
7.3 Spezielle Gruppenfunktionen
317
7.3.1 DENSE_RANK und RANK
317
7.3.2 FIRST und LAST
320
7.3.3 LISTAGG
323
7.4 Wenn ungefähr ausreicht
324
7.5 Übungen
326
8 Unterabfragen
327
8.1 Die Unterabfrage in der WHERE-Klausel
327
8.1.1 Unterabfragen, die einen Wert zurückliefern: Skalare Unterabfrage
328
8.1.2 Unterabfragen mit mehreren Zeilen
330
8.1.3 Unterabfragen mit mehreren Spalten
333
8.1.4 Paarweiser und nicht paarweiser Vergleich
334
8.1.5 Harmonisierte Unterabfrage
337
8.2 Die Unterabfrage in der FROM-Klausel (Inner View)
339
8.2.1 Beispiel
339
8.2.2 Vergleich zur harmonisierten Unterabfrage
341
8.2.3 Die WITH-Klausel
344
8.3 Die Unterabfrage in der SELECT-Klausel (skalare Unterabfrage)
346
8.4 Unterabfragen und Joins
349
8.4.1 Anti-Joins
349
8.4.2 Semi-Joins mit der EXISTS-Klausel
351
8.5 Funktionen in der WITH-Klausel
352
8.6 Übungen
354
Teil III Datenmanipulation und Erzeugung von Datenbankobjekten
355
9 Datenmanipulation
357
9.1 Die INSERT-Anweisung
357
9.1.1 Allgemeine Syntax
358
9.2 Die UPDATE-Anweisung
363
9.2.1 Allgemeine Syntax
364
9.2.2 Variationen zum Thema
365
9.3 Die DELETE-Anweisung
373
9.4 Die MERGE-Anweisung
374
9.4.1 Allgemeine Syntax
375
9.4.2 Variationen zum Thema
379
9.5 Exkurs: Flashback
385
9.6 Sequenzen und Trigger
386
9.6.1 Sequenzen
386
9.6.2 Datenbank-Trigger
390
9.7 Ihr Sicherheitsnetz - die Transaktion
392
9.7.1 Was ist eine Transaktion?
392
9.8 Erweiterung: Fehlerbehandlung während der Datenmanipulation
395
9.8.1 Die Klausel LOG ERRORS
396
9.8.2 Vorbereitung zum Einsatz
397
9.8.3 Verwendung der Klausel LOG ERRORS
399
9.8.4 Darstellung der Fehler
401
9.8.5 Einsatzszenarien
402
9.9 Erweiterung: Multi-Table-Insert
402
9.9.1 Kopieren von Daten in mehrere Zieltabellen
403
9.9.2 Fallweises Einfügen in jeweils eine Zieltabelle
404
9.9.3 Fallweises Einfügen in mehrere Zieltabellen
406
9.9.4 Verwendung von Sequenzen
408
10 Views erstellen
413
10.1 »Normale« Views
413
10.1.1 Was genau ist eine View?
414
10.1.2 Wie werden Views erstellt?
416
10.1.3 Einfache und komplexe Views
424
10.1.4 Fortgeschrittene Views: Analytische Views
426
10.2 Einsatzbereiche von Views
426
10.2.1 Kapselung von Logik
426
10.2.2 Zugriffsschutz
427
10.2.3 Programmieren nach dem Gelbe-Seiten-Prinzip
428
10.2.4 Lösung komplexer Probleme in Teilschritten
428
10.3 Wer sollte Views verwenden?
429
10.4 Materialized View
431
10.4.1 Was ist eine Materialized View?
431
10.4.2 Erstellung von materialisierten Sichten
432
10.4.3 Grenzen der Aktualisierung
445
11 Tabellen erstellen
447
11.1 Einfache Tabellen erstellen
448
11.1.1 Allgemeine Syntax
450
11.1.2 Virtuelle Spalten
457
11.1.3 Standardwerte für Spalten
461
11.1.4 Identity Column (Autowertspalten)
461
11.2 Weitere Tabellentypen
464
11.2.1 Indexorganisierte Tabelle
464
11.2.2 Temporäre Tabelle
466
11.2.3 Externe Tabelle
468
11.2.4 Partitionierte Tabelle
473
11.3 Erweiterung zur »aktiven Tabelle«
475
11.3.1 Die Idee der »aktiven Tabelle«
476
11.3.2 Zur Illustration: Beispiel eines Triggers
477
11.3.3 Bewertung dieses Verfahrens
480
12 Indizes erstellen
483
12.1 Was ist ein Index?
484
12.1.1 Einige Überlegungen zur Indizierung
484
12.2 Indextypen bei Oracle
490
12.2.1 B*-Baum-Index
490
12.2.2 Funktionsbasierter Index
491
12.2.3 Bitmap-Index
495
12.3 Spezielle Indextypen
495
12.3.1 Volltextindizierung
496
13 Aufbau einer Oracle-Datenbank
511
13.1 Wie arbeitet eine Oracle-Datenbank?
511
13.1.1 Eine SQL-Anweisung wird ausgeführt
511
13.1.2 Änderung von Daten, Transaktion
514
13.1.3 Daten- und Lesekonsistenz
518
13.2 Datensicherheit
523
13.2.1 Datenbankbenutzer versus Schema
524
13.2.2 Datenbankbenutzer
524
13.2.3 Schema
525
13.3 Erstellung eines Datenbankbenutzers
526
13.3.1 Allgemeine Syntax
527
13.3.2 Grundlegende Rechte
527
13.3.3 Zugriff auf Festplattenspeicher
530
13.4 System- und Objektprivilegien
531
13.4.1 Systemprivilegien
532
13.4.2 Objektprivilegien
534
13.5 Rollen
537
13.6 Passwort- und Ressourcenrechte
538
13.7 Datentypen
539
13.7.1 Texttypen
539
13.7.2 Datumstypen
542
13.7.3 Zahlentypen
546
13.7.4 Große Objekte
548
13.7.5 Sonstige Datentypen
550
13.7.6 Mitgelieferte Objekttypen
551
13.8 Zeichensatzcodierung
552
13.8.1 Single-Byte-Codierungen
552
13.8.2 Multi-Byte-Codierungen
554
13.8.3 Kompatibilitätsprobleme
555
Teil IV Spezielle Abfragetechniken
557
14 Analytische Funktionen
559
14.1 Die Idee der analytischen Funktionen
559
14.1.1 Allgemeine Syntax
560
14.1.2 Einsatzbereiche
566
14.2 Gruppenfunktionen als analytische Funktionen
567
14.2.1 Einfache Beispiele
567
14.2.2 Kombination von analytischen Funktionen mit Gruppenfunktionen
573
14.2.3 Die WINDOW-Klausel
580
14.2.4 RATIO_TO_REPORT
585
14.3 Analytische Rangfunktionen
586
14.3.1 RANK, DENSE_RANK und PERCENT_RANK
587
14.3.2 ROW_NUMBER
594
14.3.3 LAG und LEAD
595
14.4 Zusammenfassung
601
14.5 Übungen
603
15 Hierarchische Abfragen
605
15.1 Das Problem
605
15.2 Lösung mit der Abfrage CONNECT BY
607
15.2.1 Die Pseudospalte LEVEL
612
15.2.2 Sortierung mit ORDER SIBLINGS BY
613
15.3 Erweiterungen zur Abfrage CONNECT BY
615
15.3.1 Weitere Pseudospalten
615
15.3.2 Operator CONNECT_BY_ROOT
618
15.3.3 Die Funktion SYS_CONNECT_BY_PATH
618
15.3.4 Ein etwas komplexeres Anwendungsbeispiel
620
15.3.5 Ein weiteres Beispiel
624
15.4 Hierarchische Abfragen nach ISO-Standard
627
15.4.1 Grundform
627
15.4.2 Erweiterungen
631
16 Arbeiten mit XML
637
16.1 XML-Instanzen mit SQL/XML erzeugen
640
16.1.1 Ein einfaches Beispiel
640
16.1.2 Übersicht über weitere SQL/XML-Funktionen
648
16.2 Bearbeitung von XML-Instanzen in SQL/XML
651
16.2.1 Vorbereitung von Testdaten
651
16.2.2 XQuery
652
16.2.3 Funktion XMLQUERY
653
16.2.4 Funktion XMLTABLE
659
16.2.5 Funktion XMLEXISTS
663
16.2.6 Die Funktion XMLCAST
664
16.3 Speicherung von XML in der Datenbank
665
16.3.1 Wann wird XML in der Datenbank gespeichert?
665
16.3.2 Speicherformen von XML in der Datenbank
667
16.3.3 Registrieren eines XML-Schemas
668
16.3.4 Indizierung von XML-Instanzen
675
16.4 Der Datentyp »XMLType«
675
16.4.1 Verwendung von »XMLType« als Tabellen- oder Spaltentyp
675
16.4.2 XMLType-Member-Functions
677
16.4.3 Umformung von XML mittels XSLT
678
16.4.4 Lesen und Schreiben von XMLType in das Dateisystem
683
17 JSON
685
17.1 Übersicht über JSON
685
17.2 Oracles JSON-Unterstützung
687
17.3 Abfragen gegen JSON-Instanzen
692
17.3.1 Punktnotation (Simplified Syntax for JSON)
692
17.3.2 SQL/JSON-Pfadnotation
692
17.4 JSON-Funktionen und -Operatoren
694
17.4.1 IS JSON bzw. IS NOT JSON
694
17.4.2 Funktion JSON_VALUE
695
17.4.3 Funktion JSON_QUERY
698
17.4.4 Operator JSON_EXISTS
700
17.4.5 Operator JSON_TEXTCONTAINS
701
17.5 Relationale Daten aus JSON extrahieren
702
17.5.1 Funktion JSON_TABLE
702
17.6 Erzeugung von JSON aus relationalen Daten
705
17.6.1 Funktion JSON_OBJECT
705
17.6.2 Funktion JSON_ARRAY
707
17.6.3 Funktion JSON_OBJECTAGG
708
17.6.4 Funktion JSON_ARRAYAGG
709
17.7 JSON Data Guide
711
17.8 Beurteilung
715
18 Pivotieren von Daten
717
18.1 Pivotierung mit Gruppenfunktionen
718
18.2 Pivotierung mit der PIVOT-Klausel
720
18.2.1 Die Klausel FOR IN
720
18.2.2 Die XML-Klausel
725
18.3 Unpivotierung mit Gruppenfunktionen
729
18.4 Unpivotierung mit der UNPIVOT-Klausel
734
19 Row Pattern Matching
737
19.1 Die Grundlagen
737
19.2 Syntaktische Grundlagen
739
19.3 Erweiterungen zur Grundsyntax
746
19.3.1 Implementierung der regulären Ausdrücke
746
19.3.2 Die Klausel AFTER MATCH SKIP
746
19.3.3 Die Klauseln ONE ROW und ALL ROWS PER MATCH
751
19.3.4 Subsets
752
19.3.5 Weitere Optionen
754
19.4 Zusammenfassung
760
20 Die MODEL-Klausel
763
20.1 Lösung des Problems mit der MODEL-Klausel
767
20.2 Partitionierung, Dimension und Messung
770
20.2.1 Partitionierung mit PARTITION BY
771
20.2.2 Dimensionierung mit DIMENSION BY
771
20.2.3 Messung mit MEASURES
772
20.3 Regeln
773
20.3.1 UPSERT versus UPSERT ALL versus UPDATE
774
20.3.2 Referenzen auf Zellen
775
20.3.3 Positionale und symbolische Referenz
776
20.3.4 NULL-Werte versus fehlende Zellen
777
20.3.5 Funktionen und Klauseln für die MODEL-Klausel
778
20.3.6 Sortierung von Regeln und Zellen
782
20.4 Weiterführende Konzepte
784
20.4.1 Iterationen
785
20.4.2 Referenzen
787
20.4.3 Verwendung in komplexen Fallunterscheidungen
791
20.5 Bewertung der MODEL-Klausel
791
21 Umgang mit Datum und Zeit
793
21.1 Erzeugung von Datumstypen
793
21.1.1 Arbeiten mit Zeitzoneninformation
794
21.1.2 Nähere Angaben zu Zeitzonen
797
21.1.3 Zeitzonenangaben in Literalen
799
21.2 Erzeugung von Intervallen
800
21.2.1 Allgemeinere Einführung in die Syntax
800
21.2.2 Intervalle über lange Zeiträume erstellen
801
21.2.3 Intervalle aus Zahlen ermitteln
802
21.2.4 Datumsarithmetik mit Intervallen
803
21.3 Konvertierung von Zeichenketten in Datumstypen
804
21.3.1 Optionaler Parameter NLS_PARAM
804
21.3.2 Die Formatmasken
805
21.4 Zeilenfunktionen für Zeitstempel mit Zeitzonen
810
21.4.1 DBTIMEZONE, SESSIONTIMEZONE
810
21.4.2 FROM_TZ
810
21.4.3 NEW_TIME
811
21.4.4 SYS_EXTRACT_UTC
812
21.4.5 TZ_OFFSET
813
21.4.6 ORA_DST_*
813
21.5 Abfragen über die Zeit: Flashback
814
21.5.1 Verwendung von Flashback auf Tabellenebene
816
21.5.2 Zusammenfassung
819
22 Objektorientierung in der Oracle-Datenbank
821
22.1 Einführung in die Objektorientierung
822
22.1.1 Alles ist ein Objekt
822
22.1.2 Das zweite Reizwort: Vererbung!
824
22.1.3 Abstrakte und finale Klassen
826
22.1.4 Objektidentität versus Statement of Truth
826
22.1.5 Klassen haben komplexe Strukturen
828
22.2 SQL-Typen
830
22.2.1 TYPE
830
22.2.2 VARRAY
838
22.2.3 NESTED TABLE
841
22.3 Objektorientierte Tabellen
846
22.3.1 Anlage einer Tabelle, basierend auf einem Objekt
846
22.3.2 Eigenheiten der Speicherung von NESTED TABLE
850
22.3.3 Objektreferenzen
853
22.4 Objekttabellen als Speichermechanismus
855
22.5 Beurteilung
860
23 Datenwarenhaus
863
23.1 Star-Schema
866
23.2 Dimensionen
869
23.2.1 Die Dimension PRODUCTS
869
23.2.2 Das Datenbankobjekt DIMENSION
871
23.2.3 Slowly Changing Dimensions
872
23.3 Arbeiten mit dem Star-Schema
873
23.3.1 Analyse des Star-Schemas mit SQL
873
23.3.2 Anwendungsbeispiel
874
23.3.3 Speicherung als multidimensionaler Würfel
877
23.3.4 Analytische Views
878
23.4 Zusammenfassung
889
24 Performanzoptimierung von SQL
891
24.1 Sagen Sie der Datenbank, was Sie wollen!
891
24.2 Nutzen Sie alle verfügbaren Optionen von SQL
895
24.3 Vermeiden Sie Umgebungswechsel
899
24.3.1 Funktionsaufrufe aus SQL
899
24.3.2 Zeilen-Trigger
905
24.3.3 Verdeckte Umgebungswechsel
906
24.4 Die Verwendung von Indizes
907
24.4.1 Mythen über Indizes
907
24.4.2 Indizes auf Fremdschlüsselspalten
910
24.4.3 Indizes über mehrere Spalten
915
24.4.4 Bitmap-Join-Index
916
Teil V Datenbankmodellierung
921
25 Die Grundlagen der Datenmodellierung
923
25.1 Normalisierung
923
25.2 Tabellendesign
927
25.2.1 Tabellen für verschiedene Einsatzbereiche
927
25.2.2 Spalten, die in vielen Tabellen verwendet werden
929
25.3 Primärschlüssel
930
25.3.1 Primärschlüssel versus Geschäftsinformation?
931
25.3.2 Primärschlüssel im Umfeld von m:n-Verbindungen
932
25.3.3 Müssen Primärschlüssel Zahlen sein?
933
25.4 Fremdschlüssel
935
25.4.1 Fremdschlüssel und Indizes
935
25.5 Überlegungen zu Datentypen und zur Namenskonvention in Tabellen
936
25.5.1 Überlegungen zu Datentypen
936
25.5.2 Überlegungen zu Namenskonventionen
941
25.6 Zusammenfassung
944
26 Datenmodellierung von Datum und Zeit
947
26.1 Datumsbereiche
947
26.1.1 Speicherung von Datumsbereichen mit zwei Zeitpunkten
947
26.1.2 Speicherung von Datumsintervallen mit WMSYS.WM_PERIOD
955
26.1.3 Andere Datenmodelle zur Speicherung von Datumsbereichen
957
26.1.4 Analyse gegen eine Zeitdimension
962
26.2 Historisierung und Logging
965
26.2.1 Logging von Stammdatenänderungen
967
26.2.2 Historisierende Datenmodelle
972
26.2.3 Weitere historisierende Datenmodellierungsoptionen
979
26.2.4 Bitemporale Datenmodelle
983
27 Speicherung hierarchischer Daten
985
27.1 Hierarchie mittels zusätzlicher Hierarchietabelle
985
27.2 Closure Table
989
27.3 Weitere Modelle
993
27.4 Zusammenfassung
995
28 Abbildung objektorientierter Strukturen
997
28.1 Vererbung
998
28.1.1 Allgemeine Probleme
999
28.1.2 Table per Class
1001
28.1.3 Table per Concrete Class
1001
28.1.4 Table per Class Family
1002
28.2 Kollektionen
1003
28.3 Alternative Lösungsansätze
1004
28.4 Zusammenfassung
1006
29 Internationalisierung
1007
29.1 Oracle im multilingualen Kontext
1007
29.1.1 Was ist das Problem?
1008
29.1.2 Zeichensatzcodierungen
1009
29.1.3 Datumsformate
1011
29.1.4 Sortierung
1013
29.1.5 National Language Support (NLS)
1014
29.2 Datenmodelle zur Übersetzung von Stammdaten
1014
29.2.1 Sprachtabelle
1016
29.2.2 Übersetzung mit einer Übersetzungstabelle
1018
29.2.3 Übersetzung mit einer zentralen Übersetzungstabelle
1019
29.2.4 Entity-Attribute-Value-Tabellen
1020
29.2.5 Übersetzung in einer Tabelle, reloaded
1021
29.2.6 Übersetzung in einer Tabelle, noch einmal reloaded
1026
Index
1031