4
Institut für Informatik Übungen zur Vorlesung Datenbanksysteme I Wintersemester 2002/2003 Institut für Informatik Ludwig-Maximilians-Universität München Prof. Dr. Hans-Peter Kriegel Stefan Schönauer 1/4 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, T 1 ) T 1 = (Flug, T 11 , T 12 ) T 11 = (Crewmitglied) T 12 = (Passagier, T 121 ) T 121 = (Gepäck) iii) Zwischenlösung: T = (Gesellschaft, T 1 ) T 1 = (Flug, (Crewmitglied), (Passagier, T 12 )) T 12 = (Gepäck) Aufgabe 2) Wir beziehen uns auf Alternative ii) A(T) = <(Lufthansa, Frankfurt)°A 1 (T 1 ), (British Airways, London)°A 2 (T 1 )> A 1 (T 1 ) = <(LH 375, 15:00, Amsterdam, B747)°A 11 (T 11 )°A 12 (T 12 ), (LH 368, 18:00, Düsseldorf, A320)°A 21 (T 11 )°A 22 (T 12 )> A 11 (T 11 ) = <(Tom Schmidt, Pilot), (Tina Maier, Stewardess)> A 12 (T 12 ) = <(Hans Müller, München)°A 112 (T 121 ), (Klaus Huber, Neufahrn)°A 212 (T 121 )> A 112 (T 121 )= <(1, Koffer, 15 kg), (2, Tasche, 5 kg)> A 212 (T 121 )= <(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 München, 4.11.2002

Loesung02a

Embed Size (px)

DESCRIPTION

informatik

Citation preview

Page 1: Loesung02a

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

Page 2: Loesung02a

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

Page 3: Loesung02a

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

Page 4: Loesung02a

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