Upload
albertus-holbein
View
214
Download
0
Embed Size (px)
DESCRIPTION
informatik
Citation preview
Institut für InformatikLudwig-Maximilians-Universität München
Prof. Dr. Hans-Peter Kriegel
Übungen zur VorlesungDatenbanksysteme IWintersemester 2002/2003
Institut für InformatikLudwig-Maximilians-Universität München
Prof. Dr. Hans-Peter KriegelStefan Schönauer
München, 4.11.2002
Musterlösung Blatt 2: Hierarchisches Modell
Aufgabe 1)(Zu dieser Aufgabe gibt es viele mögliche Lösungen, je nachdem wie weit man die Schach-telung auflöst.)i) Vollständig geschachtelt:
T = (Gesellschaft, (Flug, (Crewmitglied), (Passagier, (Gepäck))))
ii) Vollständig aufgelöst:T = (Gesellschaft, T1)
T1 = (Flug, T11, T12)
T11 = (Crewmitglied)
T12 = (Passagier, T121)
T121= (Gepäck)
iii) Zwischenlösung:T = (Gesellschaft, T1)
T1 = (Flug, (Crewmitglied), (Passagier, T12))
T12 = (Gepäck)
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, Düsseldorf, A320)°A21(T11)°A22(T12)>
A11(T11) = <(Tom Schmidt, Pilot), (Tina Maier, Stewardess)>
A12(T12) = <(Hans Müller, München)°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 Lufthansa, Frankfurt
Flug LH 375, 15:00, Amsterdam, B747
Crewmitglied Tom Schmidt, Pilot
Crewmitglied Tina Maier, Stewardess
Passagier Hans Müller, München
Gepäck 1, Koffer, 15 kg
Gepäck 2, Tasche, 5 kg
1/4
Passagier Klaus Huber, Neufahrn
Gepäck 3, Surfbrett, 6.5 kg
Flug LH 368, ...
...
Gesellschaft British Airways, London
...
Aufgabe 3)- GN, GHN:
können Vater-Segment-Zeiger ändern - GNP, GHNP:
verändern Vater-Segment-Zeiger nicht- GU, GHU:
eigentlich “get first” (bez. hierarchischer Reihenfolge)- wird keine Ausprägung gefunden, so wird im PCB not_found gesetzt.
a) Bestimme die Nummern der Flüge, 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 sämtliche 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:
Beachte: Duplikate (Mehrfachnennungen) möglich.
d) Bestimme die Flugzeugtypen aller Flüge, auf denen Funker in der Crew eingesetzt werden.
GU Gesellschaft
if not_found goto ENDE
A: GN Flug *D
Crewmitglied (Funktion = ’Funker’)
if not_found goto ENDE
// Verarbeitung: print Flug.Maschine
goto A
2/4
ENDE:
Beachte: Duplikate möglich.
e) Ermittle die Namen aller Flugkapitäne, die auf Flügen eingesetzt werden, bei denen Surfbretter im Gepäck sind.
GU Gesellschaft
if not_found goto ENDE
A1: GN Flug
if not_found goto ENDE
GNP Passagier
Gepäck (Art = ’Surfbrett’)
if not_found goto A1
(*) GNP Crewmitglied (Funktion = ’Kapitän’) *F
if not_found goto A1
// Verarbeitung
goto A1
ENDE:
Beachte: Duplikate möglich.
falls es mehrere Kapitäne pro Flug gibt, ab (*) anders:
A2: GNP Crewmitglied (Funktion = ’Kapitän’) *F
A3: if not_found goto A1
// Verarbeitung
GNP Crewmitglied (Funktion = ’Kapitän’)
goto A3
f) Für den American-Airlines-Flug 826 soll Walter Müller als zusätzlicher Passagier gebucht werden. Er verfügt über einen Koffer mit der Nummer 777.
// Aufbau der Ausprägung für Passagier Walter Müller
ISRT Gesellschaft (Name = ’American Airlines’)
Flug (NR = ’AA 826’)
Passagier
// Aufbau der Ausprägung für Gepäck Nr 777
ISRT Gesellschaft (Name = ’American Airlines’)
Flug (NR = ’AA 826’)
Passagier (Name = ’Walter Müller’)
Gepäck
g) Bei der Swiss-Air ist pro Person nur noch ein Gepäckstück mit maximal 20 kg Gewicht zugelassen. Lösche alle überzähligen Stücke, wobei diejenigen mit der klein-sten Gepäcknummer jeweils im Bestand bleiben sollen.
Annahme:GNr ist Sequenzfeld von Gepäck, d.h. Gepäckstücke sind nach GNr aufsteigend geordnet.
GU Gesellschaft (Name = ’Swiss-Air’)
Flug
Passagier
goto FINDE_GEPÄCK
FINDE_NÄCHSTEN_PASSAGIER:
GN Gesellschaft (NAME = ’Swiss-Air’)
Flug
Passagier
3/4
if not_found goto ENDE
FINDE_GEPÄCK:
GHNP Gepäck
if not_found goto FINDE_NÄCHSTEN_PASSAGIER /* kein Gepäck */
if Gewicht > 20 kg {
DLET /* zu schwer */
goto FINDE_GEPÄCK
}
else goto LÖSCHE_REST
LÖSCHE_REST:
GHNP Gepäck
if not_found goto FINDE_NÄCHSTEN_PASSAGIER
DLET /* zu viel */
goto LÖSCHE_REST
ENDE:
4/4