Sie sind auf Seite 1von 4

Institut fr Informatik

Ludwig-Maximilians-Universitt Mnchen

Mnchen, 4.11.2002

Prof. Dr. Hans-Peter Kriegel


Stefan Schnauer

bungen zur Vorlesung

Datenbanksysteme I
Wintersemester 2002/2003
Musterlsung Blatt 2: Hierarchisches Modell
Aufgabe 1)
(Zu dieser Aufgabe gibt es viele mgliche Lsungen, je nachdem wie weit man die Schachtelung auflst.)
i) Vollstndig geschachtelt:
T

= (Gesellschaft, (Flug, (Crewmitglied), (Passagier, (Gepck))))

ii) Vollstndig aufgelst:


T
=
T1 =
T11 =
T12 =
T121=

(Gesellschaft, T1)
(Flug, T11, T12)
(Crewmitglied)
(Passagier, T121)
(Gepck)

iii) Zwischenlsung:
T
= (Gesellschaft, T1)
T1 = (Flug, (Crewmitglied), (Passagier, T12))
T12 = (Gepck)

Aufgabe 2)
Wir beziehen uns auf Alternative ii)
A(T)

= <(Lufthansa, Frankfurt)A1(T1),
(British Airways, London)A2(T1)>
A1(T1)
= <(LH 375, 15:00, Amsterdam, B747)A11(T11)A12(T12),
(LH 368, 18:00, Dsseldorf, A320)A21(T11)A22(T12)>
= <(Tom Schmidt, Pilot), (Tina Maier, Stewardess)>
A11(T11)
A12(T12)
= <(Hans Mller, Mnchen)A112(T121),
(Klaus Huber, Neufahrn)A212(T121)>
A112(T121) = <(1, Koffer, 15 kg), (2, Tasche, 5 kg)>
A212(T121) = <(3, Surfbrett, 6.5 kg)>
...

Bemerkung:
Entspricht in geschachtelter Notation der hierarischen Reihenfolge (Skript S. 36).
Ausgabe von P (in hierarchischer Reihenfolge):
Segmenttyp
Ausgabe:
Gesellschaft
Flug
Crewmitglied
Crewmitglied
Passagier
Gepck
Gepck

Lufthansa, Frankfurt
LH 375, 15:00, Amsterdam, B747
Tom Schmidt, Pilot
Tina Maier, Stewardess
Hans Mller, Mnchen
1, Koffer, 15 kg
2, Tasche, 5 kg

1/4

Passagier
Gepck
Flug
...
Gesellschaft
...

Klaus Huber, Neufahrn


3, Surfbrett, 6.5 kg
LH 368, ...
British Airways, London

Aufgabe 3)
- GN, GHN:

knnen Vater-Segment-Zeiger ndern


- GNP, GHNP:

verndern Vater-Segment-Zeiger nicht


- GU, GHU:
-

a)

eigentlich get first (bez. hierarchischer Reihenfolge)


wird keine Ausprgung gefunden, so wird im PCB not_found gesetzt.
Bestimme die Nummern der Flge, die vor 930 nach Frankfurt starten:
GU
Gesellschaft
if not_found goto ENDE
A:
GN
Flug (Startzeit < 09:30 AND Ziel = Frankfurt)
if not_found goto ENDE
// Verarbeitung: print NR
goto A
ENDE:

b)

Bestimme smtliche Mitglieder des Lufthansa-Fluges 912.


GU

Gesellschaft (Name = Lufthansa)


Flug
(NR = LH 912)
if not_found goto ENDE
A:
GNP Crewmitglied
if not_found goto ENDE
// Verarbeitung: print Name, Funktion
goto A
ENDE:

c)

Ermittle die Namen aller Fluggesellschaften, die DC 10 Maschinen einsetzen.


GU

Gesellschaft *D
Flug
(Maschine = DC10)
A:
if not_found goto ENDE
// Verarbeitung: print Gesellschaft.Name
GN
Gesellschaft *D
Flug
(Maschine = DC10)
goto A
ENDE:

d)

Beachte: Duplikate (Mehrfachnennungen) mglich.


Bestimme die Flugzeugtypen aller Flge, auf denen Funker in der Crew eingesetzt
werden.

A:

GU
Gesellschaft
if not_found goto ENDE
GN
Flug
*D
Crewmitglied (Funktion = Funker)
if not_found goto ENDE
// Verarbeitung: print Flug.Maschine
goto A

2/4

ENDE:

e)

Beachte: Duplikate mglich.


Ermittle die Namen aller Flugkapitne, die auf Flgen eingesetzt werden, bei denen
Surfbretter im Gepck sind.
GU
Gesellschaft
if not_found goto
A1: GN
Flug
if not_found goto
GNP Passagier
Gepck
if not_found goto
(*) GNP Crewmitglied
if not_found goto
// Verarbeitung
goto A1
ENDE:

ENDE
ENDE
(Art = Surfbrett)
A1
(Funktion = Kapitn)

*F

A1

Beachte: Duplikate mglich.


falls es mehrere Kapitne pro Flug gibt, ab (*) anders:
A2: GNP Crewmitglied
(Funktion = Kapitn)
*F
A3: if not_found goto A1
// Verarbeitung
GNP Crewmitglied
(Funktion = Kapitn)
goto A3

f)

Fr den American-Airlines-Flug 826 soll Walter Mller als zustzlicher Passagier


gebucht werden. Er verfgt ber einen Koffer mit der Nummer 777.
// Aufbau der Ausprgung
ISRT Gesellschaft (Name
Flug
(NR =
Passagier
// Aufbau der Ausprgung
ISRT Gesellschaft (Name
Flug
(NR =
Passagier
(Name
Gepck

g)

fr Passagier Walter Mller


= American Airlines)
AA 826)
fr Gepck Nr 777
= American Airlines)
AA 826)
= Walter Mller)

Bei der Swiss-Air ist pro Person nur noch ein Gepckstck mit maximal 20 kg
Gewicht zugelassen. Lsche alle berzhligen Stcke, wobei diejenigen mit der kleinsten Gepcknummer jeweils im Bestand bleiben sollen.
Annahme:
GNr ist Sequenzfeld von Gepck, d.h. Gepckstcke sind nach GNr aufsteigend
geordnet.
GU

Gesellschaft (Name = Swiss-Air)


Flug
Passagier
goto FINDE_GEPCK
FINDE_NCHSTEN_PASSAGIER:
GN
Gesellschaft (NAME = Swiss-Air)
Flug
Passagier

3/4

if not_found goto ENDE


FINDE_GEPCK:
GHNP Gepck
if not_found goto FINDE_NCHSTEN_PASSAGIER /* kein Gepck */
if Gewicht > 20 kg {
DLET /* zu schwer */
goto FINDE_GEPCK
}
else goto LSCHE_REST
LSCHE_REST:
GHNP
Gepck
if not_found goto FINDE_NCHSTEN_PASSAGIER
DLET /* zu viel */
goto LSCHE_REST
ENDE:

4/4