Netzwerkdatenbank
CODASYL
(Common Database System Language)
Bei einer Netzwerkdatenbank handelt es sich um eine Datenstruktur, die untereinander vernetzt wird und somit kein oben und kein unten besitzt (Satzweise Verarbeitung).
Es sind mehrere Owner und mehrere Member möglich. D.h, zu einem Konto kann es mehrere Personen geben und eine Person kann mehrere Konten haben. Die Vernetzung wird über sogenannte „Pointer“ realisiert. Jeder Datenblock hat eine physische Adresse, die den Ort kennzeichnet, wo sich dieser Block befindet. Wird nun eine Vernetzung zweier Datenblöcke vorgenommen, so weiß der eine wo der andere zu finden ist. Diese Verpointerung nennt man auch SET`s. Nur über diese SET`s können auf Daten zugegriffen werden!
Beispiel:
Kontoführung
„betreut“ SET
SET = Menge von Objekten, jedes SET hat einen Namen
SET „besitzt“ = die Menge der Konten, die eine Person besitzt (kann auch 0 sein)
SET „betreut“ = die Menge der Konten, die eine Person betreut
Im Gegensatz zu einer hierarischen Datenbank ist hier eine m : n Beziehung möglich. Dies wird wie bei einer relationalen Datenbank mit einem Junction Record dargestellt.
m: n Beziehung
Annahme: 2 Personen + 3 Konten – wie viele Kombinationen gibt es?
Person A Konto1 Person
B Konto2
Person B Konto1 Person A Konto3
Person A Konto2 Person
B Konto3 --- 6 Kombinationen
Weiteres Beispiel (Klausur FH-Trier)
Gegeben sei folgender Ausschnitt aus einem CODASYL- Schema für die Verwaltung eines Maschinenparks einer Fluggesellschaft
1. Geben Sie ein Beispiel auf der Exemplarebene an mit jeweils mindestens zwei Exemplare je Recordtyp. Dabei soll es einen Piloten A geben, der zwei verschiedene Flugzeugtypen fliegen kann und einen Techniker B, der alle vorhandenen Flugzeugtypen warten kann.
2. Geben Sie eine CODASYL ähnliche Sequenz an, die zum Piloten A alle Techniker auflistet, die die Flugzeugtypen warten können, die Piloten A fliegen kann. Sie können davon ausgehen, das Sie vor dem Start ihrer Sequenz auf dem Record von Pilot A positioniert haben. Sie können weiterhin davon ausgehen, dass von jedem Member eines SET`s C mit „Fetch Owner Within C“ auf den Owner des SET`s zugegriffen werden kann.
3. Geben Sie die currency- Tabelle (nur bezogen auf die SET`s) an, für Ihre CODASYL-Sequenz aus 2.
Lösung:
ZU 1.
ZU 2.
Regel 1: Sucht
man von einem Owner den Member,
so benutzen wir “NEXT”
Regel 2: Suchen
wir von einem Member den Owner,
so benutzen wir OWNER“
1
FETCH PILOT using P-KEY
2
FETCH NEXT WITHIN P-F
3
FETCH OWNER WITHIN F-P
4
FETCH NEXT WITHIN F-T
5
FETCH OWNER WITHIN T-F
6
FETCH NEXT WITHIN F-T
7
FETCH OWNER WITHIN T-F
8
FETCH NEXT WITHIN P-F
9
FETCH OWNER WITHIN F-P
10
FETCH NEXT WITHIN F-T
11
FETCH OWNER WITHIN T-F
12
FETCH NEXT WITHIN F-T
13
FETCH OWNER WITHIN T-F
ZU 3.
Regel 1: Springt
man z.B. von einem Record zu einem Junction Record, so benutzt man
ein SET, das auf den Wert des
angesteuerten Junction Record gesetzt wird. Das dazu folgende SET wird immer
automatisch auf diesen Wert gesetzt!
Regel
2: Ist ein SET einmal gesetzt,
so behält es den Wert solange, bis es erneut benutzt wird! (Duftmarke)
Nummer |
P-F |
F-P |
F-T |
T-F |
2 |
A1 |
A1 |
- |
- |
3 |
A1 |
F1 |
F1 |
- |
4 |
A1 |
F1 |
C1 |
C1 |
5 |
A1 |
F1 |
C1 |
Techniker C |
6 |
A1 |
F1 |
D1 |
D1 |
7 |
A1 |
F1 |
D1 |
Techniker D |
8 |
A2 |
A2 |
D1 |
Techniker D |
9 |
A2 |
F2 |
F2 |
Techniker D |
10 |
A2 |
F2 |
C2 |
C2 |
11 |
A2 |
F2 |
C2 |
Techniker C |
12 |
A2 |
F2 |
D2 |
D2 |
13 |
A2 |
F2 |
D2 |
Techniker D |
Zusätzliches Beispiel: