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