Navigation auf uzh.ch

Suche

Department of Informatics Database Technology

Datenbankpraktikum - Übungen

Übungen

  1. Konzeptueller Entwurf (16.9.2014)
  2. logischer Entwurf (23.9.2014)
  3. Konsistenzbedingungen (30.09.2014)
  4. Updates (07.10.2014)
  5. Anfragen (07.10/14.10./21.10.)
  6. Transaktionen (28.10.2014)
  7. Sichten (4./11.11.2014)
  8. Benutzerdefinierte Funktionen und Stored Procedures (2.12. 2014)
  9. Trigger (9.12.2014)
  10. 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.

Updates

Führen Sie Update-Operationen (Insert, Update, Delete) auf der Datenbank aus. Versuchen Sie, die vorher definierten Constraints zu verletzen.

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.

Transaktionen

Die Ausführungen zu Transaktionen im Manual sind hier.
Die Aufgaben können hier heruntergeladen werden. 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:

  1. ListPersMembers.java
  2. GetMembers.java
  3. OpenReservations.java
  4. CancelReservations.java
  5. CreateInvoices.java