Lösung Aufgabenblatt 03

Werbung
Übung zur Vorlesung
"Einführung in die Informatik für Hörer anderer Fachrichtungen (WZW)"
IN8003, SS 2011
Prof. Dr. J. Schlichter
Dr. Georg Groh, Dipl.Inform. Dipl.Geogr. Jan Herrmann, Florian Schulze BSc., Andrea
Koelle, Thomas Parsch
http://www11.in.tum.de/Veranstaltungen/EinfuehrungInformatikWzwSS11/uebung
Lösung zu Blatt 3
• Empfohlender Bearbeitungszeitraum: 31.05 - 10.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.
Sto
Es wird empfohlen folgendes Material anzusehen:
• Folien zur Zentralübung bis Sitzung 4
• A. Kemper , A. Eickler; Datenbanksysteme - Eine Einführung. Oldenbourg Verlag, 2009.
7. Auage.
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äugkeit 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