Ü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 10 • Empfohlender Bearbeitungszeitraum: 02.07 - 09.07 • 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 9+10+11 • A. Kemper , A. Eickler; Datenbanksysteme - Eine Einführung. Oldenbourg Verlag, 2009. 7. Auflage. Aufgabe 1 ** Formulieren Sie entsprechende SQL-Anfragen auf dem Universitätsschema. 1. Finden Sie die Namen der Studenten, die in keiner Prüfung eine bessere Note als 3.0 hatten. Der Aufgabenstellung zufolge sind all die Studenten gesucht, die in keiner Prüfung eine bessere Note als 3.0 erzielten. Dies schließt damit auch die Studenten ein, die noch überhaupt keine Prüfung abgelegt haben. select s.Name, s.MatrNr from Studenten s where not exists (select * from prüfen p where p.MatrNr = s.MatrNr and p.Note < 3.0); 2. Finden Sie die Studenten mit der größten Semesterzahl unter Verwendung von Aggregatfunktionen. select * from Studenten where Semester = (select max(Semester) from Studenten); Aufgabe 2 * Suchen Sie unter Verwendung von exists die Professoren heraus, die Vorlesungen halten. Finden Sie eine weitere alternative äquivalente Formulierungen dieser Anfrage. Formulierung unter Verwendung von any: select PersNr, Name from Professoren where PersNr = any (select distinct gelesenVon from Vorlesungen); Formulierung unter Verwendung von exists: select PersNr, Name from Professoren where exists (select * from Vorlesungen where gelesenVon = PersNr); Formulierung unter Verwendung von distinct: select distinct PersNr, Name from Professoren, Vorlesungen where gelesenVon = PersNr; Aufgabe 3 * Entwerfen Sie eine SQL Aufgabe für die Klausur. Diese soll von den Prüflingen fordern, drei komplexe SQL-Anfragen auf dem Universitätsschema zu formulieren. Geben sie zu der Aufgabe auch eine Musterlösung (die Sie auf der Datenbank verifiziert haben) an. Posten Sie Ihre Aufgabe ins Forum. Hinweis: Die übrigen Aufgaben die eigentlich für Blatt 10 geplant waren, mussten nach Blatt 11 verschoben werden, da der benötigte Stoff in Sitzung 10 noch nicht behandelt wurde. Lösung: siehe Forum....