Prof. Dr. V. Linnemann D. Kukulenz Universität zu Lübeck Institut für Informationssysteme Lübeck, den 18. April 2005 Datenbankpraktikum Sommersemester 2005 2. Übungsblatt Aufgabe 1: HSQLDB Laden Sie das relationale Datenbank-Management System HSQL aus dem Internet herunter (http://hsqldb.sourceforge.net/, z.B. Version 1.7.3) und entpacken Sie die ZIP-Datei auf Ihre Festplatte. Bitte stellen Sie diese Dateien nicht unter die Kontrolle des CVS (d.h. es ist keine Kopie auf dem Praktikumsserver erwünscht). Erweitern Sie die Systemvariable CLASSPATH um das aktuelle Verzeichnis (.) und die beiden jar-Dateien, die im Ordner lib von HSQL liegen. Stellen Sie sicher, dass der CLASSPATH für alle Konsolen, die Sie nutzen, gesetzt ist. Machen Sie sich mit der Dokumentation von HSQL vertraut, die Sie im Ordner doc finden. Öffnen Sie die Konsole und starten Sie den HSQL Datenbank-Server durch den Aufruf von java org.hsqldb.Server Starten Sie jetzt aus einer anderen Konsole heraus die grafische Oberfläche von HSQL durch den Aufruf von java org.hsqldb.util.DatabaseManager Verbinden Sie sich mit dem Datenbank-Server, indem Sie aus der Liste Type den Eintrag HSQL Database Engine Server wählen. Klicken Sie im Menü Options auf Insert Test Data, um Beispieltabellen mit Inhalt einzufügen. Stellen Sie eine Anfrage an die Tabelle CUSTOMER, die die Wohnorte der Kunden zurückliefert, deren Nachname ’Ott’ ist. Geben Sie sowohl die Anfrage in korrekter SQL Syntax als auch das Ergebnis an. Speichern Sie diese Daten im Text-Format in einem Verzeichnis v/dbp/texte/blatt2/ in Ihrer lokalen CVS-Arbeitskopie und checken Sie sie (z.B. mit Eclipse) ein. 1/3 Aufgabe 2: Benutzer- und Gruppenmanagement Group contains User M:N name description username password fullname description • Definieren Sie zu dem ER-Diagramm geeignete Relationen (Tabellen). Wählen Sie geeignete Spaltentypen. Geben Sie die SQL-Create-Statements an. Speichern Sie diese Daten im Text-Format in einem Verzeichnis v/dbp/texte/blatt2/ und checken Sie sie (z.B. mit Eclipse) ein. • Die Entitäten User und Group werden durch die beiden Schnittstellen dbp.common.UserIF und dbp.common.GroupIF wie folgt modelliert. 1 2 package dbp . common ; import j a v a . u t i l . L i s t ; 3 4 5 6 public i n t e r f a c e UserIF { public S t r i n g getUserName ( ) ; public void setUserName ( S t r i n g name ) ; 7 public S t r i n g getFullName ( ) ; public void setFullName ( S t r i n g name ) ; 8 9 10 public S t r i n g g e t D e s c r i p t i o n ( ) ; public void s e t D e s c r i p t i o n ( S t r i n g d e s c ) ; 11 12 13 public L i s t getGroups ( ) ; public void addToGroup ( GroupIF group ) ; public void removeFromGroup ( GroupIF group ) ; 14 15 16 17 1 2 } package dbp . common ; import j a v a . u t i l . L i s t ; 3 4 5 6 public i n t e r f a c e GroupIF { public S t r i n g getName ( ) ; public void setName ( S t r i n g name ) ; 2/3 7 public S t r i n g g e t D e s c r i p t i o n ( ) ; public void s e t D e s c r i p t i o n ( S t r i n g d e s c ) ; 8 9 10 11 public L i s t g e t U s e r s ( ) ; public void addUser ( UserIF u s e r ) ; public void removeUser ( UserIF u s e r ) ; 12 13 14 15 } Erstellen Sie die Klassen User und Group, die die o.a. Schnittstellen implementieren. Organisieren Sie Ihre Klassen in Packages; der Name aller Packages beginnt mit dbp. Die Klassen User und Group sollen zum Package dbp.model gehören. • Erstellen Sie eine Klasse dbp.database.DataManager, welche überJDBC mit der obigen Datenbank kommuniziert und Basisfunktionalitäten zum Speichern, Laden, Verändern und Löschen von Benutzern und Gruppen ermöglicht. Beim Laden eines Objekts sollen die referenzierten Objekte nicht sofort mitgeladen werden. Das bedeutet z.B., dass wenn eine Gruppe geladen wird, die enthaltenen Benutzer nicht mit geladen werden. Erst beim Aufruf von getUsers werden diese nachgeladen. Die Klasse DataManager soll eine Singleton sein, da zur Laufzeit nur maximal eine Instanz der Klasse existieren darf. Das Erzeugen dieser Instanz soll nur über den Aufruf einer getInstance-Methode möglich sein. Abgabetermin: Montag, der 25.4.2005 3/3