Klausur
Die Nach- bzw. Wiederholungsklausur findet am 22.10.2008 in der Zeit von 10.00 - 12.00 Uhr statt.
vorläufiges Klausurergebnis Hauptfach Punktzahl 69, bestanden ab 34.5
vorläufiges Klausurergebnis Nebenfach Punktzahl 57, bestanden ab 28.5
Die offizielle Klausureinsicht findet am 10.11.2008 in der Zeit ab 14.00 Uhr bei mir im Raum statt.
Wers bereits vorher Zeit hat, kann sich auch einen Termin mit Peggy Schmidt oder mir vereinbaren.
Die Klausur findet am 30.07.2008 in der Zeit von 10.00 - 12.00 Uhr statt.
vorläufiges Klausurergebnis Hauptfach Punktzahl 71, bestanden ab 35.5
vorläufiges Klausurergebnis Nebenfach Punktzahl 57, bestanden ab 28.5
Die offizielle Klausureinsicht findet am 07.10.2008 in der Zeit ab 14.00 Uhr bei mir im Raum statt.
Wer bereits vorher Zeit hat, kann sich auch einen Termin mit Peggy Schmidt oder mir vereinbaren.
Übung
Es werden begleitend zur Vorlesung Datenbanksysteme I / Systemorientierte Informatik IV - Datenbanksysteme
regelmässig Übungsblätter herausgegeben.
Diese Übungsblätter sollen von den Studierenden in Eigenarbeit gelöst, und bis zum auf dem jeweiligen Übungsblatt
angegebenen Termin zur Korrektur eingereicht werden.
Die korrigierten Aufgaben werden in der folgenden Übung zurückgegeben und besprochen.
Weitere Informationen zur Lehrveranstaltung finden Sie auf der Vorlesungsseite sowie auf der Übungsseite von Hr. Prof. Thaheim.
Übungszeiten
Beginn der Übungen ist am 05.05.08.
Die Übungen finden zu folgenden Zeiten statt:
| Mo | 12.15 - 13.45 Uhr | CAP2 R.B [Audimax] | Wulf |
| Mo | 12.15 - 13.45 Uhr | LMS2 R.Ü2 | Kramer |
| Di | 08.15 - 09.45 Uhr | LMS2 R.Ü1 | Prof. Thalheim |
| Di | 10.15 - 11.45 Uhr | LMS2 R.Ü1 | Schmidt |
| Do | 10.15 - 11.45 Uhr | CAP2 R.E [Audimax] | Jannaschk |
Die Übung am Do 12 - 14 Uhr wird es mangels Interesse nicht geben. Bitte sucht euch daher eine andere Übungsgruppe, zu der ihr geht. Eine Umschreibung ist hierfür nicht erforderlich.
Übungsblätter
Die Übungsblätter bitte bis zum jeweiligen Termin in den Schrein in der Hermann-Rodewald-Straße-3 einwerfen.
Entsprechende Scripte bitte per Mail an mich.
Bitte vergessen Sie nicht, Ihre Übungsgruppe auf den Lösungen und in den Mails anzugeben.
Übung 1 Abgabe bis 30.04.08 12 Uhr
Übung 2* Abgabe bis 08.05.08 12 Uhr
Übung 3* Abgabe bis 15.05.08 12 Uhr
Übung 4 Abgabe bis 22.05.08 12 Uhr
Übung 5 Abgabe bis 29.05.08 12 Uhr
Übung 6 Abgabe bis 05.06.08 12 Uhr lun-Schema
Übung 7 Abgabe bis 12.06.08 12 Uhr
Übung 8 Abgabe bis 19.06.08 12 Uhr DB2 JDBC Treiber | SQL Script zum Erstellen des Schemas
Übung 9 Abgabe bis 26.06.08 12 Uhr
Übung 10 Abgabe bis 03.07.08 12 Uhr
Diese beiden letzten Übungsblätter sind alte Klausuren. Sie bieten einen Querschnitt über die Themen, die ihr kennen müsstet.
Übung 11 Abgabe bis 10.07.08 12 Uhr
Übung 12* Abgabe bis 17.07.08 12 Uhr
* - korrigiert
Materialien zur VL
Anbei die entsprechenden Materialien zur Vorlesung "Datenbanken und SW-Entwicklung"
Eclipse-Projekt (Beispielsourcen)*
* - update
Projektaufgabe
Die Abschlusspräsentation findet am 16.7.08 ab 14.00 Uhr im CAP2 - R.B[Audimax] statt.
Dort wird jede Gruppe ihr Projekt in einem kurzen Vortrag (15min) den anderen vorstellen. D.h. es geht um einen kurzen Überblick über das Ziel, die Umsetzung,
welche Schwierigkeiten ihr hattet und wie ihr diese gelöst habt.
Aufgabe 1
Die Projektarbeit wird in kleinen Projektgruppen (2-4 Personen) durchgeführt. Sucht euch Mitstreiter, mit denen Ihr die Projektaufgaben erledigen möchtet.
Ziel der Projektarbeit ist eine kleine Datenbankanwendung, anhand derer die Themen der Vorlesung und Übung veranschaulicht werden.
Denkt euch ein Anwendungsszenario aus. Studierende, die bereits eine Projektarbeit für die Veranstaltung "Softwaretechnologie" erstellt haben,
können dieses Thema wiederverwenden. Alle anderen schaut euch bitte in eurem (Arbeits-)Umfeld um: sucht euch einen Vorgang,
bei dem größere Mengen an Daten elektronisch verarbeitet werden (oder verarbeitet werden könnten). Schreibt bis Mitte Mai ein kurzes Exposé
(ca. 1 Din-A4-Seite), in dem ihr das Anwendungsszenario skizziert und die Mitglieder eures Teams benennt. Schickt euer Exposé per E-Mail an
jannaschk@is.informatik.uni-kiel.de.
Ich werde die Machbarkeit (und Angemessenheit) der Aufgabenstellung beurteilen und ggf. Korrekturen vorschlagen.
Dies gilt auch für den Fall, dass sich mehrere Gruppen für dasselbe Thema entscheiden.
Aufgabe 2
Erstellt ein relationales Datenbankschema zu eurem Anwendungsszenario. Geht folgendermaßen vor:
- Identifiziert mindestens zwei verschiedene Arten von Nutzern, die später mit der Anwendung arbeiten werden. Überlegt euch, wie diese Nutzer mit dem System umgehen werden. Charakterisiert typische Arbeitsaufgaben dieser Nutzer. Schreibt eure Erkenntnisse entweder natürlichsprachlich auf oder nutzt die Methodiken, die ihr in der Vorlesung "Informatik III" kennengelernt habt.
- Überlegt euch, welche Daten während der gefundenen Arbeiten von den Nutzern benötigt werden. Schreibt in natürlicher Sprache einen Text, der diese Daten charakterisiert. Orientiert euch an den Übungsaufgaben zur Modellierung.
- Überführt eure natürlichsprachliche Spezifikation in ein relationales Datenbankschema. Das Datenbankschema soll mindestens 10 Relationenschemata enthalten. Dies ist natürlich abhängig von der gewählten Aufgabenstellung. Gebt alle Relationenschemata, alle Attribute, bei nichttrivialen Datentypen deren Definition und alle Integritätsbedingungen an. Gibt es Integritätsbedingungen, die sich mit den bis jetzt bekannten Mitteln nicht oder nur umständlich ausdrücken lassen? Benennt evtl. vorhandene "Grenzfälle" der entstandenen Modellierung, d.h. Zustände, die aufgrund der Spezifikation eigentlich verboten oder unerwünscht sind, die aber im formulierten Schema erlaubt sind. Versucht, die Menge dieser Grenzfälle klein zu halten. Diskutiert u.U. die Vor- und Nachteile verschiedener Modellierungsmöglichkeiten für einzelne Aspekte der Anwendung. Begründet eure Modellierungsentscheidungen.
- Gebt einen Beispielzustand zu eurem Schema an. Gibt es mögliche Situationen, die ihr mit eurem Schema nicht ausdrücken könnt?
Aufgabe 3
Setzt euer relationales Schema in ein SQL-Datenbankschema um. Das Referenzsystem für den zu benutzenden SQL-Dialekt ist DB2 UDB V9.1.
Dieses DBMS ist auf dem Server elara installiert. Falls ihr euch in eurer Aufgabenstellung für ein anderes DBMS entschieden habt,
gebt die Umsetzung nach DB2 UDB V9.1 an und diskutiert die Unterschiede zu eurem gewählten DBMS.
- Schreibt geeignete create table und create view-Anweisungen für eure definierten Relationenschemata. Wählt geeignete Datentypen für die Attribute.
- Definiert die Integritätsbedingungen:
- Primärschlüssel (jede Tabelle soll über einen Primärschlüssel verfügen),
- Fremdschlüssel,
- sowie bei Bedarf: unique-Constraints für eindeutige Werte in Spalten und
- check-Constraints für Bedingungen, die eine Zeile erfüllen muss.
- Schreibt Trigger, um die von euch gefundenen Integritätsbedingungen auszudrücken, die sich nicht mit Hilfe der im letzten Punkt genannten Konstrukte ausdrücken lassen.
- Erzeugt Datenbankzustände, mit denen ihr euer Datenbankschema testet. Überlegt euch geeignete Testfälle, um die Integritätsbedingungen zu überprüfen.
Wählt positive (d.h. gewünschte Zustände) und negative (d.h. unerwünschte Zustände) aus. Euer Schema muss alle gewünschten Zustände darstellen können und
alle unerwünschten Zustände ablehnen. Erzeugt euch einen repräsentativen gültigen Zustand, den ihr in den folgenden Aufgaben zum Testen der Anfragen benutzen werdet.
Hilfe zum Schreiben von Triggern und anderen SQL-Konstrukten in DB2 findt ihr im DB2-Handbuch. Erzeugt eure Beispielzustände mittels insert into-Befehlen oder nutzt den DB2-Befehl import, um CSV-Dateien ("Comma Separated Values"; Textdateien, die pro Zeile einen Datensatz enthalten, wobei die einzelnen Werte durch ein Komma getrennt sind) zu verarbeiten. CSV-Dateien laufen in DB2 unter dem Format DEL (für Delimiter).
Wenn ihr einen Trigger über das Webinterface erzeugen wollt, interpretiert der JDBC-Treiber jedes Semikolon innerhalb des BEGIN ATOMIC ... END-Blocks als Ende des Statements und es erscheint eine Fehlermeldung. Schreibt bitte eure Trigger in eine Textdatei und führt diese Textdatei mit Hilfe der DB2-Kommandozeile aus. Das Verfahren wird in der Bedienungsanleitung beschrieben. Nutzt ein anderes Sonderzeichen zum Beenden des gesamten Statements, z.B. das Prozentzeichen. Über den Kommandozeilenparameter -td könnt ihr diesen "Delimiter" angeben. Wenn skript.sql eure Textdatei mit Ihrer Triggerdefinition ist, und das create trigger-Statement mit einem Prozentzeichen abgeschlossen wird, dann führt dieses Skript folgendermaßen aus: db2 -td% -f skript.sql
Aufgabe 4
Setzt eure gefundenen Arbeitsaufgaben der Nutzer in SQL-Anweisungen um. Gebt jeweils eine natürlichsprachliche Beschreibung jeder einzelnen Anfrage bzw.
Änderungsoperation sowie die Übersetzung nach SQL an. Gebt die Parameter dieser Anweisungen an, d.h. die Stellen, an denen bei Ausführung der Anweisung in einem Programm
konkrete Konstanten eingesetzt werden können. Markiert diese Parameter in euren Anweisungen
(Beispiel: Gib das Geburtsdatum einer bestimmten Person $x: select Geburtsdatum from Personen where Name=$x.)
In Ihren Anfragen sollen folgende Konstrukte mindestens einmal benutzt werden:
- eine Mengenoperation
- Join
- Unterabfrage
- Gruppierung und Aggregatfunktion
Aufgabe 5
- Erstellt für euer relationales Modell ein HERM-Schema.
- Wählt euch einen Anwendungsfall (Arbeitsaufgabe) aus und implementiert die Nutzerschnittstelle(n) und die Anwendungslogik für diesen Anwendungsfall. Wählt euch ein passende Programmiersprache und eine passende Architektur aus (z.B. eine in Java programmierte Desktopanwendung mit Datenbankzugriff über JDBC, Servlet/JSP-Webanwendung, PHP-Webanwendung, etc.)
Teilnehmer
| Team | Studenten | Thema |
| 03. | chw, ffi | Wiki |
| 04. | pag, mobo | Buchungssystem stranddorf.de |
| 05. | ima, owo | Krankenhausdatenbank |
| 06. | mlic, ssm | Erfassung von Messergebnissen |
| 07. | pkl, cku, svc | Studi-DB |
| 10. | tcb, rra, jpe, mja | Bugtrackingsystem |
| 11. | npr, sit, sgoe, agr | Musikkonzertdatenbank |
| 12. | mspo, bro, jfr, mtim | Reiseplanmanagement (Planerstellung) |
| 13. | csc, cwi, gdr, lka | Tagungsverwaltung |
| 17. | bsch, khb, ros, mts | Regatta-Organisation |
| 20. | mgra, lal, bkz | Cocktaildatenbank |
| 22. | moe, ssch, fia, cdo | Büromaterialdatenbank |
| 23. | jma, has, bjk, cki | Termin-Organisations-System |
Nützliches
Der DB-Designer hat natürlich seine Einschränkungen, ist aber für Anfänger bestens geeignet.
Für weitere Informationen schaut auch auf die Webseite des Entwicklers.
Es existiert momentan noch keine Exportmöglichkeit in den SQL-Dialekt von DB2. Die Exportfilter sind aber als XSL-Skripte geschrieben, so dass eine Anpassung leicht möglich ist. Wer Zeit und Lust hat, einen solchen Konverter zu schreiben, kann sich bei den Mitarbeitern der Arbeitsgruppe melden.
Ein Tool um mittelsAnfragen können in Visual SQL anstelle der üblichen SQL-Programmierung von Datenbankanwendungen in einer
einfachen und zugleich verständlichen Form angegeben werden. Selbst komplizierte Anfragen, die auch für erfahrene SQL-Programmierer
eine Herausforderung darstellen, können in einer einfachen und überschaubaren Form erstellt, erweitert, verändert werden.
Mit Hilfe des Java-basierten Software-Werkzeugs lassen sich die Anfragen in Visual SQL erstellen und modifizieren. Darüber
hinaus besteht die Möglichkeit, Visual SQL Anfragen in SQL-Anfragen zu transformieren.

