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