Praktikum zur Vorlesung Datenbanken Komedia Dipl.-Inform. Matthias Jordan Dipl.-Inform. Thomas Beckers Ioannis Karatassis Jens Landmann Wintersemester 2011/2012 Datum Team (Account) Passwort Aktuelle Informationen, Ansprechpartner, Materialien und Uploads unter: http://www.is.inf.uni-due.de/courses/db_ws11/ 1 Inhaltsverzeichnis 1 Block 0: Einführung in Linux 3 2 Block 1: Modellierung einer Datenbank für eine MusikInformations-Website 4 3 Block 2: SQL mit DB2 4 Block 3: Programms 5 Implementierung eines Musik-Informations8 A Spezifikation des Programms A.1 Beschreibung der Mini-Welt . . . . . . . . . . . . . . . . . . . . . 2 9 9 1 Block 0: Einführung in Linux keine Abgabe 1: Einrichten der Arbeitsumgebung (0 Punkte) Bereitet zunächst Eure Arbeitsumgebung vor, so dass Ihr in den nächsten Wochen damit komfortabel arbeiten könnt. Die meisten Einstellungen können über das Menü entweder direkt unter System → Einstellungen oder über das GNOME-Kontrollzentrum (ebenfalls im System-Menü zu finden) vorgenommen werden. Eine andere nützliche Einstellung kann das Hinzufügen zusätzlicher Anwendungen (z.B. des Terminals oder eines Texteditors) in der Schnellstartleiste sein (enthält standardmäßig einen Web-Browser und ein E-Mail-Programm). Mit einem Rechtsklick auf das obere Panel und der Option Zum Panel hinzufügen. . . erhaltet Ihr ein Menü, aus dem Ihr mit Anwendungsstarter. . . (zweite Option von oben) eine Anwendung aus dem Menü in die Schnellstartleiste legen könnt. Abgabe: • Keine. 2: Linux-Umgebung (0 Punkte) Zur Eingewöhnung in die Arbeitsumgebung werden einige vom Praktikumsleiter vorgegebene, einfache Aufgaben bearbeitet. Am Ende der Aufgabe solltet Ihr in der Lage sein, mit der Linux-Shell Verzeichnisse zu navigieren, Verzeichnisse anzuzeigen und Dateien anzusehen. Ihr solltet wissen, wo Ihr einen Text-Editor, Dateibrowser oder Webbrowser aufrufen könnt und wie Ihr aus einer Textdatei ein PDF erzeugt. Abgabe: • Keine. 3 2 Block 1: Modellierung einer Datenbank für eine Musik-Informations-Website Abgabe bis 4.12.2011, 23:59:59 Uhr 3: Datenbank-Modellierung (6 Punkte) In diesem Semester soll eine Website für Musik-Informationen entwickelt werden. Dazu sollte als erstes die entsprechende Datenbank modelliert werden. Im Anhang dieses Dokuments (siehe Anhang A auf Seite 9) wird die generelle Funktionsweise der zu erstellenden Website vorgestellt. Es ist dringend anzuraten, vor dem Entwurf diese Spezifikation zu lesen und zu verstehen. Abgabe: • EER-Diagramm 4: CREATE TABLE-Statements (4 Punkte) Gebt für die in Aufgabe 3 entworfene Datenbank entsprechende CREATE TABLE-Statements an, die die Datenbank-Tabellen in der DB2 anlegen. Enthalten sein sollen darin • sinnvolle Integritätsbedingungen für alle Attribute • ein Trigger, der bei Anlegen einer neuen Playlist automatisch alle Aufnahmen in die Playlist hinzufügt, deren Attribut „Promotion“ den Wert „1“ hat. Abgabe: • CREATE TABLE-Statements 4 3 Block 2: SQL mit DB2 Abgabe bis 10.2.2012, 23:59:59 Uhr 5: Katalogisieren (1 Punkt) In diesem Praktikum werden wir die DB2 aus der Kommandozeile heraus ansprechen. Es gibt auch grafische, Java-basierte Werkzeuge, auf die wir jedoch hier verzichten. Macht Euch kurz mit den unterschiedlichen Modi vertraut, die in den Unterlagen beschrieben werden. Katalogisiert dann die Instanz dbmaster auf dem Rechner bijou.is.inf.uni-due.de mit Server-Port 50005. Katalogisiert die Datenbank imdb lokal unter einem Alias. Lasst Euch das Node Directory und das Database Directory anzeigen. Abgabe: • Einträge für Instanz und Datenbank 6: Arbeiten mit Schema und Tabellen (2 Punkte) Verbindet Euch mit der neukatalogisierten Datenbank und lasst Euch anzeigen, welche Tabellen existieren. Das Schema der Tabellen ist dbmaster. Schaut Euch zu verschiedenen Tabellen an, wie diese definiert sind. Experimentiert mit einigen einfachen SQL-Anfragen auf der Beispieldatenbank. Abgabe: • eine Liste der Tabellen in imdb • die Liste der Attribute der Tabelle title • Anzahl der Tupel in der Tabelle title • Anzahl unterschiedlicher Produktions-Jahre (production_year) in der Tabelle title 7: Sichten (2 Punkte) Erstellt eine Sicht, die eine symmetrische Relation von allen Paaren von Schauspielern des Films „Inception“ enthält. D.h. zu Schauspielern A und B, die mitspielen, soll die Tabelle zwei Tupel (A,B) und (B,A) enthalten. Abgabe: • SQL-Anweisung 8: Verwendung von Sichten (2 Punkte) Legt die Sicht aus Aufgabe 7 mit dem Namen dbpXXX.inceptionactors an und benutzt die Sicht, um die Anzahl der Paare zu ermitteln. Abgabe: • Die SQL-Anweisung incl. der Ausgabe 5 9: SQL-Anfragen (6 Punkte) Bei den nun folgenden Aufgaben sind SQLAnfragen gesucht. Bitte achtet bei Euren Anfragen darauf, dass Ihr keine „Abkürzungen“ benutzt, indem Ihr für bestimmte Werte Zwischenwerte ermittelt. Wenn z.B. nach den Filmen eines Schauspielers („actor“) gefragt wird, dürft Ihr nicht die ID der Rolle „actor“ ermitteln (sagen wir mal „100“) und dann in Eurer SQL-Anfrage den ermittelten Wert von 100 verwenden in der Form ... WHERE role_id=100 . Die SQL-Anfragen sollen also so formuliert sein, dass als Auswahlkriterien nur die jeweiligen Stichwörter aus der Aufgabe eingehen. Formuliert folgende Anfragen in SQL: * Was ist die ID des Schlagworts „love“ (Tabelle keyword)? * Was sind die ID’s der Titel, die mit „love“ verschlagwortet sind (Tabelle movie_keyword)? (a) Wie viele Filme sind mit dem Schlagwort „love“ getagged? * Welche Titel wurden in den Jahren 1941 bis 1945 gedreht? * Welche Schlagworte haben die Titel, die in den Jahren 1941 bis 1945 gedreht wurden? * Wie häufig kommt jedes einzelne Schlagwort vor in der Liste der Schlagwörter aus der vorherigen Aufgabe? (b) Ermittle für jedes der 30 häufigsten Schlagworte, wie oft es in den Titeln der Jahre 1941 bis 1945 vorkam und sortiere die Liste nach absteigender Vorkommenshäufigkeit. * Wie viele Serien-Folgen (Tabelle kind_type enthält die Arten der Titel in der Datenbank) sind in der Datenbank eingetragen? * Was ist die ID der Serie (Spalte title.kind_id) „The X Files“? * Welche Serien-Folgen hat die Serie „The X Files“? (c) Wie viele Folgen (episode) gibt es in der 5. Staffel (season) der Serie „The X Files“? * Welche ID hat die Person „Kevin Bacon (I)“? Dabei steht die „I“ im Namen für den Wert im Feld imdb_index. Dieses Feld wird benutzt, um mehrere Personen gleichen Namens in der Datenbank zu unterscheiden. * Welche ID hat die Rolle (Tabelle role) „producer“? Welche ID hat die Art (Tabelle kind) „movie“ ‘ (d) Ermittle die Namen und Produktions-Jahre aller Filme (Spalte kind_type=’movie’), die Kevin Bacon (I) produziert hat (Eintrag ’producer’ in Tabelle role). * Ermittle zu jedem Film („movie’ïn Tabelle kind_type) die ProduktionsFirmen („production companies“). (e) Ermittle, in welchem Land (Ländercode reicht) die meisten Filme produziert werden. (Filme werden von Firmen produziert, die den Typ ’produc- 6 tion companies’ haben. Für Firmen kennt die Datenbank den Ländercode.) Ordne die Liste absteigend nach Anzahl der Filme. * In welchen Filmen („movie“) tritt Chuck Norris auf? * In welchen Filmen („movie“) tritt Dolph Lundgren auf? (f) Ermittle die Namen und Produktions-Jahre der Filme, in denen Chuck Norris und Dolph Lundgren zusammen auftreten. Abgabe: • Die SQL-Anweisungen der Aufgaben, die mit einem Buchstaben bezeichnet sind und nicht mit einem „*“. 10: rekursive Anfragen (2 Punkte) Das Spiel „Six Degrees of Kevin Bacon“ geht so (Beschreibung von http://www.cs.virginia.edu/oracle): The object of the game is to start with any actor or actress who has been in a movie and connect them to Kevin Bacon in the smallest number of links possible. Two people are linked if they’ve been in a movie together. We do not consider links through television shows, made-for-tv movies, writers, producers, directors, etc. For example, you might wonder how Alfred Hitchcock can be connected to Kevin Bacon. One answer is that: Alfred Hitchcock was in Show Business at War (1943) with Orson Welles, and Orson Welles was in A Safe Place (1971) with Jack Nicholson, and Jack Nicholson was in A Few Good Men (1992) with Kevin Bacon! Then we can count how many links were necessary and assign the actor or actress a Bacon number. Findet alle Schauspieler und Schauspielerinnen mit einer maximalen BaconNummer von 4. Als Gedankenübung schreibt ein rekursives SQL-Statement, dass die Schauspieler und Schauspielerinnen für beliebige Bacon-Nummern findet. Tipp: In SELECT-Statements kann man sich das Ergebnis von Berechnungen zurückliefern lassen. Beispiel: SELECT 1+3 FROM title;. Abgabe: • SQL-Anweisung 7 4 Block 3: Implementierung Informations-Programms eines Musik- Fertigstellung bis 10.2.2012, 23:59:59 Uhr 11: Korrektur des Entwurfs (0 Punkte) Wenn Ihr die Korrekturen zu Eurem ER-Modell erhalten habt, überarbeitet Euren Entwurf und beseitigt evtl. Fehler und Probleme. Alternativ könnt Ihr auch die Musterlösung benutzen, die auf der Veranstaltungs-Webseite veröffentlicht wird. Abgabe: • Keine. 12: Implementierung (20 Punkte) Wenn Ihr ggf. Euer ER-Modell korrigiert habt, entwickelt eine Anwendung in Java als Konsolen-Anwendung, die die folgenden Anforderungen umsetzt. „Konsolen-Anwendung“ bedeutet dabei, dass die Interaktion des Benutzers mit dem Programm über die zeichenorientierte Kommandozeile geschehen soll und nicht etwa über eine Web-Applikation, Swing (mit GUI) o.ä. Dabei gilt auch wieder die Beschreibung der Miniwelt im Anhang A. Folgende Features sollen implementiert werden: • Bei Eingabe eines Namens eines Künstlers (Person oder Gruppe) werden alle Aufnahmen des Künstlers ausgegeben. • Es soll eine Liste der Aufnahmen ausgegeben werden zusammen mit ihrer durchschnittlichen Bewertung in absteigender Reihenfolge der durchschnittlichen Bewertungen. • Bei Eingabe der Namen von zwei Künstlern (jeweils Person oder Gruppe) werden alle Aufnahmen ausgegeben, bei denen die Künstler zusammen aufgetreten sind. Folgende Anforderungen sind dabei zu beachten: • Verwendung der DB21 • korrekte Verwendung von Transaktionen • Schließen von DB-Ressourcen an sinnvollen Stellen • Verhinderung von SQL-Injection Abgabe: • Keine. Das Programm wird bei einem separaten Abnahme-Termin zusammen mit den Veranstaltern vorgestellt und überprüft. 1 Mit anderen Worten: andere Datenbanken, die nicht die IBM DB2 sind, sind nicht zugelassen und führen bei Verwendung zum Nichtbestehen. 8 A Spezifikation des Programms A.1 Beschreibung der Mini-Welt • Alle Künstler haben einen Namen.2 • Alle Künstler sind entweder eine Person oder eine Gruppe (auch „Band“ genannt). • Personen können in einem Zeitraum (von Datum . . . bis Datum) Mitglied einer Gruppe sein. • Musikstücke haben einen Titel. • Musikstücke können miteinander verwandt sein. Das Verwandschaftsverhältnis soll durch eine Notiz beschrieben werden können (z.B. „Ice Ice Baby“ (Musikstück) „benutzt dieselbe Baseline wie“ (Beschreibung) „Under Pressure“ (Musikstück)). • Aufnahmen haben eine Länge, ein Veröffentlichungsjahr und einen -Ort sowie eine Audiodatei. • Aufnahmen sind Aufführungen von Musikstücken. Eine Aufnahme kann mehrere Musikstücke enthalten (Medley, etc.). In diesem Fall wird die Startzeit des jeweiligen Musikstücks innerhalb der Aufnahme festgehalten. Beispiel: Ein Medley enthält ab Sekunde 0 das Musikstück „Strong Enough“ und ab Sekunde 33 das Stück „The Goldfish Song“ etc. pp. Jede Aufnahme enthält aber mindestens ein Musikstück. • Kollektionen (z.B. CD, LP, etc.) haben ein Veröffentlichungsdatum, einen Namen und ein Cover-Bild. • Kollektionen enthalten mehrere Aufnahmen. Zu jeder Aufnahmen wird die fortlaufende Nummer des jeweiligen Stückes in der Kollektion festgehalten. • Aufnahmen können in mehreren Kollektionen enthalten sein (OriginalAlbum, Best-Of, etc.) • Rollen haben einen Namen. • Künstler können in bestimmten Rollen an Musikstücken beteiligt sein. • Instrumente haben einen Namen. Z.B. „voc“, „p“, „tb“ oder „Gesang“, „Piano“, „Posaune“ etc. • Künstler können an Aufnahmen beteiligt sein, in denen sie von einer Startsekunde bis zu einer Endsekunde ein bestimmtes Instrument spielen. • Für jede Aufnahme werden ein oder mehrere Haupt-Künstler festgehalten, die die Aufnahme hauptsächlich geschaffen haben. Z.B. „Jay-Z“ und „Linkin Park“. Diese Information soll in Listen verwendet werden, um auszugeben, von welchem Künstler eine Aufnahme ist, auch wenn z.B. Background-Sänger beteiligt waren. 2 Ausnahmen, wie der Künstler, der früher mal als „Prince“ aufgetreten ist, sollen nicht berücksichtigt werden. 9 • Benutzer haben einen Namen, eine Login-Kennung und ein Passwort. • Benutzer können Bewertungen schreiben zu Aufnahmen, Kollektionen, Künstlern und Musikstücken. • Bewertungen enthalten einen Text und ein numerisches Rating (im Bereich von 0 bis 5). • Playlisten haben einen Namen und enthalten Aufnahmen an einer bestimmten Position. Z.B. „Encore“ an Position 1, und „Dirt Off Your Shoulder“ an Position 2. (Playlisten können dann in der Reihenfolge der Positionen ihrer Aufnahmen aufgelistet werden.) 10