Netzwerk-Datenbanksysteme

Werbung
4. Das Netzwerk-Daten(bank)modell
Zielsetzung des Kapitels:
• Einordnung/Abgrenzung des Netzwerk-Modells, Mächtigkeit des
Modellierungsansatzes
• Was ist eine Netzwerk-Datenbank, wie definiert man das Datenbankschema einer Netzwerk-Datenbank, wie greift man auf die Inhalte
einer Netzwerk-Datenbank zu:
- Datenbankdefinitionssprache (DDL)
- Datenmanipulationssprache (DML)
( - Speicherbeschreibungssprache, Storage Structure Language
(SSL))
• Konkret: Der CODASYL/DBTG-Vorschlag für die Realisierung eines
Netzwerk-Datenbanksystems (Conference on Data Systems
Languages, Database Task Group) als konkrete Diskussionsgrundlage
„Netzwerk-Datenbanksysteme“
∧
=
„CODASYL-Datenbanksysteme“
Datenbanksysteme 1
05.12.2005
141
Historische Entwicklung des Netzwerk-Ansatzes
• Hierarchisches Datenmodell und IMS waren schon (etwas) früher da,
entstanden ab Mitte der 60er Jahre → proprietär und immer (IBM)
geblieben!
• Netzwerk-Datenmodell von vornherein mit dem Ziel entstanden, einen
nichtproprietären Ansatz zu entwickeln
an CODASYL/DBTG waren viele Hersteller / unabhängige Fachleute
beteiligt („entsprechend lange hat´s auch gedauert“)
• Ziel der Task Group (Ende der 60er Jahre):
Spezifikation von DDL und DML
• Erster CODASYL-Report dazu 1971
• Weitere Versionen in der Folge, nächster „stabiler“
Vorschlag 1978 = Grundlage diverser Implementierungen, z.B.:
- UDS („Universelles Datenbanksystem“) (Fujitsu-Siemens)
- IDMS (Cullinet, Computer Associates(CA))
- ...
etc.
Datenbanksysteme 1
05.12.2005
142
Historische Entwicklung (Fortsetzung)
• Normierung (ISO) seit 1987
Vorab: Warum hat der Netzwerk-Datenbankansatz
sich in der Praxis doch nicht so sehr durchgesetzt?
Vergleichsweise komplexe DDL und DML (vor allem), schwer
vollständig zu erlernen und stets im Griff zu behalten (ähnliches
Problem wie bei hierarchisch/IMS)
• Navigierender Zugriff im Vordergrund, primär aus Programmiersprache heraus aufrufbar → (im Gegensatz zu relational) keine
deskriptive Sprache / Möglichkeiten zu Ad-hoc-Anfragen, keine
Mengenorientierung (jedoch spätere „Aufsätze“ entstanden →
UDS/SQL, IDMS/R) → grundsätzlich ebenfalls vergleichbar zu IMSHistorie
• Relationale Systeme haben sich „zu schnell“ entwickelt und verbreitet
(zum Glück!)
• Normkonformität bei Netzwerk-Datenbanksystemen ein Problem,
viele „Spezialitäten“ in einzelnen Systemen
Datenbanksysteme 1
05.12.2005
143
Charakterisierung des Netzwerk-Datenbankansatzes
• Netzwerk-Datenmodell hinsichtlich der Beschreibungsmächtigkeit
näher beim E/R-Modell, als dies beim HDM der Fall ist ⇒ größere
Mächtigkeit im NDM als im HDM
• Konstrukte zur Datenmodellierung:
- Satztypen (record types) ≈ Entity Type
- Spezielle (1:n) Beziehungstypen (set types)
oft auch als CODASYL set
bezeichnet
• Beziehungstypen sind ausschließlich zweistellig und benannt, in
graphischer Darstellung z.B.
Schema
(Beispiel)
einer
Netzwerk-DB
ABTEILUNG
POSITION
besteht_aus
MITARBEITER
setzt_sich_zusammen_aus
set type
⇒ gerichteter Graph (Netzwerk) ggf. sogar zyklenbehaftet
• Netzwerk-DB = Schema + Ausprägungen (occurrences)
set occurrences / record occurrences
• Vater in einem set type wird auch als owner record type bezeichnet,
Sohn als member record type
Datenbanksysteme 1
05.12.2005
144
Set-Typen (set types)
• (Zweistelliger) Beziehungstyp S zwischen Record-Typ R und Record-Typ R´,
R ist Owner-Typ, R´ ist Member-Typ, R ≠ R´ → kein Kurzzyklus
• Graphisch
R
S
sog. BachmanDiagramm
R´
• Semantik: 1:n Beziehungstyp zwischen R und R´ (implizit, d.h. wird z.B. nicht
mit notiert in gr. Darst.)
• Auf der Ausprägungsebene (occurrences):
- Zu jedem Record r (präziser gesagt: Record Occurrence) aus dem
Record-Typ R gehört implizit eine Set Occurrence s aus S; diese darf
auch leer sein (empty set (occurence))
- Jeder Record r´ aus R´ gehört zu maximal einer Set Occurrence s aus S.
Konsequenzen:
• Owner Record zu einem Member Record innerhalb eines Set stets
eindeutig definiert (es gibt einen oder es gibt keinen(!)) → SetAusprägungen sind Bäume!
• Waisenkinder sind grundsätzlich erlaubt (können aber ggf. verboten werden, im Gegensatz zum HDM/IMS)
!
Datenbanksysteme 1
05.12.2005
145
Beispiel für Set-Typen und Set-Ausprägungen
ABTEILUNG
a)
hat
Bachman-Diagramm
(Schema, Set- und Record-Typen)
MITARBEITER
empty set (occ.)
b) 3 Set-Ausprägungen
abt1
mitarb1
mitarb2
abt3
mitarb3
mitarb9
abt2
mitarb4
mitarb10
Set-Ausprägungen zum Owner abt3 ist leer. mitarb9 gehört (aktuell) keiner
Set-Ausprägung an, ist somit Waise
Bemerkung: Ob Waisen tatsächlich erlaubt sein sollen oder nicht, kann
mit Hilfe der DDL bei der Definition des Set-Typs festgelegt werden („IMSSemantik“ kann bei Bedarf also erzwungen werden!)
Datenbanksysteme 1
05.12.2005
146
Ordnung der Member-Sätze innerhalb der Set-Ausprägung
• Es existiert immer eine Ordnung auf den Member-Sätzen einer SetAusprägung: 1. Member-Satz, 2. Member-Satz, ..., letzter MemberSatz
• In dieser Ordnung werden die Member-Sätze auch wiederaufgefunden
(„abgeliefert“) bei DML-Anweisungen à la FIND NEXT Mitarbeiter
WITHIN SET hat
• Ordnung kann Sortierfolge nach Feldwerten sein oder auch
Einfügungsreihenfolge oder dem System überlassen
• Beispiel:
hat
ABTEILUNG
MITARBEITER
• Ausprägungsebene:
(Darstellungsform)
logische Darstellung
ORDER IS
FIRST
LAST
NEXT
PRIOR
SORTED...
SYSTEM-DEFAULT
(Typebene)
abt1
mitarb1
mitarb2
mitarb3
Man beachte die Variantenvielfalt!
... und die Funktionalitäts- und Performance-Auswirkungen!
Sortierung z.B. nach Gehalt, Geburtsdatum o.ä. mit oder ohne Zulässigkeit von Duplikaten
Datenbanksysteme 1
05.12.2005
147
Exkurs: Implementierungsgesichtspunkte
• Die obigen Darstellungen oder Set-Ausprägungen sollen keine
konkreten Implementierungen präjudizieren!
• für die Implementierung von Set-Ausprägungen gibt es
verschiedene Möglichkeiten/Varianten auf der internen Ebene →
Optionen für den DBA („Stellschrauben“)
• 3 Beispiele dazu:
a) Verkettete Implementierung
(MODE IS CHAIN)
Member Record Occurences
„beliebig“ über DB verteilt
abt1
mitarb1
mitarb2
mitarb3
„pointer“ (wie auch immer physisch realisiert)
b) Implementierung mittels Zeigertabelle (MODE IS POINTER-ARRAY)
Member Record Occurences
„beliebig“ über DB verteilt
Datenbanksysteme 1
mitarb1
05.12.2005
abt1
mitarb2
mitarb3
148
c) Implementierung via Memberliste (MODE IS LIST)
Member-Sätze sind
„geclustert“ gespeichert
abt1
mitarb1 mitarb2 mitarb3
. . . ATTACHED TO OWNER
abt1
m1 m2 m3
. . . DETACHED
• Die Auswahl der Implementierungsform ist Aufgabe des
Datenbankadministrators
• Die Auswahl ist rein unter Performance-Gesichtspunkten
vorzunehmen ⇒ kann wesentlichen Einfluss haben
⇒ Unterstützungswerkzeuge (z.B. Expertensystemansatz) sinnvoll,
aber auch nicht trivial zu entwickeln / zu benutzen (WorkloadBeschreibung als Input!)
• Die Implementierungsformen sind nicht
R
Bachmanfrei miteinander verträglich, etwa im Fall
S1
S2
Diagramm
R´
→ „geclustert“ werden kann immer nur nach einem Kriterium / bzgl. eines Set!!
Datenbanksysteme 1
05.12.2005
149
Modellierung von Beziehungen im NDM oder: Vom E/R-Modell zum NDM
I. Nichtrekursive 1:n Beziehungen
E/R-Diagramm
ABTEILUNG
(0,*)
1
(0,1)
n
hat
MITARBEITER
im Netzwerk-Datenmodell
(Bachman-Diagramm)
ABTEILUNG
hat
MITARBEITER
Was macht man,
wenn?
hat
a)
b)
MITARBEITER
„Waisenverbot“ kann mittels
DDL-Klausel bei Set Type
Definition vereinbart werden
ABTEILUNG
nicht per DDL spezifizierbar
(1,1)
(1,*)
hat
Datenbanksysteme 1
05.12.2005
→ muss von Anwendung
überwacht werden!
150
II. Rekursive 1:n Beziehungen
Bsp.: Personalhierarchie
PNR 0599061
PNR 4711
PNR 4321
PNR 8532
PNR 3850
PNR 2111
PNR 007
PNR 6000
PNR 1220
PNR 1312
. . . beliebige Tiefe des Baums!
E/R-Diagramm
Netzwerk-Datenmodell
(Bachman-Diagramm)
Mitarbeiter
Mitarbeiter
hat_als_
hat_als_Chef
Untergebene
(0,1)
(0,*)
Vorgesetzter
nicht erlaubt
ist_Vorgesetzter
Datenbanksysteme 1
05.12.2005
151
Lösung: Beziehungstyp wird abgebildet auf sog. Kett-Record-Typ
(plus 2 Set-Typen)
Bachman-Diagramm
Alternative 1: Kett-Record-Typ ist in beiden down Mitarbeiter
hat_als_
* up
*
Set-Typen Member-Record-Typ
Untergebene
hat_als_Chef
*markiert Vater
in Set-Auspräg.
(1:1)
Ausprägungsebene
* PNR 0599061
down
MA-Kett1
MA-Kett2
**PNR 4711
MA-Kett4
MA-Kett1
(1:n)
1 Kett-RecordOccurrence pro
Untergebenem
(Kante im Baum)
MA-Kett5
**PNR 3850
MA-Kett6
*PNR 4321 *PNR 8532 *PNR 2111
down ist 1:n Beziehungstyp
up
ist 1:1 Beziehungstyp
Datenbanksysteme 1
MA-Kett3
**PNR 6000
MA-Kett7
MA-Kett8
MA-Kett9
*PNR 007
*PNR 1220
*PNR 1312
up
down
up
Konsistenzsicherung seitens der Anwendung(en): !!!
- 1:1 Beziehungstyp → Schwäche des NDB-Ansatzes
- Zyklenfreiheit → Schwäche vieler DB-Ansätze
05.12.2005
152
Alternative 2: Kett-Record-Typ ist in einem Set-Typ Member-Record-Typ
und im anderen Owner-Record-Typ
Bachman-Diagramm
Mitarbeiter
(1:1) down
* up
*
(1:n)
MA-Kett
1 Kett-RecordOccurrence pro
Vorgesetztem
Ausprägungsebene
PNR 0599061
*
*
down
MA-Kett1
up
PNR 4711
PNR 3850
*
*
*
MA-Kett2
*
MA-Kett3
PNR 6000
*
*
down
MA-Kett4
up
PNR 4321
PNR 8532
PNR 2111
down ist 1:1 Beziehungstyp
up
ist 1:n Beziehungstyp
Datenbanksysteme 1
PNR 007
PNR 1220
PNR 1312
Konsistenzsicherung seitens der Anwendung(en): !!!
- 1:1 Beziehungstyp
- Zyklenfreiheit
05.12.2005
153
III. Nichtrekursive n:m Beziehungen
E/R-Diagramm (Bsp.)
Netzwerk-Datenmodell
(Bachman-Diagramm)
LIEFERANT
LIEFERANT
(0,*)
(0,*)
TEIL
TEIL
Ein Teil kann von mehreren
Lieferanten geliefert werden, und
ein Lieferant liefert mehrere Teile
Datenbanksysteme 1
(1:n)
wird_geliefert
liefert
(1:n)
Menge
liefert
05.12.2005
syntaktisch erlaubt,
semantisch falsch
da jede Member-RecordOccurrence nur zu max. 1 SetOccurrence gehören darf (Owner
Record, Occurrence falls
existent, muss eindeutig sein)
154
Lösung: Wiederum Kett-Record-Typ (plus 2 Set-Typen)
LIEFERANT
oder:
LIEFERANT
liefert
liefert_TEIL
Menge
TEIL
wird_geliefert
liefert
wird liefert
liefert_TEIL
TEIL
Bachman-Diagramm
Menge
Ausprägungsebene
L4
L1
L1,T1,20
L1,T2,7
T1
„V-Schema“
L2
L1,T3,9
T2
L2,T1,100
T3
L3
L2,T1,100
liefert
Kett-RecordOccurrence
L3,T4,10
T4
wird_geliefert
T5
• Kett-Record-Occurrences enthalten LNr, TNr, Menge
!
redundant, deshalb nicht gesp.
• 1 Kett-Record-Occurrence pro Lieferung (Beziehungsausprägung)
zwischen Lieferant und Teil)
Datenbanksysteme 1
05.12.2005
155
IV. Rekursive n:m Beziehungen
Beispiel: Stückliste
A
Fertigteil
1
Baugruppe
B
D
z
C
7
1
3
4
5
Einzelteil
2
E
F
„DAG“
gerichteter
azyklischer
Graph
bedeutet: z Exemplare {der Baugruppe x, des Teils X} gehen
in eine Baugruppe y ein
sog. Gozinto-Graph
„Zeparzat Gozinto“ - the part that goes into x
y
E/R-Diagramm
Bachman-Diagramm
Datenbankschema im NDM
TNr
TEIL
Teil
(0,∗)
enthält
(1:n)
(0,∗)
enthält/
ist_enthalten_in
Menge
Datenbanksysteme 1
ist_enthalten_in
(1:n)
Struktur
Kett-Record-Typ
„Waisenkinder“?
05.12.2005
156
Ausprägungsebene
* Teil A
Strukt 1
1
Strukt 2
7
** Teil C
** Teil B
Strukt 4
3
* Teil D
!
Strukt 3
4
Strukt 5
1
Strukt 6
5
* Teil E
Strukt 7
2
* Teil F
• Struktursatz (Kett-Record-Occurrence) pro Pfeil im Gozinto-Graphen (gerichtete
Kante in Stückliste)
• Finden der Teile und Baugruppen der ersten Stufe für Teil A (alles, was direkt
in Teil A eingeht)
- Finden des richtigen Teile-Records (FIND)
- Navigierender Zugriff auf alle Member-Records innerhalb der SetAusprägung von „enthält“ (FIND NEXT WITHIN ...)
- Für jeden gefundenen Member-Record Zugriff auf den Owner-Record
innerhalb der Set-Ausprägung von „ist_enthalten_in“ (FIND OWNER ...)
Datenbanksysteme 1
05.12.2005
157
Mehrstellige Beziehungstypen (k>2)
Projekt
Beispiel: E/R-Diagramm
(0,*)
Menge
liefert
(0,*)
Lieferant
(0,*)
Artikel
Bachman-Diagramm
Projekt
P_l
Kett-Record-Typ
Lieferant
L_l
liefert
Artikel
A_l
Menge
• liefert ist wiederum Kett-Record-Typ
• Bei der Definition der drei Set-Typen (P_l,L_l,A_l) muss jeweils
spezifiziert werden, dass Waisenkinder verboten sind (jede liefertAusprägung muss in drei Set-Ausprägungen Member sein)
Datenbanksysteme 1
05.12.2005
158
Grundsätzliche Eigenschaften der NDM, auch im Vergleich zum HDM
1) Jeder Record-Typ kann Owner oder
Member in beliebig vielen Set-Typen
sein
2) In einem Set-Typ muss OwnerRecord-Typ ≠ Member-Record-Typ
sein (es gibt aber DBVS-Implementierungen, die "=" erlauben)
3) Zwischen einem Owner-Record-Typ
A und einem Member-Record-Typ B
dürfen beliebig viele Set-Typen
existieren
4) Record-Typen müssen nicht unbedingt an Set-Typen beteiligt sein, d.h.
„alleinstehende“ Record-Typen sind
erlaubt
Datenbanksysteme 1
05.12.2005
S1
S2
i
Unterschied zu HDM
S3
S4
S5
A
S6
S7 S8
S9
A
S10
S
A
S1 S2 S3 S4 S5
B
A
159
5)
Der Einstieg in eine Netzwerk-Datenbank ist für einen
beliebigen Record-Typ möglich, d.h. es gibt keine
ausgezeichneten Einstiegspunkte
6)
Wenn ein Record-Typ A Member eines Set-Typs S ist, so
müssen doch nicht alle Record-Ausprägungen s von S sein:
Waisenkinder zulässig
7)
Für die Member-Record-Ausprägungen innerhalb einer SetAusprägung muss stets eine Reihenfolge festgelegt werden
(wobei SYSTEM-DEFAULT erlaubt ist)
Datenbanksysteme 1
05.12.2005
160
Netzwerk-Datenbank =
• Nichtleere Menge von benannten Record-Typen
• Menge von benannten Set-Typen (darf leer sein)
• Menge von Record-Ausprägungen (darf leer sein)
• Menge von Set-Ausprägungen (darf leer sein)
DatenbankSchema
DatenbankInhalt
Charakteristika des Arbeitens mit einer Netzwerk-Datenbank
• Aus Anwendungsprogrammen heraus (eingebettete Datenbankzugriffe (DBVS-Aufrufe)), im Gegensatz zum HDM aber in Form einer
Programmiersprachenerweiterung möglich, d.h. über Präcompiler
oder Compiler-Erweiterung unterstützt
• Satzweiser Zugriff, „one record at a time“
• Direkter Zugriff auf Sätze eines Record-Typs oder navigierender
Zugriff
Datenbanksysteme 1
05.12.2005
161
Beispielschema einer Netzwerk-Datenbank
(CODASYL-Datenbank)
ABT_PROJ
ABT
PROJ
ABT_ANG
ANGEST
ANG_PROM
Rautenschema
PROJ_PROM
PROMIT
n:m →
Kett-Record-Typ (III)
„V-Schema“
PROMIT ist Kett-Record-Typ zur Modellierung der n:m-Beziehung
zwischen Angestellten und Projekten (ein Angestellter kann in mehreren
Projekten mitarbeiten, ein Projekt kann mehrere Angestellte umfassen)
Anforderungen an die Datenmanipulationssprache (DML) eines
Netzwerk-Datenbanksystems
1. Retrieval (Lesender Zugriff auf Records)
a) Direkter Einstieg von außen
„Finde Gehalt und Geburtsdatum des Angestellten Kuno MüllerEiermann“ ⇒ FIND ANY ... Prädikat ...
[Schnell, falls Zugriffspfad für Feld NAME in Record-Typ ANGEST existiert (z.B. B*-Baum oder Hashtabelle); sonst langsam, da seq. Suche]
Datenbanksysteme 1
05.12.2005
162
b) Anfragen unter Bezugnahme auf Sets (Navigation)
b1) Member → Owner
„In welcher Abteilung arbeitet dieser Angestellte?“
⇒ FIND OWNER innerhalb der Set-Ausprägung von ABT_ANG
b2) Owner → Member & Member → Member
„Gibt es in ABT 10 einen Angestellten, der mehr als EUR 5000,verdient?“
1. Direkter Einstieg von außen mit FIND ANY ... Prädikat ... auf ABT 10
2. Finde ersten Member Record in Ausprägung von Set-Typ ABT_ANG
und prüfe auf Gehalt > 5000,- ( FIND FIRST )
*
3. Finde nächsten Member Record ... und prüfe ... ( FIND NEXT )
Alternatives Vorgehen ?
*
lässt sich in CODASYL-DML auch in einem einzigen DML-Befehl ausdrücken,
indem das Prädikat Gehalt > 5000 dem DBVS bei der Suche mitgegeben wird!
Datenbanksysteme 1
05.12.2005
163
2. Update (Einfügen, Ändern, Löschen von Records)
a) Ändern
„Erhöhe das Gehalt des Angestellten Karl Müller-Isserstedt um 10%
1. Direkter Einstieg von außen mit FIND ANY ... Prädikat ... auf den
gesuchten Angestellten
2. Übertragen des bisherigen Gehaltwerts ins Anwendungsprogramm
und multiplizieren mit 1.1
3. Rückschreiben des (neuen) Gehaltswerts in die Datenbank ( MODIFY )
Bemerkungen:
• Was ist, wenn Gehaltswert Reihenfolge der Records in der ABT-ANG
Set-Ausprägung bestimmt (ORDER IS SORTED ..., vgl. Folie 147)
⇒ Record wird innerhalb der Set-Ausprägung vom DBVS automatisch
„umpositioniert“!
• (U.U. kann durch MODIFY sogar automatische Neuzuordnung des
Member Record zu einer anderen Set-Ausprägung (↔ anderem Owner)
erfolgen, falls Zugehörigkeit werteabhängig definiert)
Datenbanksysteme 1
05.12.2005
164
!
„Versetze Angestellten Willi Künstlich von Abteilung ABT 3 in ABT 8“
⇒ explizit veranlasstes Wechseln der Zugehörigkeit zu einer SetAusprägung für einen Angestellten ( DISCONNECT/CONNECT oder
– in einem Schritt – RECONNECT )
b) Löschen
„Lösche den Angestellten Willi Künstlich“
1. Direkter Einstieg von außen mit FIND ANY ... Prädikat ... auf den
gesuchten Angestellten
2. Löschen des ANGEST-Records ( ERASE )
Bemerkungen:
• Zu löschende ANGEST-Record muss gleichzeitig aus allen SetAusprägung, in denen er Member ist, entfernt („ausgekettet“) werden;
geschieht automatisch durch das DBVS; im BSP.: Set-Ausprägung in
ABT-ANG
• In Set-Ausprägungen, in denen er Owner ist, muss unterschieden
werden (je nachdem, wie´s bei der Set-Typ-Definition in der DDL
spezifiziert worden war):
Datenbanksysteme 1
05.12.2005
165
- Member Records sind existentiell abhängig vom Owner Record
→ Member Records werden vom DBVS automatisch mit gelöscht
(⇒ kann ggf. „cascading delete“ auslösen)
- Member Records sind nur optional abhängig:
Bleiben bestehen, gehören der Set-Ausprägung nicht mehr an,
sind fortan Waisenkinder
⇒ was ist beim Beispielschema (Folie 162) angeraten?
c) Einfügen
„Füge Angestellten Max Meier neu in die Datenbank ein“ = STORE
Bemerkungen:
• Wenn der neue Record zu einem Record-Typ gehört, der Owner in
einem Set-Typ (oder: mehreren Set-Typen) ist, wird implizit eine leere
Ausprägung (bzw. werden mehrere leere Set-Ausprägungen) erzeugt
⇒ Set-Ausprägung enthält (zunächst) nur Owner Record, keine
Member
Datenbanksysteme 1
05.12.2005
166
• Interessanter: Neue Record gehört zu einem Record-Typ, der
Member in einem Set-Typ (oder: mehreren Set-Typen) ist:
Es muss festgelegt werden:
- in welche Set-Ausprägung(en) der neue Record einzufügen ist
und das Einfügen muss automatisch durch das DBVS erfolgen
oder explizit durch das Anwendungsprogramm (CONNECT)
- an welche Position(en) innerhalb der Set-Ausprägung(en) die
Einfügung zu erfolgen hat (vgl. Folie 147), die Position kann durch
das DBVS selbst bestimmt werden oder das Anwendungsprogramm hat die Möglichkeit, die Position zu bestimmen (je nach
DDL-Klausel, Folie 147)
Datenbanksysteme 1
05.12.2005
167
Herunterladen