Musterlösung 1 - auf Matthias

Werbung
Einführung in Datenbanksysteme, Datenbanken für die Bioinformatik
Sommersemester 2009
1. Übungszettel
(Musterlösung)
Einführung in Datenbanksysteme
Datenbanken für die Bioinformatik
Heinz Schweppe, Jürgen Broß, Katharina Hahn
1. Aufgabe (Dateisystem vs. Datenbanksystem)
16 Punkte
Der für die Administration der Studierendendaten verantwortliche H. Acker
beschließt, das Verwaltungssystem direkt in Java zu implementieren. Von jedem
Studierenden werden die folgenden Daten gespeichert:
Matrikelnummer, Name, Vorname, Fachrichtung, sowie die Semesterzahl
Verwenden Sie für die Teilaufgaben die Klasse java.io.RandomAccessFile.
Greifen Sie direkt über die Datei auf die Daten zu, d.h. laden Sie nicht initial alle
Datensätze in den Hauptspeicher).
Bei der Implementierung können Sie entscheiden, ob Ihr Format mit fester oder
variabler Länge von Datensätzen arbeitet.
a) Zu realisieren ist die Schnittstelle:
●
void open(String filename) throws IOException;
●
void close(String filename);
●
void insertStudent(Student student);
●
Student findStudentByIndex(int i)
throws IllegalArgumentException;
// Öffnet die Datei zum Lesen und Schreiben
// Schließt die Datei
// Einfügen eines neuen Satzes am Ende der Datei ein
//Liest den Datensatz des i-ten Studierenden in der Datei.
// 0 <= i < aktuelle Anzahl Studierender und gibt ein Objekt der Klasse Student zurück
Welche Unterschiede ergeben sich abhängig von der Entscheidung, ob die
Studierendendatensätze feste oder variable Länge haben? Feste Datensatzlänge ist
offenbar einfacher zu realisieren. Welche Nachteile bringt feste Länge mit sich?
•
•
Feste Datensatzlänge:
◦ Zugriff auf i-ten Datensatz einfacher (Position = i * Länge der Datensätze)
◦ Mehr Speicherplatz wird benötigt
Variable Datensatzlänge:
◦ Zugriff schwieriger zu realisieren (z.B. über zusätzliche Indexstruktur)
◦ Benötige weniger Speicherplatz
b) Erweitern Sie die Klasse aus a) durch die folgenden Operationen:
●
Student findStudentByMatrikel(int matrikel);
// Liefert den Studierenden mit der Matrkelnummer matrikelNr.
●
Student[] findStudentenByName(String name);
Ausgabe 16.04.2008
Einführung in Datenbanksysteme, Datenbanken für die Bioinformatik
Sommersemester 2009
// Liefert alle Studierenden mit Namen name.
c) Erweitern Sie die Klasse nun zusätzlich um folgende Operation:
●
Student maxStudentSemester();
//Liefert einen Studierenden mit maximaler Semesterzahl
Auf der Veranstaltungswebseite finden Sie innerhalb der Datei u01.jar ein JavaInterface für die obige Schnittstelle. Implementieren Sie Ihre Lösung in Java und
geben Sie Ihre Implementierung als jar-Datei elektronisch ab. Vergessen Sie nicht
den Quellcode mit in das jar-Archiv aufzunehmen.
Die u01.jar enthält zusätzlich zwei Testdatensätze (CSV-Format) und einen
Testdatensatz-Generator.
2. Aufgabe (Der Begriff Abstraktion bei Datenbanksystemen)
4 Punkte
Die Studierendenverwaltung wird mit Hilfe einer Datenbank realisiert. Neben
Studierenden werden Dozenten und Vorlesungen verwaltet, ferner Information
darüber, wer eine Vorlesung besucht und wer eine Vorlesung hält. Geben Sie an, auf
welches Modell / welche Abstraktionsschicht (extern, intern, konzeptionell) sich die
folgenden Änderungen auswirken. Begründen Sie Ihre Antworten kurz.
a) Es wird eine neue Vorlesung angeboten
Es wird lediglich der Datenbestand geändert, die 3 Schichten bleiben
unverändert.
b) In
der
Druckausgabe
von
Studierendenlisten
durch
die
Fachbereichverwaltung darf nicht mehr die Semesterzahl ausgegeben
werden.
Externe Sicht wird verändert.
c) Neben Vorlesungen werden jetzt auch Übungen erfasst. Sie haben im
Gegensatz zu Vorlesungen eine Kapazitätsbeschränkung.
Konzeptionell: Das Schema der DB muss angepasst werden (dadurch
ergeben sich evtl. auch automatische Änderungen an der internen Schicht,
muss aber nicht zwingenderweise so sein).
d) Mit Hilfe eines Index soll der Zugriff auf alle Studierenden einer Fachrichtung
beschleunigt werden.
Die interne Sicht wird verändert.
Ausgabe 16.04.2008
Einführung in Datenbanksysteme, Datenbanken für die Bioinformatik
3. Aufgabe
Sommersemester 2009
12 Punkte
Das RDF-Datenmodell des WWW-Konsortiums umfasst nur die Datendefinition
(Graph von Knoten und benannten Kanten). Definieren Sie Operationen, die Teil
einer Datenhandhabungssprache seien könnten. Lesen Sie dafür auch die RDFSpezifikation.
Lassen Sie sich ggf. von vorhandenen für RDF entwickelten Anfragesprachen wie
SPARQL (Wikipedia-Artikel) oder RQL (Spezifikation) inspirieren.
Mögliche Beispiele für Definitionen sind:
● Finde alle Knoten, die die property X haben.
● Finde alle Knoten, bei denen property Y den Wert z hat.
● Finde alle mit dem Knoten K (z.B. http://inf.fu-berlin.de) über einen Kantenzug
der maximalen Länge n verbundenen Knoten.
● Welchen Wert hat Property X von Knoten K?
● Finde alle Knotenpaare, die über einen Kantenzug miteinander verbunden sind.
● Wie viele Properties hat Knoten K?
● Welche Properties hat Knoten K?
● Finde alle Knoten, die genau n Properties haben?
● Gib alle Knoten auf dem Weg von X nach Y zurück.
zusätzlich:
●
●
●
●
Füge Knoten/Properties ein
Ändere Properties
Lösche Knoten/Properties
Zusätzliche Aggregatsfunktionen: Was ist der Durchschnittswert der Properties
von Knoten X.
Ausgabe 16.04.2008
Herunterladen