Datenbankpraktikum - Übungen
Übungen
- Konzeptueller Entwurf (16.9.2014)
- logischer Entwurf (23.9.2014)
- Konsistenzbedingungen (30.09.2014)
- Updates (07.10.2014)
- Anfragen (07.10/14.10./21.10.)
- Transaktionen (28.10.2014)
- Sichten (4./11.11.2014)
- Benutzerdefinierte Funktionen und Stored Procedures (2.12. 2014)
- Trigger (9.12.2014)
- JDBC (18.11./16.12.2014)
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
(
PostgreSQL DDL, 5.1, 5.8, 5.11).
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
(PostgreSQL DDL).
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 -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
- Der Beispiel-Code zu rekursiven Anfragen ist hier
- Der Beispiel-Code zu analytischen Anfragen ist hier
- Die Musterlösungen sind hier.
Sichten
Vorbereitung: Die Ausführungen zu Sichten im Manual sind
hier.
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. Ein Skript zum Füllen der Tabellen finden Sie
hier.
Die Aufgabenstellung 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 Aufgaben für
Funktionen und Prozeduren.
Hier sind die Musterlösungen für
Funktionen,
Prozeduren und
Tabellenfunktionen.
Trigger
Vorbereitung: Kapitel 36 und 37
im Handbuch.
Hier sind die Aufgaben für
Trigger.
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 18.11. sollten Sie sich eine Entwicklungsumgebung besorgt und damit vertraut gemacht haben
(NetBeans,
Eclipse, JDeveloper, ...). Im Praktikum werden erste Schritte mit NetBeans vorgeführt.
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