JUSTUS-LIEBIG-UNIVERSITÄT GIESSEN
Institut für Informatik
Dr. Stefan Brass
Die Punkte für Hausaufgaben und die beiden Klausuren werden in einer relationalen Datenbank mit dem folgenden Schema abgespeichert:
STUD_ID ist eine eindeutige Nummer,
die einem Studenten zugewiesen wird,
wenn er/sie das Registrierungsformular abschickt.
REGISTERED ist das Datum,
an dem die Zeile in die Tabelle eingefügt wurde.
LAST_NAME und FIRST_NAME
sind Nachname und Vorname,
die zusammen als alternativer Schlüssel der Tabelle deklariert sind.
LAST_TERM ist 'Y',
falls dies das letzte Semester des Studenten ist,
sonst 'N'.
Alle Attribute außer EMAIL, LAST_TERM
und GRADE sind nicht Null.
Diese Tabelle enthält drei Zeilen,
eine für die Hausaufgaben und jeweils eine für die beiden Klausuren.
CAT enthält einen Buchstaben (z.B. 'H'),
CAT_NAME den vollständigen Namen (z.B. 'Homeworks'),
and OUTPUT_ORDER ist 1 für die Hausaufgaben,
2 für die Zwischenklausur
und 3 für die Endklausur.
CAT identifiziert die Kategorie der Aufgabe
z.B. 'H' für eine Hausaufgabe,
'M' für eine Aufgabe der Zwischenklausur ("midterm exam")
und 'F' für eine Aufgabe der Endklausur ("final exam").
EX_NO ist die Nummer der Aufgabe.
MAX_POINTS ist die volle Punktzahl dieser Aufgabe.
Keines der Attribute erlaubt Nullwerte.
In dieser Tabelle wird die Information abgespeichert, wie viele Punkte ein Student für eine Aufgabe bekommen hat. Hat ein Student eine Aufgabe noch nicht abgegeben, so gibt es kein Tupel für diese Kombination von Student und Aufgabe (und nicht etwa einen Nullwert unter POINTS). ENTERED ist das Datum, an dem der Eintrag in der Tabelle vorgenommen wurde. Keines der Attribute erlaubt Nullwerte.
Ein SQL*Plus Skript, das die Tabellen anlegt und sie mit einigen Beispieldaten füllt, steht im WWW unter folgenden URLs:
Bitte schreiben Sie die folgenden Anfragen in SQL. Es wird dringend empfohlen, sie in Oracle SQL*Plus auszuprobieren. Natürlich können Sie auch die SQL-Schnittstelle eines anderen Datenbanksystems verwenden. In SQL*Plus können Sie mit dem Kommando SPOOL eine Protokolldatei anlegen und diese abgeben (siehe Anhang B). Sie brauchen aber die Anfrage-Ergebnisse nicht abzugeben.
Sie müssen eine einzige SQL-Anweisung für jede Aufgabe schreiben. Z.B. ist bei Teil a) nicht zulässig, zuerst die volle Punktzahl abzufragen, und sie dann in eine zweite Anfrage einzusetzen. Sie können aber voraussetzen, daß Hausaufgaben die Kategorie 'H' und die Zwischenklausur die Kategorie 'M' hat.
Bitte geben Sie Ihre Lösung bis Mittwoch, den 24. Januar ab.
Stefan Brass (Stefan.Brass@informatik.uni-giessen.de), 16. Januar 2001
Original URL: http://www.informatik.uni-giessen.de/staff/brass/db00/h8_sql.html [HTML 3.2 Checked]