ING_DB
This commit is contained in:
parent
0370f284f3
commit
538785e68f
|
|
@ -0,0 +1,94 @@
|
||||||
|
.th BEISPIEL \*(RR 3.10.89 4
|
||||||
|
Alle Erl\*auterungen beziehen sich auf
|
||||||
|
die Relation personal der \*(II Datenbank \*(rr
|
||||||
|
mit folgender Struktur:
|
||||||
|
.s1
|
||||||
|
.in 12
|
||||||
|
.nf
|
||||||
|
Relation: personal
|
||||||
|
---------
|
||||||
|
Besitzer: \*(ii
|
||||||
|
Domaenanzahl: 4
|
||||||
|
Tupellaenge: 27
|
||||||
|
Tupelanzahl: 7
|
||||||
|
|
||||||
|
Nummer Domaenname Typ Laenge Schluessel
|
||||||
|
---------------------------------------------------
|
||||||
|
1 rec_no i 4
|
||||||
|
2 rec_mark c 1
|
||||||
|
3 num i 2
|
||||||
|
4 name c 20
|
||||||
|
---------------------------------------------------
|
||||||
|
.fi
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
und folgenden Daten:
|
||||||
|
.s1
|
||||||
|
.in 12
|
||||||
|
.nf
|
||||||
|
Relation: personal
|
||||||
|
|
||||||
|
|rec_no |rec_mark |num |name |
|
||||||
|
|---------------------------------------------------|
|
||||||
|
| 1| | 35|Loda, Dieter |
|
||||||
|
| 2| | 55|Malter, Juergen |
|
||||||
|
| 3| | 98|Weise, Juergen |
|
||||||
|
| 4| | 32|Heine, Rolf |
|
||||||
|
| 5| | 33|Ernst, Eva |
|
||||||
|
| 6| | 37|Neumann, Inge |
|
||||||
|
| 7| | 10|Rose, Peter |
|
||||||
|
|---------------------------------------------------|
|
||||||
|
.fi
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
Die Dom\*ane rec_no ist vergleichbar
|
||||||
|
der in \*(RR ver\%f\*ugbaren Satznummer.
|
||||||
|
Die Dom\*ane rec_mark
|
||||||
|
stellt die \*(RR L\*oschmarkierung dar.
|
||||||
|
Die Dom\*ane num ist die An\%ge\%stelltennummer
|
||||||
|
und die Dom\*ane name der Angestelltenname.
|
||||||
|
Die Relation personal ist bewu\*st einfach gehalten,
|
||||||
|
um alle Beispiele \*ubersichtlich
|
||||||
|
und pr\*agnant zu halten.
|
||||||
|
.bp
|
||||||
|
Zu der Beispielrelation personal
|
||||||
|
der \*(II Datenbank \*(rr wurde
|
||||||
|
das folgende DBI-file dbi
|
||||||
|
mit einem \*(UU Texteditor in CL erstellt,
|
||||||
|
die Zeilennummerierung ist nicht Bestandteil
|
||||||
|
des DBI-Textfiles:
|
||||||
|
.s1
|
||||||
|
.nf
|
||||||
|
1 : command part before conversion
|
||||||
|
2
|
||||||
|
3 : \*(RR 2 part
|
||||||
|
4
|
||||||
|
5 2 pers.dbd
|
||||||
|
6
|
||||||
|
7 F 0 # I4
|
||||||
|
8 F 1 * C1
|
||||||
|
9 F 2 NUM N5
|
||||||
|
10 F 3 NAME C20
|
||||||
|
11
|
||||||
|
12 : \*(ii 16.3/4 part
|
||||||
|
13
|
||||||
|
14 I \*(rr
|
||||||
|
15
|
||||||
|
16 : relation personal part
|
||||||
|
17 T personal
|
||||||
|
18
|
||||||
|
19 D 1 rec_no i4
|
||||||
|
20 D 2 rec_mark c1
|
||||||
|
21 D 3 num i2
|
||||||
|
22 D 4 name c20
|
||||||
|
23
|
||||||
|
24 @ 0 1
|
||||||
|
25 @ 1 2
|
||||||
|
26 @ 2 3
|
||||||
|
27 @ 3 4
|
||||||
|
28
|
||||||
|
29 : command part after conversion
|
||||||
|
.fi
|
||||||
|
.s1
|
||||||
|
Mit diesem DBI-file wurde die \*(R2 Datenbank
|
||||||
|
pers.dbd erstellt.
|
||||||
|
|
@ -0,0 +1,798 @@
|
||||||
|
.th DB \*(RR 3.10.89 4
|
||||||
|
.sh AUFRUF
|
||||||
|
db2 [flags] d_b_i d_b_d d_b {r_e_l}
|
||||||
|
.br
|
||||||
|
db3 [flags] d_b_i d_b_d d_b {r_e_l}
|
||||||
|
.sh FLAGS
|
||||||
|
.lp +5 5
|
||||||
|
.in 0
|
||||||
|
-f Ausgabe der \*(RR Felddefinitionen
|
||||||
|
(fields)
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
Die Ausf\*uhrung des Kommandos
|
||||||
|
.lp +8 8
|
||||||
|
% db2 -f dbi pers.dbd \*(rr personal
|
||||||
|
.i0
|
||||||
|
w\*urde folgende Ausgabe erzeugen:
|
||||||
|
.s1
|
||||||
|
.nf
|
||||||
|
--- no --- off --- field --- type --- length --- dec ---
|
||||||
|
| 0 0 # I 4
|
||||||
|
| 1 0 * C 1
|
||||||
|
| 2 1 NUM N 5
|
||||||
|
| 3 6 NAME C 20
|
||||||
|
--------------------------------------------------------
|
||||||
|
.fi
|
||||||
|
.s1
|
||||||
|
Es bedeuten:
|
||||||
|
.lp +20 20
|
||||||
|
no Feldnummer
|
||||||
|
.lp +20 20
|
||||||
|
off Offset des Feldes im \*(RR Datensatz
|
||||||
|
.lp +20 20
|
||||||
|
field Feldname
|
||||||
|
.lp +20 20
|
||||||
|
type Feldtyp
|
||||||
|
.lp +20 20
|
||||||
|
length Feldl\*ange
|
||||||
|
.lp +20 20
|
||||||
|
dec Anzahl der Dezimalstellen
|
||||||
|
(nur bei Feld\%typ N)
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
Das Feld # mit der Nummer 0
|
||||||
|
ist die \*(RR Satznummer,
|
||||||
|
ein Feld das weder im \*(RR Datensatz
|
||||||
|
noch in den \*(RR Feld\%be\%schreibungen erscheint.
|
||||||
|
F\*ur dieses Feld wird der in\%ter\%ne Da\%ten\%typ I4
|
||||||
|
(32-bit Integer)
|
||||||
|
vorgegeben.
|
||||||
|
Das Feld * mit der Nummer 1
|
||||||
|
ist die \*(RR L\*oschmarkierung,
|
||||||
|
ein Feld das im \*(RR Datensatz,
|
||||||
|
nicht aber in den \*(RR Feld\%be\%schreibungen erscheint.
|
||||||
|
F\*ur dieses Feld wird der Da\%ten\%typ C1 vorgegeben.
|
||||||
|
Beide Felder sind imagin\*are Felder,
|
||||||
|
die aber in beiden Richtungen \*ubernommen werden k\*onnen.
|
||||||
|
.s1
|
||||||
|
.lp +5 5
|
||||||
|
.in 0
|
||||||
|
-h Ausgabe der \*(RR Da\%ten\%bankdefinitionen
|
||||||
|
(header)
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
Die Ausf\*uhrung des Kommandos
|
||||||
|
.lp +8 8
|
||||||
|
% db2 -h dbi pers.dbd \*(rr personal
|
||||||
|
.i0
|
||||||
|
w\*urde folgende Ausgabe erzeugen:
|
||||||
|
.s1
|
||||||
|
.nf
|
||||||
|
---- \*(RR -- 2 ----
|
||||||
|
| database from file | pers.dbd
|
||||||
|
| length of header | 521
|
||||||
|
| number of records | 7
|
||||||
|
| length of record | 26
|
||||||
|
| last modification | 3.10.1989
|
||||||
|
| number of fields | 4
|
||||||
|
----------------------
|
||||||
|
.fi
|
||||||
|
.s1
|
||||||
|
Es bedeuten:
|
||||||
|
.lp +20 20
|
||||||
|
database\ from\ file \*(UU Filename der \*(RR Da\%ten\%bank
|
||||||
|
.lp +20 20
|
||||||
|
length\ of\ header \*(RR Kopfl\*ange,
|
||||||
|
der Kopf enth\*alt die Da\%ten\%bank-
|
||||||
|
und die Felddefinitionen.
|
||||||
|
Nach dem Kopf folgen die Datens\*atze.
|
||||||
|
.lp +20 20
|
||||||
|
number\ of\ records Anzahl der \*(RR Datens\*atze,
|
||||||
|
dabei sind auch die zum L\*oschen markierten Da\%ten\%s\*atze eingeschlossen.
|
||||||
|
.lp +20 20
|
||||||
|
length\ of\ record L\*ange eines \*(RR Datensatzes
|
||||||
|
(in By\%tes),
|
||||||
|
in der L\*ange ist das Feld zur Mar\%kie\%rung
|
||||||
|
gel\*oschter Daens\*atze ent\%hal\%ten.
|
||||||
|
.lp +20 20
|
||||||
|
last\ modification Datum der letzten \*Anderung
|
||||||
|
in der \*(RR Da\%ten\%bank
|
||||||
|
.lp +20 20
|
||||||
|
number\ of\ fields Anzahl der \*(RR Felder,
|
||||||
|
die Anzahl ist gegen\*uber \*(RR um 2 erh\*oht,
|
||||||
|
da die beiden in \*(RR direkt nicht vor\%kom\%menden Felder
|
||||||
|
Satznummer und L\*osch\%mar\%kierung
|
||||||
|
automatisch zur Feld\%be\%schreibung hinzugef\*ugt werden.
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
.lp +5 5
|
||||||
|
.in 0
|
||||||
|
-i \*Ubernahme der \*(RR Da\%ten\%bank
|
||||||
|
im \*(II Format,
|
||||||
|
das
|
||||||
|
.i0
|
||||||
|
hei\*st,
|
||||||
|
die imagin\*aren Felder Satznummer
|
||||||
|
und L\*osch\%mar\%kie\%rung werden nicht \*ubernommen.
|
||||||
|
.s1
|
||||||
|
.lp +5 5
|
||||||
|
.in 0
|
||||||
|
-l das DBI-file soll nicht erzeugt werden,
|
||||||
|
d.h. die \*(RR
|
||||||
|
.i0
|
||||||
|
Da\%ten\%bank soll nur gelistet werden
|
||||||
|
(list only)
|
||||||
|
.s1
|
||||||
|
.lp +5 5
|
||||||
|
.in 0
|
||||||
|
-r Ausgabe aller \*(RR Datens\*atze
|
||||||
|
(records)
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
Die Ausf\*uhrung des Kommandos
|
||||||
|
.lp +8 8
|
||||||
|
% db2 -r dbi pers.dbd \*(rr personal
|
||||||
|
.i0
|
||||||
|
w\*urde folgende Ausgabe erzeugen:
|
||||||
|
.s1
|
||||||
|
.nf
|
||||||
|
----no-*------------------------------------------------
|
||||||
|
| 1| | 35|Loda, Dieter
|
||||||
|
| 2| | 55|Malter, Juergen
|
||||||
|
| 3| | 98|Weise, Juergen
|
||||||
|
| 4| | 32|Heine, Rolf
|
||||||
|
| 5| | 33|Ernst, Eva
|
||||||
|
| 6| | 37|Neumann, Inge
|
||||||
|
| 7| | 10|Rose, Peter
|
||||||
|
--------------------------------------------------------
|
||||||
|
.fi
|
||||||
|
.s1
|
||||||
|
Es bedeuten:
|
||||||
|
.lp +20 20
|
||||||
|
no \*(RR Satznummer
|
||||||
|
.lp +20 20
|
||||||
|
* \*(RR L\*oschmarkierung,
|
||||||
|
ein Leer\%zei\%chen kennzeichnet einen g\*ultigen Da\%ten\%satz,
|
||||||
|
ein * einen gel\*oschten Datensatz.
|
||||||
|
.lp +20 20
|
||||||
|
----- \*(RR Datensatz,
|
||||||
|
die Felder werden durch das Zeichen | separiert.
|
||||||
|
Eine bi\%n\*a\%re Null wird als * dargestellt.
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
.lp +5 5
|
||||||
|
.in 0
|
||||||
|
-rd Ausgabe nur der gel\*oschten \*(RR Datens\*atze
|
||||||
|
.i0
|
||||||
|
(deleted records)
|
||||||
|
.s1
|
||||||
|
.lp +5 5
|
||||||
|
.in 0
|
||||||
|
-rv Ausgabe nur der g\*ultigen \*(RR Datens\*atze
|
||||||
|
.i0
|
||||||
|
(valid records)
|
||||||
|
.sh ARGUMENTE
|
||||||
|
.lp +8 8
|
||||||
|
d_b_i \*(UU-file-name des DBI-files
|
||||||
|
.lp +8 8
|
||||||
|
d_b_d \*(UU-file-name der \*(RR Da\%ten\%bank
|
||||||
|
.lp +8 8
|
||||||
|
d_b Name der \*(II Da\%ten\%bank
|
||||||
|
.lp +8 8
|
||||||
|
{r_e_l} Namen von \*(II Relationen
|
||||||
|
aus der Da\%ten\%bank d_b
|
||||||
|
(max. 5, durch Leerzeichen getrennt)
|
||||||
|
.i0
|
||||||
|
.sh FUNKTION
|
||||||
|
db2, db3 erstellt zu der existierenden
|
||||||
|
\*(RR Da\%ten\%bank d_b_d das DBI-
|
||||||
|
(Data Bases Interface)
|
||||||
|
Textfile d_b_i
|
||||||
|
in CL mit einer vollst\*andigen Zuordnung der
|
||||||
|
\*(RR Da\%ten\%bank zu den Relationen {r_e_l} der
|
||||||
|
\*(II Da\%ten\%bank d_b.
|
||||||
|
Das Programm kann zus\*atzlich
|
||||||
|
zum Auslisten der \*(RR Da\%ten\%bank verwendet werden.
|
||||||
|
.br
|
||||||
|
Das Textfile d_b_i kann anschlie\*send
|
||||||
|
mit einem \*(UU Text\%editor ge\*andert werden.
|
||||||
|
Bei der Angabe mehrere Re\%la\%tio\%nen
|
||||||
|
wer\%den alle \*(RR Felder jeder \*(II Relation zu\%ge\%ordnet,
|
||||||
|
so da\*s eine Bearbeitung
|
||||||
|
des Textfile d_b_i un\%er\%l\*a\*s\%lich ist.
|
||||||
|
Die Programme db2, db3 stellen
|
||||||
|
also nur ein Ger\*ust f\*ur die Konvertierung
|
||||||
|
\*(RR/\*(II bereit,
|
||||||
|
grunds\*atzlich kann das DBI-Textfile
|
||||||
|
auch vollst\*andig mit der Hand erstellt werden.
|
||||||
|
Das kann notwendig sein,
|
||||||
|
wenn kei\%ne \*(RR Da\%ten\%bank vorhanden ist,
|
||||||
|
weil sie erst generiert werden soll.
|
||||||
|
.s1
|
||||||
|
Was kann in d_b_i alles ge\*andert werden
|
||||||
|
(vergleiche dazu das DBI-Textfile aus BEISPIEL(\*(RR)) ?
|
||||||
|
.s1
|
||||||
|
Nach der Kommentarzeile
|
||||||
|
.lp +8 8
|
||||||
|
: command part before conversion
|
||||||
|
.i0
|
||||||
|
k\*onnen \*(UU Kommandos eingetragen wer\%den,
|
||||||
|
die vor dem Auslesen (Read)
|
||||||
|
bzw. Schrei\%ben (Write)
|
||||||
|
von \*(RR Da\%ten\%banken
|
||||||
|
ausgef\*uhrt werden sollen.
|
||||||
|
Alle Zeilen der Form
|
||||||
|
.lp +8 8
|
||||||
|
R \*(uu command
|
||||||
|
.i0
|
||||||
|
werden von rdb2, rdb3
|
||||||
|
(Read \*(rr Data Base)
|
||||||
|
und alle Zei\%len der Form
|
||||||
|
.lp +8 8
|
||||||
|
W \*(uu command
|
||||||
|
.i0
|
||||||
|
werden von wdb2, wdb3
|
||||||
|
(Write \*(rr Data Base)
|
||||||
|
ausgef\*uhrt.
|
||||||
|
Es ist zul\*assig,
|
||||||
|
mehrere Kommandos anzugeben.
|
||||||
|
.bp
|
||||||
|
Im folgenden werden einige sinnvolle Kommandos diskutiert.
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
R \*(ms xb d_b_d
|
||||||
|
.lp +8 8
|
||||||
|
R \*(cp xb d_b_d
|
||||||
|
.i0
|
||||||
|
Mit den Programmen
|
||||||
|
\*(ms (\*(MS(\*(RR)),
|
||||||
|
\*(cp (\*(CP(\*(RR))
|
||||||
|
kann die \*(RR Da\%ten\%bank
|
||||||
|
von einem \*(MS-, \*(CP-Da\%ten\%tr\*ager
|
||||||
|
ins \*(UU Filesystem
|
||||||
|
unter dem Namen d_b_d eingespielt werden.
|
||||||
|
Es k\*on\%nen auch beliebige andere Programme aufgrufen werden,
|
||||||
|
die diese Funktion
|
||||||
|
(in der Regel langsamer)
|
||||||
|
erf\*ullen.
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
R cdb d_b d_b_i
|
||||||
|
.i0
|
||||||
|
Das Kommando cdb(\*(RR) erzeugt vor der Konvertierung
|
||||||
|
die n\*otigen \*(II Relationen,
|
||||||
|
die vorher gel\*oscht werden.
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
R modifyr d_b r_e_l truncated
|
||||||
|
.i0
|
||||||
|
Das Kommando l\*oscht die Daten der
|
||||||
|
Relation r_e_l in der \*(II Da\%ten\%bank d_b,
|
||||||
|
um sie anschlie\*send mit den Daten
|
||||||
|
der \*(RR Da\%ten\%bank zu f\*ullen.
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
R modifyr d_b r_e_l heap
|
||||||
|
.i0
|
||||||
|
Das Kommando setzt die
|
||||||
|
Relation r_e_l in der \*(II Da\%ten\%bank d_b zur\*uck,
|
||||||
|
um ein schnelles Laden
|
||||||
|
der \*(RR Da\%ten\%bank zu garantieren.
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
R echo `infomativer Text'
|
||||||
|
.lp +8 8
|
||||||
|
W echo `infomativer Text'
|
||||||
|
.i0
|
||||||
|
Zu Protokollzwecken k\*onnen Texte
|
||||||
|
\*uber echo(1)
|
||||||
|
oder andere Kommandos ausgegeben werden.
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
W rm -f d_b_d
|
||||||
|
.i0
|
||||||
|
Das Kommando l\*oscht die alte \*(RR Da\%ten\%bank d_b_d.
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
W modifyr d_b r_e_l
|
||||||
|
.i0
|
||||||
|
Das Kommando reorganisiert die Relation r_e_l
|
||||||
|
der \*(II Da\%ten\%bank d_b,
|
||||||
|
um die richtige Satzreihenfolge
|
||||||
|
in der \*(RR Da\%ten\%bank zu erzeugen.
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
W modifyr d_b r_e_l heapsort ...
|
||||||
|
.i0
|
||||||
|
Das Kommando sortiert die Relation r_e_l
|
||||||
|
der \*(II Da\%ten\%bank d_b,
|
||||||
|
um eine gew\*unschte Satzreihenfolge
|
||||||
|
der \*(RR Da\%ten\%bank zu erzeugen.
|
||||||
|
.s1
|
||||||
|
\*Anderungen in der Beschreibung
|
||||||
|
der \*(RR Datenbank,
|
||||||
|
des \*(II Datenbanknamens
|
||||||
|
und der \*(II Relationsnamen
|
||||||
|
sind in der Regel nicht angebracht.
|
||||||
|
.s1
|
||||||
|
In den Definitionen der Dom\*anen
|
||||||
|
einer \*(II Relation
|
||||||
|
k\*onnen folgende \*Anderungen durchgef\*uhrt werden.
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
- Streichen von Zeilen
|
||||||
|
.i0
|
||||||
|
d.h. es sollen nicht alle
|
||||||
|
\*(RR Felder in die
|
||||||
|
\*(II Relation aufgenommen werden.
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
- Hinzuf\*ugenen von Zeilen
|
||||||
|
.i0
|
||||||
|
d.h. es gibt in der
|
||||||
|
\*(II Relation Dom\*anen,
|
||||||
|
die nicht aus
|
||||||
|
\*(RR Feldern gef\*ullt werden.
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
- \*Andern des Namens der Dom\*ane
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
- \*Andern des Typs der Dom\*ane
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
Nachdem alle \*Anderungen in den Definitionen der Dom\*anen
|
||||||
|
einer \*(II Relation ausgef\*uhrt sind,
|
||||||
|
mu\*s sicher\%gestellt werden,
|
||||||
|
da\*s die Dom\*anen von 1 bis n
|
||||||
|
l\*uckenlos durchnummeriert sind.
|
||||||
|
Eine aufsteigende Sortierung ist nicht notwendig,
|
||||||
|
sollte aber aus Gr\*unden der Lesbarkeit
|
||||||
|
an\%ge\%strebt werden
|
||||||
|
.s1
|
||||||
|
Im Zuordnungsteil wird definiert,
|
||||||
|
welches \*(RR Feld in welche
|
||||||
|
\*(II Dom\*ane konvertiert werden soll.
|
||||||
|
\*An\%de\%run\%gen im Definitionsteil
|
||||||
|
der Dom\*anen m\*ussen sinngem\*a\*s
|
||||||
|
im Zuordnungsteil wiederholt werden.
|
||||||
|
Folgende Typ\%zu\%ord\%nun\%gen wer\%den unterst\*utzt:
|
||||||
|
.s1
|
||||||
|
.in 13
|
||||||
|
.nf
|
||||||
|
\*(RR \*(II
|
||||||
|
----------------------------------------------------
|
||||||
|
Cl (0 < l < 255) cn (0 < n < 256)
|
||||||
|
D c8
|
||||||
|
L c1
|
||||||
|
Nl.d (0 <= d < l < 21) i1 || i2 || i4 || f4 || f8
|
||||||
|
M (nur \*(R3/4) keine Zuordnung m\*oglich
|
||||||
|
Satznummer i4
|
||||||
|
Loeschmarkierung c1
|
||||||
|
.fi
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
.s1
|
||||||
|
Nach der Kommentarzeile
|
||||||
|
.lp +8 8
|
||||||
|
: command part after conversion
|
||||||
|
.i0
|
||||||
|
k\*onnen \*(UU Kommandos eingetragen wer\%den,
|
||||||
|
die nach dem Auslesen (Read)
|
||||||
|
bzw. Schrei\%ben (Write)
|
||||||
|
von \*(RR Da\%ten\%banken
|
||||||
|
ausgef\*uhrt werden sollen.
|
||||||
|
Alle Zeilen der Form
|
||||||
|
.lp +8 8
|
||||||
|
R \*(uu command
|
||||||
|
.i0
|
||||||
|
werden von rdb2, rdb3
|
||||||
|
(Read \*(rr Data Base)
|
||||||
|
und alle Zei\%len der Form
|
||||||
|
.lp +8 8
|
||||||
|
W \*(uu command
|
||||||
|
.i0
|
||||||
|
werden von wdb2, wdb3
|
||||||
|
(Write \*(rr Data Base)
|
||||||
|
ausgef\*uhrt.
|
||||||
|
Es ist zul\*assig,
|
||||||
|
mehrere Kommandos anzugeben.
|
||||||
|
.bp
|
||||||
|
Im folgenden werden einige sinnvolle Kommandos diskutiert.
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
W \*(ms c d_b_d
|
||||||
|
.lp +8 8
|
||||||
|
W \*(cp c d_b_d
|
||||||
|
.i0
|
||||||
|
Mit den Programmen
|
||||||
|
\*(ms (\*(MS(\*(RR)),
|
||||||
|
\*(cp (\*(CP(\*(RR))
|
||||||
|
kann das \*(UU File d_b_d als \*(RR Da\%ten\%bank
|
||||||
|
auf einem \*(MS-, \*(CP-Da\%ten\%tr\*ager gebracht werden.
|
||||||
|
Es k\*on\%nen auch beliebige andere Programme aufgrufen werden,
|
||||||
|
die diese Funktion
|
||||||
|
(in der Regel langsamer)
|
||||||
|
erf\*ullen.
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
R rm -f d_b_d
|
||||||
|
.lp +8 8
|
||||||
|
W rm -f d_b_d
|
||||||
|
.i0
|
||||||
|
Wenn die \*(RR Datenbank
|
||||||
|
nicht mehr ben\*otigt wird,
|
||||||
|
kann sie aus dem \*(UU Filesystem gel\*oscht werden.
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
R modifyr d_b r_e_l isam ...
|
||||||
|
.lp +8 8
|
||||||
|
W modifyr d_b r_e_l isam ...
|
||||||
|
.i0
|
||||||
|
Das Kommando organisiert die Relation r_e_l
|
||||||
|
der \*(II Datenbank d_b
|
||||||
|
entsprechend dem vorgesehenen Datenmodell um.
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
R indexr d_b r_e_l indexrel ...
|
||||||
|
.lp +8 8
|
||||||
|
W indexr d_b r_e_l indexrel ...
|
||||||
|
.i0
|
||||||
|
Zu dem Prim\*arschl\*ussel
|
||||||
|
k\*onnen Indexschl\*ussel hin\%zu\%ge\%f\*ugt werden.
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
R echo `infomativer Text'
|
||||||
|
.lp +8 8
|
||||||
|
W echo `infomativer Text'
|
||||||
|
.i0
|
||||||
|
Zu Protokollzwecken k\*onnen Texte
|
||||||
|
\*uber echo(1)
|
||||||
|
oder andere Kommandos ausgegeben werden.
|
||||||
|
.sh BEISPIEL\ 1
|
||||||
|
Mit dem Kommando
|
||||||
|
.lp +8 8
|
||||||
|
% rdb2 dbi
|
||||||
|
.i0
|
||||||
|
sollen die Daten der \*(R2 Datenbank pers.dbd
|
||||||
|
an die Re\%la\%tion personal der \*(II Datenbank \*(rr angef\*ugt
|
||||||
|
und mit dem Kommando
|
||||||
|
.lp +8 8
|
||||||
|
% wdb2 dbi
|
||||||
|
.i0
|
||||||
|
soll die \*(R2 Datenbank pers.dbd
|
||||||
|
komplett neu erstellt wer\%den.
|
||||||
|
Die Relation personal soll den
|
||||||
|
Prim\*arschl\*ussel num
|
||||||
|
und den Indexschl\*ussel name haben.
|
||||||
|
Folgendes DBI-Text\%file realisiert die Aufgabenstellung.
|
||||||
|
.s1
|
||||||
|
.nf
|
||||||
|
1 : command part before conversion
|
||||||
|
2 R \*(ms xb pers.dbd
|
||||||
|
3 R modifyr \*(rr personal cheap
|
||||||
|
4 W modifyr \*(rr personal cheapsort rec_no
|
||||||
|
5
|
||||||
|
6 : \*(R2 part
|
||||||
|
7
|
||||||
|
8 2 pers.dbd
|
||||||
|
9
|
||||||
|
10 F 0 # I4
|
||||||
|
11 F 1 * C1
|
||||||
|
12 F 2 NUM N5
|
||||||
|
13 F 3 NAME C20
|
||||||
|
14
|
||||||
|
15 : \*(ii 16.3/4 part
|
||||||
|
16
|
||||||
|
17 I \*(rr
|
||||||
|
18
|
||||||
|
19 : relation personal part
|
||||||
|
20 T personal
|
||||||
|
21
|
||||||
|
22 D 1 rec_no i4
|
||||||
|
23 D 2 rec_mark c1
|
||||||
|
24 D 3 num i2
|
||||||
|
25 D 4 name c20
|
||||||
|
26
|
||||||
|
27 @ 0 1
|
||||||
|
28 @ 1 2
|
||||||
|
29 @ 2 3
|
||||||
|
30 @ 3 4
|
||||||
|
31
|
||||||
|
32 : command part after conversion
|
||||||
|
33 R modifyr \*(rr personal cisam num
|
||||||
|
34 R indexr \*(rr personal pers_index name
|
||||||
|
35 R rm -f pers.dbd
|
||||||
|
36 W modifyr \*(rr personal cisam num
|
||||||
|
37 W indexr \*(rr personal pers_index name
|
||||||
|
38 W \*(ms c pers.dbd
|
||||||
|
39 W rm -f pers.dbd
|
||||||
|
.fi
|
||||||
|
.s1
|
||||||
|
Diskussion f\*ur rdb2/3:
|
||||||
|
.lp +10 10
|
||||||
|
Zeile\ \ 2 Holt die \*(RR Datenbank pers.dbd
|
||||||
|
von einem \*(MS Datentr\*ager.
|
||||||
|
.lp +10 10
|
||||||
|
Zeile\ \ 3 Modifiziert die Relation personal
|
||||||
|
der \*(II Datenbank \*(rr,
|
||||||
|
um ein schnelles Anf\*ugen der Daten der
|
||||||
|
\*(RR Datenbank zu gew\*ahrleisten.
|
||||||
|
.i0
|
||||||
|
Jetzt erfolgt die Konvertierung der \*(RR Daten.
|
||||||
|
.lp +10 10
|
||||||
|
Zeile\ 33 Die Relation personal
|
||||||
|
der \*(II Datenbank \*(rr
|
||||||
|
wird auf die Dom\*ane num geschl\*usselt.
|
||||||
|
.lp +10 10
|
||||||
|
Zeile\ 34 Die Dom\*ane num wird indiziert.
|
||||||
|
.lp +10 10
|
||||||
|
Zeile\ 35 Die \*(RR Datenbank pers.dbd
|
||||||
|
wird aus dem \*(UU Filesystem gel\*oscht.
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
Diskussion f\*ur wdb2/3:
|
||||||
|
.lp +10 10
|
||||||
|
Zeile\ \ 4 Sortiert tempor\*ar die Relation personal
|
||||||
|
ent\%sprechend der Dom\*ane rec_no
|
||||||
|
der \*(II Da\%ten\%bank \*(rr,
|
||||||
|
um ein satzgerechtes Anf\*ugen der Daten an die
|
||||||
|
\*(RR Datenbank zu gew\*ahrleisten.
|
||||||
|
.i0
|
||||||
|
Jetzt erfolgt die Konvertierung der \*(II Daten.
|
||||||
|
.lp +10 10
|
||||||
|
Zeile\ 36 Die Relation personal
|
||||||
|
der \*(II Datenbank \*(rr
|
||||||
|
wird auf die Dom\*ane num geschl\*usselt.
|
||||||
|
.lp +10 10
|
||||||
|
Zeile\ 37 Die Dom\*ane num wird indiziert.
|
||||||
|
.lp +10 10
|
||||||
|
Zeile\ 38 Schreibt die \*(RR Datenbank pers.dbd
|
||||||
|
auf einen \*(MS Datentr\*ager.
|
||||||
|
.lp +10 10
|
||||||
|
Zeile\ 39 Die \*(RR Datenbank pers.dbd
|
||||||
|
wird aus dem \*(UU Filesystem gel\*oscht.
|
||||||
|
.i0
|
||||||
|
.sh BEISPIEL\ 2
|
||||||
|
Es soll die \*(R2 Datenbank pers.dbd
|
||||||
|
in die zwei Re\%la\%tionen num und name
|
||||||
|
der \*(II Datenbank \*(rr kon\%ver\%tiert werden,
|
||||||
|
wobei die \*(RR Satznummer die Ver\%bin\%dungs\%in\%for\%ma\%tion
|
||||||
|
zwischen den Relationen sein soll.
|
||||||
|
Um die Ar\%beit zu beschleunigen,
|
||||||
|
wird das Kommando
|
||||||
|
.lp +8 8
|
||||||
|
% db2 bsp pers.dbd \*(rr num name
|
||||||
|
.i0
|
||||||
|
ausgef\*uhrt.
|
||||||
|
.lp +8 8
|
||||||
|
% cat bsp
|
||||||
|
.i0
|
||||||
|
liefert folgende Ausgabe
|
||||||
|
(die Zeilennummerierung ist nur f\*ur
|
||||||
|
Dokumentationsbez\*uge eingef\*ugt worden)
|
||||||
|
.s1
|
||||||
|
.nf
|
||||||
|
1 : command part before conversion
|
||||||
|
2
|
||||||
|
3 : \*(RR 2 part
|
||||||
|
4 2 pers.dbd
|
||||||
|
5
|
||||||
|
6 F 0 # I4
|
||||||
|
7 F 1 * C1
|
||||||
|
8 F 2 NUM N5
|
||||||
|
9 F 3 NAME C20
|
||||||
|
10
|
||||||
|
11 : \*(ii 16.3/4 part
|
||||||
|
12 I \*(rr
|
||||||
|
13
|
||||||
|
14 : relation num part
|
||||||
|
15 T num
|
||||||
|
16
|
||||||
|
17 D 1 rec_no i4
|
||||||
|
18 D 2 rec_mark c1
|
||||||
|
19 D 3 num i2
|
||||||
|
20 D 4 name c20
|
||||||
|
21
|
||||||
|
22 @ 0 1
|
||||||
|
23 @ 1 2
|
||||||
|
24 @ 2 3
|
||||||
|
25 @ 3 4
|
||||||
|
26
|
||||||
|
27 : relation name part
|
||||||
|
28 T name
|
||||||
|
29
|
||||||
|
30 D 1 rec_no i4
|
||||||
|
31 D 2 rec_mark c1
|
||||||
|
32 D 3 num i2
|
||||||
|
33 D 4 name c20
|
||||||
|
34
|
||||||
|
35 @ 0 1
|
||||||
|
36 @ 1 2
|
||||||
|
37 @ 2 3
|
||||||
|
38 @ 3 4
|
||||||
|
39
|
||||||
|
40 : command part after conversion
|
||||||
|
.fi
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
Anschlie\*send wird das DBI-Textfile bsp
|
||||||
|
mit einem \*(UU Texteditor ge\*andert
|
||||||
|
(alle Zeilenangaben beziehen sich ab\%so\%lut
|
||||||
|
auf vorstehende Liste):
|
||||||
|
.s1
|
||||||
|
.lp +10 10
|
||||||
|
Zeile 18 streichen,
|
||||||
|
L\*oschmarkierung rec_mark wird nicht ben\*otigt
|
||||||
|
.lp +10 10
|
||||||
|
Zeile 19 \*andern Nummer der Dom\*ane von 3 auf 2
|
||||||
|
.lp +10 10
|
||||||
|
Zeile 20 streichen,
|
||||||
|
das \*(RR Feld NAME soll in die Re\%la\%tion name
|
||||||
|
.lp +10 10
|
||||||
|
Zeile 23 streichen
|
||||||
|
(siehe Zeile 18)
|
||||||
|
.lp +10 10
|
||||||
|
Zeile 24 \*andern Nummer der Dom\*ane von 3 auf 2
|
||||||
|
.lp +10 10
|
||||||
|
Zeile 25 streichen
|
||||||
|
(siehe Zeile 20)
|
||||||
|
.lp +10 10
|
||||||
|
Zeile 31 streichen,
|
||||||
|
L\*oschmarkierung rec_mark wird nicht ben\*otigt
|
||||||
|
.lp +10 10
|
||||||
|
Zeile 32 streichen,
|
||||||
|
das \*(RR Feld NUM soll in die Re\%la\%tion num
|
||||||
|
.lp +10 10
|
||||||
|
Zeile 33 \*andern Nummer der Dom\*ane von 4 auf 2
|
||||||
|
.lp +10 10
|
||||||
|
Zeile 36 streichen
|
||||||
|
(siehe Zeile 31)
|
||||||
|
.lp +10 10
|
||||||
|
Zeile 37 streichen
|
||||||
|
(siehe Zeile 32)
|
||||||
|
.lp +10 10
|
||||||
|
Zeile 38 \*andern Nummer der Dom\*ane von 4 auf 2
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
Nachdem 8 Zeilen gestrichen
|
||||||
|
und in 4 Zeilen eine Ziffer
|
||||||
|
durch eine andere ersetzt wurde,
|
||||||
|
ist folgendes der Auf\%ga\%ben\%stel\%lung
|
||||||
|
entsprechende DBI-Textfile entstanden.
|
||||||
|
.s1
|
||||||
|
.nf
|
||||||
|
1 : command part before conversion
|
||||||
|
2
|
||||||
|
3 : \*(RR 2 part
|
||||||
|
4 2 pers.dbd
|
||||||
|
5
|
||||||
|
6 F 0 # I4
|
||||||
|
7 F 1 * C1
|
||||||
|
8 F 2 NUM N5
|
||||||
|
9 F 3 NAME C20
|
||||||
|
10
|
||||||
|
11 : \*(ii 16.3/4 part
|
||||||
|
12 I \*(rr
|
||||||
|
13
|
||||||
|
14 : relation num part
|
||||||
|
15 T num
|
||||||
|
16
|
||||||
|
17 D 1 rec_no i4
|
||||||
|
18 D 2 num i2
|
||||||
|
19
|
||||||
|
20 @ 0 1
|
||||||
|
21 @ 2 2
|
||||||
|
22
|
||||||
|
23 : relation name part
|
||||||
|
24 T name
|
||||||
|
25
|
||||||
|
26 D 1 rec_no i4
|
||||||
|
27 D 2 name c20
|
||||||
|
28
|
||||||
|
29 @ 0 1
|
||||||
|
30 @ 3 2
|
||||||
|
31
|
||||||
|
32 : command part after conversion
|
||||||
|
.fi
|
||||||
|
.i0
|
||||||
|
.sh FEHLER
|
||||||
|
.lp +8 8
|
||||||
|
\*(RR\ Sie\ sind\ kein\ eingetragener\ \*(ii-Nutzer
|
||||||
|
.lp +8 8
|
||||||
|
===> Nur eingetragene Nutzer des \*(II Systems
|
||||||
|
k\*on\%nen dieses Kommando ausf\*uhren.
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
\*(RR\ Unbekanntes\ Flag\ 'ff'
|
||||||
|
.lp +8 8
|
||||||
|
usage:\ \ DB2\ [flags]\ dbi\ dbd\ db\ {rel}
|
||||||
|
.lp +8 8
|
||||||
|
flags:\ \ -f\ \ list\ field\ descriptions
|
||||||
|
.lp +8 8
|
||||||
|
\ \ \ \ \ \ \ \ -h\ \ list\ header
|
||||||
|
.lp +8 8
|
||||||
|
\ \ \ \ \ \ \ \ -l\ \ dont't\ create\ DBI-file
|
||||||
|
.lp +8 8
|
||||||
|
\ \ \ \ \ \ \ \ -r\ \ list\ \ \ all\ \ \ records
|
||||||
|
.lp +8 8
|
||||||
|
\ \ \ \ \ \ \ \ -rd\ list\ deleted\ records
|
||||||
|
.lp +8 8
|
||||||
|
\ \ \ \ \ \ \ \ -rv\ list\ \ valid\ \ records
|
||||||
|
.lp +8 8
|
||||||
|
===> Das \*ubergeben Flag ff
|
||||||
|
ist dem Kommando nicht be\%kannt.
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
\ \ \ \ \ \ \ \ can't\ access\ DBD-file\ xx
|
||||||
|
.lp +8 8
|
||||||
|
\*(RR\ syntax\ error
|
||||||
|
.lp +8 8
|
||||||
|
===> Die \*(RR Da\%ten\%bank xx ist nicht vorhanden
|
||||||
|
oder kann von \*(II nicht zum Lesen
|
||||||
|
er\*offnet werden.
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
\*(RR\ can't\ access\ DBI-file\ xx
|
||||||
|
.lp +8 8
|
||||||
|
===> Das DBI-Textfile xx kann von \*(II
|
||||||
|
nicht zum Schreiben er\*offnet werden,
|
||||||
|
m\*oglicherweise ist die Schreiberlaubnis
|
||||||
|
f\*ur den Nutzer \*(ii in dem ak\%tu\%el\%lem Verzeichnis nicht gegeben.
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
\*(RR\ format\ error\ on\ DBD-file\ xx
|
||||||
|
.lp +8 8
|
||||||
|
===> Das angebotene DBD-file xx ist keine \*(RR Da\%ten\%bank,
|
||||||
|
der Kopfteil ist zu kurz.
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
\*(RR\ record\ count\ error
|
||||||
|
.lp +8 8
|
||||||
|
\ \ \ \ \ \ \ \ expected\ r1\ records
|
||||||
|
.lp +8 8
|
||||||
|
\ \ \ \ \ \ \ \ \ \ \ found\ r2\ records
|
||||||
|
.lp +8 8
|
||||||
|
===> Beim Lesen der \*(RR Da\%ten\%bank wurden r1 Da\%ten\%s\*atze erwartet
|
||||||
|
und r2 Da\%ten\%s\*atze gefunden
|
||||||
|
(nur bei Verwendung eines der -r Flags m\*oglich).
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
\*(RR\ record\ length\ error
|
||||||
|
.lp +8 8
|
||||||
|
\ \ \ \ \ \ \ \ on\ record\ rr
|
||||||
|
.lp +8 8
|
||||||
|
===> Beim Lesen der \*(RR Da\%ten\%bank
|
||||||
|
trat in dem Da\%ten\%satz rr ein Lesefehler oder EOF ein.
|
||||||
|
Ist die Satz\%num\%mer rr==0,
|
||||||
|
ist der Kopfteil der \*(RR Da\%ten\%bank zu kurz,
|
||||||
|
d.h. das Kommando konnte nicht
|
||||||
|
auf den ersten Da\%ten\%satz positionieren
|
||||||
|
(nur bei Verwendung eines der -r Flags m\*oglich).
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
\*(RR\ unknown\ type\ tt\ on\ field ff/nn
|
||||||
|
.lp +8 8
|
||||||
|
===> Das Feld mit der Nummer ff und dem Namen nn
|
||||||
|
der \*(RR Da\%ten\%bank hat den unbekannten Datentyp tt.
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
\*(RR\ version\ error\ on\ DBD-file\ xx
|
||||||
|
.lp +8 8
|
||||||
|
\ \ \ \ \ \ \ \ expected\ \*(RR\ v1
|
||||||
|
.lp +8 8
|
||||||
|
\ \ \ \ \ \ \ \ \ \ \ found\ \*(RR\ v2
|
||||||
|
.lp +8 8
|
||||||
|
===> Es wurde eine \*(RR Version v1 Da\%ten\%bank erwartet
|
||||||
|
und eine \*(RR Version v2 Da\%ten\%bank gefunden.
|
||||||
|
.i0
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
: command part before conversion
|
||||||
|
|
||||||
|
: REDABAS 2 part
|
||||||
|
2 pers.dbd
|
||||||
|
|
||||||
|
F 0 # I4
|
||||||
|
F 1 * C1
|
||||||
|
F 2 NUM N5
|
||||||
|
F 3 NAME C20
|
||||||
|
|
||||||
|
: ing_db 6.3/4 part
|
||||||
|
I redabas
|
||||||
|
|
||||||
|
: relation personal part
|
||||||
|
T personal
|
||||||
|
|
||||||
|
D 1 rec_no i4
|
||||||
|
D 2 rec_mark c1
|
||||||
|
D 3 num i2
|
||||||
|
D 4 name c20
|
||||||
|
|
||||||
|
@ 0 1
|
||||||
|
@ 1 2
|
||||||
|
@ 2 3
|
||||||
|
@ 3 4
|
||||||
|
|
||||||
|
: command part after conversion
|
||||||
Loading…
Reference in New Issue