Datenbankpraktikum - Übungen
Übungen
- Konzeptueller Entwurf (18.9.2012)
- logischer Entwurf (25.9.2012)
- Konsistenzbedingungen (2./9.10.2012)
- Updates (16.10.2012)
- Anfragen (23.10/30.10./6.11.)
- Transaktionen (13.11.2012)
- Sichten (20.11.2012)
- Benutzerdefinierte Funktionen und Stored Procedures (27.11.2012)
- Trigger (4.12.2012)
- JDBC (11./18.12.2012)
Konzeptueller Entwurf
Die Musterlösung für den konzeptuellen Entwurf ist hier
Logischer Entwurf
In der zweiten Übung bilden wir den konzeptuellen Entwurf auf einen logischen relationalen ab. Bereiten Sie dazu die logische Schemadefinition (Tabellendefinition) in PostgreSQL vor.
Die Musterlösungen für den logischen Entwurf in Form von PostgreSQL-DDL sind hier (Typen) und hier (Tabellen).
Constraints
Formulieren Sie Primärschlüssel-, Fremdschlüssel-, Eindeutigkeits-, Not-Null- und semantische (Check) Constraints über dem logischen Schema.
Achtung: diese Übungen sind für das Selbststudium, die Lektionen am 2. und 9.10. fallen aus.
Die Musterlösungen sind hier.
Anfragen
Anfrageaufgaben werden im Praktikum verteilt oder können hier heruntergeladen werden.
Vorbereitung:
- Anfragen werden im Postgres-Manual hier und hier beschrieben:.
- Laden Sie zur Vorbereitung einen Dump mit den Tabellendefinitionen der Musterlösung und Daten. Den Dump finden Sie hier. Laden sie den Dump wie folgt:
- Bennenen Sie die Datei von "cashdb-plain.txt" in "cashdb-plain.tar" um.
- Führen sie das folgende Kommando aus:
pg_restore -c -d cashdb -U cashu -i -v cashdb-plain.tar
Falls pg_restore nicht gefunden wird (kann auf Windows passieren), führen Sie davor das Skript pg_env.bat auf. Dieses befindet sich üblicherweise im Installationsverzeichnis von PostgreSQL.
- Die Folien mit Beispielen zu temporären Sichten und rekursiven Anfragen sind hier
- Die Musterlösungen sind hier.
Sichten
Vorbereitung: Die Ausführungen zu Sichten im Manual sind hier.
Für einige Übungen werden wir zusätzliche/neue Tabellen brauchen; dazu sollten Sie einen neuen Dump einlesen. Beim restore ist es wichtig, dass die Option "-c" angegeben wird, damit alte Definitionen etc. gelöscht werden. Ansonsten s. Übung für das Einlesen eines Dumps in PostgreSQL.
Wir werden uns in der Übung zu Sichten mit anderen Varianten zur Implementierung von Spezialisierungshierarchien beschäftigen. Tabellendefinitionen für die beiden Hierarchien (Member und Vehicle) ohne Tabellenvererbung finden Sie hier.
Die Musterlösungen für die Übungen zu Sichten sind hier.
Benutzerdefinierte Funktionen und Stored Procedures
Vorbereitung: Kapitel 35, 38, 39 im Handbuch. Wir werden "nur" SQL und PL/pgSQL als Implementierungssprachen verwenden, die Kapitel über PL/TCL, PL/Perl und PL/Python müssen nicht vorbereitet werden.
Hier sind die Musterlösungen für Funktionen, Prozeduren und Tabellenfunktionen.
Trigger
Vorbereitung: Kapitel 36 und 37 im Handbuch.
Die mUsterlösungen sind hier und hier.
JDBC
Eine kurze Einführung in JDBC und SQLJ ist hier. Einführung in JDBC auf einer alten Postgres-Seite (für Postgres 7.4, der JDBC-Teil ist aber immer noch gültig): link. Bis 11.12. sollten Sie sich eine Entwicklungsumgebung besorgt und damit vertraut gemacht haben (NetBeans, Eclipse, JDeveloper, ...). Besorgen Sie sich ausserdem einen JDBC-Treiber für Postgres (z.B. den Typ-4-Treiber von hier).
Ziel der Übung ist es, Java-Rahmenprogramme mit den richtigen JDBC-Befehlen zu vervollständigen. Vervollständigen Sie die Programme in dieser Reihenfolge:
- ListPersMembers.java
- GetMembers.java
- OpenReservations.java
- CancelReservations.java
- CreateInvoices.java