LoesungBlatt8+9

Werbung
Übung zur Vorlesung
”Einführung in die Informatik für Hörer anderer Fachrichtungen (WZW)”
IN8003, SS 2010
Prof. Dr. J. Schlichter
Dr. Georg Groh, Dipl.Inform. Dipl.Geogr. Jan Herrmann, Felix Hammerl, BSc
http://www11.in.tum.de/Veranstaltungen/EinfuehrungInformatikWzwSS10/uebung
Lösung zu Blatt 8+9
• Empfohlender Bearbeitungszeitraum: 07.06 - 11.06
• Die Aufgaben können selbständig aber auch gut in der Gruppe bearbeitet werden. Sie sind
nicht abzugeben. Es werden detaillierte Musterlösungen bereit gestellt. Wenn Fragen zu
Ihrer Lösung auch nach Vergleich mit der Musterlösung bleiben, können Sie Ihre Fragen
im Forum posten.
• Zur groben Orientierung ist zu jeder Aufgabe eine Einschätzung des Schwierigkeitsgrades
bzw. Aufwandes angegeben:
* Eher einfach und straightforward
** Schon schwierig oder zumindest aufwändig
*** Ziemlich schwierig oder sehr umfangreich. Wenn man diese Aufgabe halbwegs erfolgreich gemeistert hat, kann man ein wenig stolz auf sich sein.
Stoff
Es wird empfohlen folgendes Material anzusehen:
• Folien zur Zentralübung Sitzung 6+7
• A. Kemper , A. Eickler; Datenbanksysteme - Eine Einführung. Oldenbourg Verlag, 2009.
7. Auflage.
Aufgabe 1: SQL **
Formulieren Sie entsprechende SQL-Anfragen auf dem Universitätsschema.
1. Finden Sie alle Studenten, die bei Sokrates eine 1 bekommen haben.
select s.Name, s.MatrNr from Studenten s, prüfen p, Professoren prof where prof.Name =
’Sokrates’ and prof.PersNr = p.PersNr and p.Note = 1 and p.MatrNr = s.MatrNr;
2. Finden Sie Studenten, die 4-stündige Vorlesungen hören.
select distinct s.MatrNr, s.Name from Studenten s, hören h, Vorlesungen v where s.MatrNr
= h.MatrNr and h.VorlNr = v.VorlNr and v.SWS = 4;
3. Finden Sie Vorvorgänger der Vorlesung Bioethik.
select v1.Vorgänger as Vorvorgänger from voraussetzen v1, voraussetzen v2,Vorlesungen v
where v.VorlNr = v2.Nachfolger and v2.Vorgänger = v1.Nachfolger and v.Titel = ’Bioethik’;
4. Finden Sie die Assistenten von Professoren, die Vorlesungen mit weniger als 3 SWS halten.
select distinct a.PersNr, a.Name from Assistenten a, Vorlesungen v where a.Boss = v.gelesenVon
and v.SWS < 3;
5. Welche Studenten wurden von dem Professor geprüft, bei dem sie auch die Vorlesung
gehört haben?
select s.MatrNr, s.Name from Studenten s, Vorlesungen v, hören h, prüfen p where s.MatrNr
= h.MatrNr and h.MatrNr = p.MatrNr and v.VorlNr = p.VorlNr and h.VorlNr = p.VorlNr
and p.PersNr = v.gelesenVon;
Aufgabe 2: Joinoperationen *
Überlegen Sie sich einige Anfragen, bei denen die erweiterten Joinoperationen sinnvoll eingesetzt
werden können.
Linker äußerer Join Die folgende Anfrage bestimmt zu jedem Professor den geleisteten
Lehrbeitrag als die Summe der Semesterwochenstunden der von ihm/ihr gehaltenen Vorlesungen. Dabei sollen jedoch auch die Professoren ausgegeben werden, die gar keine Vorlesungen
halten.
select PersNr, Name, sum(SWS) from Professoren left outer join Vorlesungen on PersNr =
gelesenVon group by PersNr, Name;
Rechter äußerer Join Mit dieser SQL-Anfrage soll die Prüfungshäufigkeit von Vorlesungen
bestimmt werden. Da Vorlesungen hier der zweite Join-Partner ist und auch die Vorlesungen
aufgelistet werden sollen, die bisher nicht geprüft wurden, wird dazu ein right outer join
verwendet.
select count(*) as wieoft, v.VorlNr, v.Titel from prüfen p right outer join Vorlesungen v on
p.VorlNr = v.VorlNr group by v.VorlNr, v.Titel;
Äußerer Join Folgende Anfrage listet die Kombinationen von Professoren und zugehörigen
Assistenten auf. In der Ausgabe sollen auch die Professoren enthalten sein, die keine Assistenten
haben, sowie die Assistenten, die gegenwärtig keinem Professor zugeordnet sind.
select p.PersNr, p.Name, a.PersNr, a.Name from Professoren p full outer join Assistenten a on
a.Boss = p.PersNr;
Herunterladen