3 - GBV

Werbung
Andreas Kosch
Client/Server
Datenbankentwicklung mit
Delphi
Verlag GmbH
Inhalt
Inhaltsverzeichnis
Vorwort
1
1
Das Buch zum Buch
3
1.1
Warum?
3
1.2
Der Aufbau des Buches
4
1.3
Die System-Konfiguration
7
Abschnitt I - Theorie der Datenbanken
2
Datenbanken
11
2.1
Datenbank - was ist das ?
11
2.2
Anforderungen an eine Datenbank
13
2.3
Relationales Datenbankmanagementsystem
16
2.4
Relationale Datenbank
18
2.4.2
Tabellen
21
2.4.3
Primär- und Fremdschlüssel
25
2.4.4
Relationale Operatoren
30
2.5
Desktop-Datenbank oder Client/Server-Lösung ?
33
2.5.1
Vergleich der beiden Prinzipien
36
2.5.2
Entscheidungsrichtlinien
38
3
Datenbankdesign
3.1
Anwendungsplanung
41
3.1.1
Wasserfallmodell vs. RAD-Zyklus
41
3.2
Logisches und physisches Datenbankdesign
43
3.3
ER-Modell als Hilfsmittel für das logische Design
44
3.4
Konvertieren des ER-Modells in Relationen
48
3.5
Planung der Datenbank
50
41
I
Inhalt
3.5.1
Eintabellen-vs. Multitabellen-Datenbanken
51
3.6
Normalisierung einer Datenbank
52
3.6.1
Die Ausgangslage
54
3.6.2
Die 1. Normalform
54
3.6.3
Die 2. Normalform
56
3.6.4
Die 3. Normalform
57
3.6.5
De-Normalisierung
60
3.7
Arbeiten mit normalisierten Tabellen
62
3.7.1
Die Regeln zur relationalen Integrität
62
3.7.2
Referenzintegrität
63
3.7.3
Deklarative Referenzintegrität vs. Trigger
65
3.8
Index
66
3.9
Fat Server vs. Fat Client
69
3.10
Resümee
70
Abschnitt II - Minimalversion für einen Benutzer
4
Filesystem-Datenbanken
73
4.1
Pascal-Records in einer typisierten Datei
73
4.2
Minidatenbank mit TClientDataSet
76
4.2.1
TClientDataSet - eine Kurzeinführung
77
4.2.2
Telefonbuch mit einer Datenmenge
78
4.2.3
Mehrere Datenmengen in einer Datei
81
4.2.4
Nested Datasets
87
Abschnitt III - Borland Database Engine (BDE)
5
BDE und die Datenbanken
91
5.1
Eine Kurzbeschreibung
91
5.2
Alias - ein Synonym für die Datenbank
93
5.3
Datenbankformate - Delphis reiche Auswahl
95
5.4
Das Paradox-Tabellenformat
98
5.4.1
Paradox-Versionen
98
5.4.2
Das technische Prinzip
99
5.4.3
Paradox-Tabellen
103
5.4.4
Paradox-Indizes
108
5.4.5
Paradox-Besonderheiten
111
5.4.6
Mehrbenutzerzugriff auf eine Paradox-Datenbank
114
5.4.7
BDE und Paradox
122
5.5
Zugriff auf Fremdformate
125
5.5.1
ODBC
125
5.6
Delphi 5 und die BDE-Alternative A D O
131
5.6.1
OLE DB
132
5.6.2
Von ODBC über DAO zu A D O
136
5.6.3
Das A D O Programmiermodell
137
6
BDE - ein Blick hinter die Kulissen
6.1
Die Architektur der BDE
139
6.2
Leistungsmerkmale der BDE
140
6.3
IDAPI - Aufbau und Verwendung
141
139
6.4
IDAPI-Objekte
143
6.5
Einsatzbeispiel „DriverExplorer"
146
6.6
Einsatzbeispiel Datensatznummernanzeige
150
6.7
BDE in einer DLL verwenden
154
6.8
SQL-Monitor über BDE-Callback nachbauen
159
6.9
Resümee
166
Abschnitt IV - Desktopdatenbanken
7
Desktop-Datenbankanwendungen
169
7.1
Merkmale einer Desktopdatenbank
169
7.2
Das Delphi-Prinzip
170
7.3
Das Beispielprojekt »FuncSrc«
171
7.3.1
Die Datenbank
172
7.3.2
Die Projektdatei
172
Inhalt
7.3.3
Das Datenmodul
174
7.4
Datenmodul in MDI-Anwendungen
176
7.4.1
TSession + TDatabase
177
7.4.2
Die Instanzierung des Datenmoduls
179
7.5
Wertpapierverwaltung - ein komplexes Beispiel
180
7.5.1
Die Datenbank
181
7.5.2
Das Datenmodul
183
7.5.3
Sound oder nicht Sound - das ist hier die Frage!
188
7.5.4
SQL-Abfrage in einem eigenen Thread
191
7.5.5
Datenbank-Backup
196
7.5.6
Auswertungen - dank SQL sehr einfach
197
7.6
Desktopdatenbanken - ein Nachruf?
200
Abschnitt V - SQL
8
SQL - der Standard
8.1
Was ist SQL ?
8.2
SQL-Kommandoklassen
8.2.1
Data Definition Language - DDL
8.2.2
Data Manipulation Language - DML
8.2.3
Data Query Language - DQL
8.2.4
Transaction Control Language - TCL
8.2.5
Database Administration Language - DAL
8.3
W i e verwaltet SQL Daten ?
8.4
SQL-Befehlsausführung
8.5
Aufbau eines SQL-Befehls
8.6
SQL-Elemente
8.6.1
SQL-Zeichen
8.6.2
SQL-Schlüsselwörter
8.6.3
Bezeichner und Namen
8.6.4
Datentypen
8.6.5
Ausdrücke
8.6.6
Selektionsbedingungen
IV
201
201
207
208
208
209
212
213
215
220
221
222
222
222
225
228
230
231
Inhalt
8.6.7
Operatoren
233
8.6.8
Aggregatfunktionen
235
8.6.9
Funktionen
236
8.6.10
Zeilen gruppieren
238
8.6.11
Join - Daten aus mehreren Tabellen abfragen
239
8.6.12
Datenintegrität
245
9
SQL-Beispiele
9.1
Step by Step - ein Exkurs in die SQL-Welt
247
9.2
Besonderheiten von Local SQL
257
9.2.1
Verwendung von BDE-Aliasbezeichnern
257
9.2.2
Lange, Leerzeichen enthaltende Tabellenspaltennamen
258
9.2.3
Datenimport aus anderen Datenbanken
259
9.2.4
Local SQL und die Datumswerte
259
9.3
Parametrisierte SQL-Abfragen
260
9.4
SQL und Sonderzeichen
262
9.5
SQL und der InterBase Server
263
247
Abschnitt VI - Client/Server-Datenbanken
10
Client/Server - Ein erstes Beispiel
265
10.1
Datenbankformular-Experte (TTable)
265
10.2
Datenbankformular-Experte (TQuery)
267
11
Was ist an Client/Server so anders?
11.1
Verarbeitung der Daten aus der Datenbank
269
11.2
Das TQuery.Refresh-Problem
271
1 1.3
Warum ist der InterBase beim Speichern so langsam ?
276
11.3.1
Das Mysterium der DRIVER FLAGS
280
1 1.3.2
Treiber-Eigenschaft COMMIT RETAINING
284
1 1.4
Record/Key deleted
285
1 1.5
TQuery + JOIN = Read-only?
288
11.6
TUpdateSQL
291
269
Inhalt
11.6.1
Das Wirkungsprinzip
292
1 1.6.2
Das Beispielprogramm
294
1 1.7
TUpdateSQL - Alternative OnUpdateRecord
299
11.8
Resümee
302
12
TTable, TQuery oder TStoredProc ?
12.1
Der technische Unterschied
304
12.2
Die Qual der Wahl
306
12.3
Eine Server-Tabelle wird über TTable geöffnet
307
1 2.4
Server-Tabelle über TTable durchsuchen
303
310
12.5
Datensätze über TQuery suchen
312
12.6
Entscheidungskriterien
313
12.6.1
Experimente als Entscheidungshilfen
315
12.6.2
Das zweite Experiment
323
12.7
Beschränkung der Ergebnismenge
326
12.7.1
MAX ROWS - das Sicherheitsventil der BDE
326
12.7.2
TQuery-Nachfolger mit eingebautem Sicherheitsventil
327
12.7.3
Stored Procedure mit eingebautem Sicherheitsventil
329
12.8
Welcher Komponenten-Mix ist der Beste?
330
12.8.1
TEdit oder TDBEdit?
330
12.8.2
TQuery oder DbiQExecDirect ?
331
12.8.3
TDatabase oder InterBase-API?
332
13
Mehrbenutzerzugriff
13.1
Probleme bei der parallelen Verarbeitung
337
13.2
Transaktionen
341
13.2.1
ACID-Eigenschaften einer Transaktion
342
13.2.2
Transaktionszustände
344
13.2.3
Transaktionsmodelle
345
13.2.4
Delphis Transaktionsverwaltung
346
13.3
Sperrverfahren - ein Überblick
347
13.4
Der im SQL-Standard vorgesehene Sperrmechanismus
349
13.5
Das Sperrverfahren des InterBase Servers
350
13.5.1
Versioning - die Multigenerationenarchitektur
351
VI
337
Inhalt
13.5.2
InterBase-Deadlocks
354
13.5.3
Die Transaction Isolation Level des InterBase Servers
357
13.5.4
Der praktische Versuch via InterBase Windows ISQL
359
13.6
TDatabase-Eigenschaft IsolationLevel
361
13.6.1
TDatabase.IsolationLevel vs. InterBase-TIL
362
13.6.2
Praktische Versuche mit TTable
364
13.6.3
Praktische Versuche mit TQuery
369
13.6.4
Praktische Versuche mit einer Delphi-Anwendung
371
13.6.5
Deadlock-Fehlermeldung abfangen
378
13.7
BDE-Eigenschaft PASSTHRUMODE
382
13.8
TDataset-Eigenschaft UpdateMode
385
13.9
Praktische Beispiele
387
13.9.1
InterBase-Tabellen komplett sperren
387
13.9.2
Einzelne Datensätze sperren
390
14
Upsizing - von Paradox zu InterBase
14.1
Vergleich der Tabelleneigenschaften
395
14.2
Datenübernahme
396
14.2.1
Data Pump-Experte
397
14.2.2
Die Datenbankoberfläche
401
14.2.3
Local SQL
402
14.2.4
Daten-Export/Import über eine externe Tabelle
402
14.2.5
Backup und Restore
406
15
InterBase Server
15.1
Der Server-Steckbrief
408
15.2
Die Werkzeugkiste
412
15.2.1
InterBase Configuration und InterBase Guardian
413
15.2.2
Communication Diagnostic Tool
415
15.2.3
InterBase Server Manager
417
15.2.4
InterBase Windows ISQL
426
15.2.5
InterBase License Registration
427
15.2.6
Kommandozeilen-Tools des InterBase Servers
428
15.3
InterBase und die BDE
431
395
407
Inhalt
15.3.1
Character Set vs. LANG DRIVER
431
15.3.2
Zugriff im Netzwerk
437
15.4
InterBase und der IIS
438
15.5
InterBase-Benutzer
439
15.6
Sweeping
443
15.7
InterBase Optimizer
447
16
Die InterBase-Datenbank
16.1
Page Size
449
16.2
InterBase-Datentypen
450
16.2.1
CHAR vs. VARCHAR
451
16.2.2
BLOB-Felder
453
16.2.3
Genauigkeit von numerischen Datentypen
454
16.3
Domains
466
16.4
Generator
473
16.5
Procedure and Trigger Language
476
16.5.1
Anwendungsbegrenzer
477
16.6
Trigger
478
16.7
Stored Procedures
481
16.7.1
Stored Procedure-Typen
482
16.7.2
SELECT.... INTO
483
16.7.3
SUSPEND vs. EXIT vs. END
483
16.7.4
"Stack overflow" vermeiden
484
16.7.5
Beispiele
486
16.8
Exceptions
492
16.9
Event Alerts
494
16.9.1
Event Alerter-Beispiel
494
16.9.2
Das TIBEventAlerter-Prinzip
498
16.9.3
Event Alerter-Probleme
500
16.9.4
TOSIBEventAlerter - eine Alternative zu TIBEventAlerter
501
16.10
User Defined Functions
502
449
16.10.1 IB_UDF.DLL - das offizielle Zubehör
503
16.10.2 OSUDF.DLL - das Beispiel zum Thema
504
InterBase-Datenbank anlegen
512
16.11
Inhalt
16.11.1 Variante a) InterBase Interactive SQL
51 2
16.11.2 Variante b) InterBase Interactive SQL-Script
515
16.11.3 Variante c) InterBase API
515
16.11.4 Variante d) TIBDatabase-Methode CreateDatabase
518
16.12
519
InterBase-Tabellen
16.12.1 Eigene Namen für Primärschlüssel vergeben
520
16.12.2 Kommentare für Tabellen und Spalten
521
16.12.3 Maximale Länge eines Datensatzes berechnen
522
16.12.4 Read Only-Tabellen?
523
16.12.5 VARCHAR-Spaltengröße nachträglich ändern
523
16.12.6 Temporäre Tabelle simulieren
527
16.12.7 RDB$DB_KEY
528
16.12.8 Testdaten generieren
532
16.12.9 Referenzielle Integrität mit dem InterBase 5.x
535
16.12.10Dependencies
539
16.13
541
SQL Privileges
16.13.1 GRANT - Rechte vergeben
542
16.13.2 REVOKE - Rechte entfernen
542
16.13.3 SQL Roles
543
16.14
Wie geht's weiter?
545
17
C/S-Anwendung »SrcArc«
17.1
Wozu?
547
17.2
Die SrcArc-Datenbank »SRCARC.GDB«
548
17.3
Das Projekt SrcArc - eine Übersicht
553
17.4
Splash-Formular
554
17.5
Datenmodul
556
17.5.1
TDatabase
557
17.5.2
OnCreate und OnDestroy
559
17.5.3
Master-Details-Verbindung
560
17.5.4
Persistente TFields
561
17.5.5
Anwender hat ein Projekt ausgewählt
564
17.5.6
Anzeige des Inhalts einer gespeicherten Projektdatei
565
17.5.7
Neue Version anlegen und die Projektdateien importieren
569
547
IX
Inhalt
7.6
Das Hauptfenster
574
7.6.1
Projekte über TreeView anzeigen und auswählen
574
7.6.2
Formulare aufrufen
576
77
Formular "Projektdateien importieren"
577
7.8
Der Dateiinhalt-Betrachter
577
18
Multithreading
579
8.1
Prozesse und Threads
580
8.1.1
Threads unter W i n 3 2
582
8.1.2
TThread - Delphis Threadobjekt
583
8.2
Formular-Initialisierung in einem Thread
585
8.3
C/S-Anwendung IBCSDemo
591
8.3.1
Vorbereitungen im Datenmodul
592
8.3.2
Login mit zwei gleichzeitig aktiven Datenbankverbindungen
593
8.3.3
TActionList im Hauptformular
595
8.3.4
Hintergrundsuche im Datenbestand
596
8.3.5
PLZ-Eingabe füllt die Combobox mit den Ortsnamen
603
8.3.6
Datensatz über TStoredProc neu anlegen
605
8.3.7
TClientDataset als temporäre Speicher-Tabelle
606
8.3.8
Kunden im Bestand suchen
612
Abschnitt VII - Three-tier-Datenbanken
19
Three-Tier-Anwendungen
19.1
Warum?
617
19.2
Wie?
622
19.3
Resümee
623
Index
x
617
625
Herunterladen