institut f¨ur informatik - Lehrstuhl für Datenbanksysteme

Werbung
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
INSTITUT FÜR INFORMATIK
DER TECHNISCHEN UNIVERSITÄT MÜNCHEN
LEHRSTUHL III · DATENBANKSYSTEME · PROF. DR. GRUST
Übungen zur Vorlesung
“Datenbanksysteme für Hörer anderer Fachrichtungen”
Sommersemester 2007
Jens Teubner ([email protected]) · Manuel Mayr ([email protected])
1. Übungsblatt
Ausgabe: 7. Mai 2007 · Besprechung: 14. Mai 2007
Aufgabe 1: Beispieldatenbank aus der Vorlesung
Auf der Kurswebseite1 finden Sie eine SQL-Datei, die die Tabellen DEPT und EMP (Vorlesungsfolien 70 und 79) anlegt.
(a) Die Datei besteht aus CREATE TABLE- und INSERT INTO-Kommandos. Erklären Sie die
einzelnen Teile dieser Anweisungen, insbesondere
• Wo werden Tabellennamen, Spaltennamen, sowie Datentypen spezifiziert? Wie die
Inhalte der einzelnen Zeilen?
• Wofür steht das Schlüsselwort PRIMARY KEY?
• Was bewirkt die Anweisung REFERENCES ...?
• Was bedeuten die NOT NULL-Anweisungen?
(b) Legen Sie beide Tabelle mit Hilfe der angegebenen Datei an. Installieren Sie dazu
ein SQL-Datenbanksystem Ihrer Wahl auf Ihrem Rechner (z. B. IBM DB2, PostgreSQL,
Oracle, MS SQL Server,. . . ).
(c) Überzeugen Sie sich, dass beide Tabellen richtig angelegt wurden. Wie läßt sich mit Hilfe
von SQL der gesamte Inhalt der Tabelle DEPT auslesen?
(d) Die Reihenfolge der einzelnen Anweisungen ist nicht beliebig. Welches Problem erwarten Sie, wenn all INSERT INTO-Anweisungen in umgekehrter Reihenfolge ausgeführt
werden?
Tipp: Falls Sie den Effekt ausprobieren möchten: Mit den Kommandos
DROP TABLE EMP;
DROP TABLE DEPT;
können Sie beide Tabellen entfernen und nochmals erneut anlegen. Beachten Sie, dass das DROP
TABLE-Kommando Tabellen ohne Rückfrage und unwiederbringlich löscht!
(e) Ausgehend vom Datenbankzustand wie auf Vorlesungsfolie 79 führt ein Benutzer folgendes
Kommando aus:
INSERT INTO EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
VALUES (7782, ’JACK’, ’CLERK’, 7839, ’1978-07-19’, 2250, 20, NULL);
1 http://www-db.in.tum.de/cms/teaching/ss07/dbsysaf
Welche Antwort erwarten Sie vom System? Welche Anweisung in der Tabellendefinition ist dafür verantwortlich?
Aufgabe 2: Universitätsdatenbank
Eine Universität möchte ein SQL-Datenbanksystem einsetzen, um Daten zum Lehrbetrieb zu
verwalten. Dabei sollen insbesondere die folgenden Informationen gespeichert werden:
1. Zu Professoren werden Personalnummer, Namen, Fachgebiet und Gehaltsstufe gespeichert.
2. Für jeden Studenten verwaltet die Universität Matrikelnummer, Name, Fakultät, sowie
das aktuelle Fachsemester.
3. Vorlesungen werden mit Titel und Semesterwochenstundenzahl abgelegt.
4. Außerdem wird in dem Datenbanksystem festgehalten, welche Studenten welche Vorlesungen besuchen. Zu jeder Vorlesung wird der Dozent (Professor) gespeichert, der die
Veranstaltung hält.
Wie könnten Sie das angegebene Szenario möglichst elegant mit Hilfe von Datenbanktabellen abbilden ( modellieren“)? Überlegen Sie sich dazu zunächst, welche Tabellen Sie wohl
”
in jedem Fall benötigen werden. Beziehungen zwischen Tabellen lassen sich im allgemeinen mit
Hilfe von (Fremd-)Schlüsseln darstellen. Wie könnte man damit Punkt 4 abbilden?
Versuchen Sie, die entsprechenden Tabellen mit Hilfe von SQL-Anweisungen auf Ihrem
System anzulegen.
Hinweise:
• Für dieses Aufgabenblatt sollte es eigentlich ausreichend sein, wenn Sie SQL-Anweisungen
einfach von der oben erwähnten Datei und dem Vorlesungsskript abkupfern“; Details
”
zur Sprache SQL werden wir im Laufe des Semesters aufsammeln“.
”
Alternativ gibt es einen großen Fundus an Sekundärliteratur zum Erlernen von SQL,
insbesondere
– die Bibliothek. Praktisch jedes Grundlagenbuch zum Thema Datenbanken eignet
sich dazu. Finden Sie Ihren persönlichen Favoriten.
– Eine Internetsuche fördert schnell eine Vielzahl an SQL-Einführungen im Netz zutage.
• Mit SQL experimentieren Sie am einfachsten auf Ihrem heimischen System (mit einem
der angegebenen SQL-Systeme). Alternativ können Sie auch die SQL-Schnittstelle des
Lehrstuhls für Datenbanksysteme im Internet ausprobieren:
http://www-db.in.tum.de/db2face/index.shtml
Herunterladen