Datenbankpraktikum 2015

Details

Datum: 31. August bis 18. September
Zeit: 9:00 bis 17:00 Uhr
Dozent: Prof. Dr. Oliver Vornberger
Tutoren: Miriam Beutel, Lukas Kalbertodt, Julian Kniephoff
Dokumentation http://media2mult.uos.de/pmwiki/fields/dbp15

Themen

Übersicht:

Gruppe A: Studiumsverwaltung

Mit Stud.IP und Opium wird an dieser Uni viel geregelt, aber als Student möchte man oft mehr: Sein Studium ordentlich planen können. Die in dieser Gruppe entwickelte WebApp soll genau das ermöglichen.

Oft kommt es vor, dass man beim Planen des neuen Semesters ein wenig den Überblick verliert. Man weiß schon, dass man in dem Bereich XY noch Punkte sammeln muss, aber sieht nicht auf einen Schlag, welche Kurse man sich in diesem Bereich anrechnen lassen kann. Das Tool sollte die Planung des neuen Semesters sehr benutzerfreundlich gestalten. Es werden alle Bereiche (Wahlpflicht, Anwendungsfach, ...) aufgelistet und die Kurse angezeigt, die man sich anrechnen lassen kann. Z.B. per Drag 'n Drop kann man dann Kurse aktiv einplanen und das Tool kann anzeigen, ob man schon genug Punkte in dem Semester eingeplant hat.

Weiterhin sollte das Tool intelligente Analysen, Ratschläge und Warnungen erzeugen können. Eine Warnung könnte so aussehen: »Achtung, Datenbanksysteme muss im Pflichtbereich belegt werden, wird aber nur alle 2 Jahre angeboten! Besser dieses Semester machen.«
Außerdem können Noten eingetragen werden, sodass dann die voraussichtliche Bachelornote schon berechnet werden kann.

Insgesamt geht es darum, dem Benutzer sehr schnell und einfach einen Überblick über sein Studium zu bieten. Analysen und Statistiken helfen, um die Daten besser zu verstehen. Warnungen und Hinweise verhindern, dass Benutzer Fehlplanungen vornehmen.

Gruppe B: Strategiespiel

In dieser Gruppe soll ein Browserspiel – eine Mischung aus RPG und Beat 'em up – entwickelt werden.

Eventuell kennen es einige von früher: My Brute. Man erstellt einen zufällig generierten Kämpfer (mit Eigenschaften wie Speed und Strength), mit dem man gegen andere Spieler kämpft. In den Kampf greift man jedoch nicht aktiv ein – das Ergebnis eines Kampfes ergibt sich aus den Werten beider Kämpfer und ein wenig Zufall.

Aber das nur als Beispiel: Natürlich werden wir kein anderes Spiel kopieren, sondern etwas Eigenes machen. Es soll aber auch darum gehen, dass jeder Spieler einen oder mehrere Kämpfer besitzt, die er trainieren kann. Jeder Kämpfer hat bestimmte Eigenschaften, die ihm im Kampf helfen. Außerdem kann ein Kämpfer Waffen tragen oder ein Haustier besitzen, welches ebenfalls hilft. Denkbar wäre auch noch ein Handelssystem, mit dem man Waren zu bestimmten Preisen kaufen und anbieten kann.

Die Kämpfe werden auch in unserem Spiel nicht durch direkt actionreiches Eingreifen des Spielers entschieden (das führt nämlich zu viel Javascript Code und hat wenig mit Datenbanken zu tun). Allerdings wäre es vorstellbar, dass die Kämpfe rundenbasiert ablaufen, man also hin und wieder mal die Möglichkeit hat, aktiv in den Kampf einzugreifen. Diese Entscheidung bleibt aber der Gruppe überlassen.

Gruppe C: Verwaltungssystem für Digitalfunkgeräte

Das Deutsche Rote Kreuz (DRK) im Kreis Borken reagiert als eine der ersten großen Hilfsorganisationen im Kreis auf stark gestiegene allgemeine Sicherheitsauflagen: Es hat einen Einsatzleitwagen angeschafft und verfügt über neue TETRA Digitalfunkgeräte, die im Einsatzfall zentral am Einsatzleitwagen gesammelt und vor dort an die Einsatzkräfte ausgegeben werden.

Die in dieser Gruppe entwickelte Applikation soll die Funktionen einer Geräteverwaltung bzw. eines Inventarsystems abbilden und dabei verbindliche Rückschlüsse darauf zulassen, welches Digitalfunkgerät wann, wo durch wen ausgegeben und zurückgegeben wurde. Die Zuordnung der Geräte soll dabei mittels Barcode oder RFID-TAG erfolgen.

Für die Ausgabe der Geräte soll ein Formular abgebildet werden, auf welchem der Entleiher den Empfang des Gerätes quittieren soll. Im Idealfall soll die Unterschrift auf einem SignPad papierlos erfolgen. Am Ende eines Einsatzes soll das Bedienpersonal im Einsatzleitwagen automatisch darüber informiert werden, dass noch nicht alle Digitalfunkgeräte zurückgegeben worden sind und auch die Information erhalten, wer noch ein Gerät zurückgeben muss.

Je nach Gruppengröße lässt sich die Applikation um weitere Module, wie zum Beispiel ein Modul zum Führen von Lagekarten, ergänzen um die Funktionalität zu erhöhen.

Die im Praktikum erstellte Applikation soll im Anschluss im Einsatzleitwagen des DRK Borken installiert werden und dort auch praktische Anwendung finden.

Gruppe D: Eigenes DBMS

Für die unter euch, die an Herausforderungen wachsen und auch ohne Klicki-Bunti auskommen, gibt es dieses Hardcore Projekt. Diese Gruppe wird ein eigenes Datenbank Management System entwickeln.

Viele vorgestellte Konzepte aus der Vorlesung werden hier tatsächlich implementiert. Ein Teil dieser Gruppe muss sich z.B. um eine Indizierung der Daten kümmern und die dazu vorgestellten Datenstrukturen, wie ISAM oder den B+ Baum, implementieren. Ein anderer Teil wird sich mit SQL Parsing beschäftigen – also wie man den SQL String auseinander nimmt und »versteht«. Dieser Befehl muss dann an andere Komponenten weitergegeben werden, die dann die eigentlichen Daten manipulieren oder zurückliefern.

Am Ende wird geschaut, welche Features man tatsächlich implementiert hat, und wie gut das DBMS schon funktioniert. Man kann Geschwindigkeitsunterschiede zwischen MySQL und dem eigenen DBMS messen oder versuchen die Projekte der anderen Gruppen auf unserem DBMS laufen zu lassen.

Und keine Panik: Das klingt alles sehr kompliziert, aber die Tutoren werden euch, besonders in der ersten Woche, viel helfen, sodass ihr nie völlig verzweifelt herumsitzen werdet.

Programmiert wird in Rust, einer modernen, sicheren und sehr schnellen Sprache. Es ist in etwa eine Mischung aus C++, Ruby und Haskell. Auch eine neue Sprache jagt erst mal Angst ein, aber das Erlernen der Sprache sollte keine größeren Probleme verursachen. Rust wird euch am Anfang grob erklärt und vorgestellt – danach könnt ihr jederzeit euren Tutor fragen.