7. ¨Ubungsblatt - Universität Konstanz

Werbung
Universität Konstanz
WS 2007/08
Lehrstuhl DBIS
Informationsmanagement
Prof. Dr. Marc H. Scholl / Svetlana Mansmann / Halldór Janetzko / Sören Schubert
7. Übungsblatt
(Ausgeteilt am: 03.12.2007, Abgabe: 10.12.2007,
P
20 Punkte)
Aufgabe 1: SQL-ANFRAGEN
(10 Punkte)
Damit du SQL-Befehle auf einem echten DBMS ausführen kannst, haben wir ein Benutzerkonto auf
einem relationalen DBMS PostgreSQL eingerichtet. Die Datenbank luft auf dem Uni-Server namens
phobos29.inf.uni-konstanz.de und kann übers Web unter
http://phobos29.inf.uni-konstanz.de/pgAdmin/ erreicht werden.
Logge dich um diese Aufgabe zu lösen auf der Webseite als Benutzer nobody mit Passwort www ein.
Mit diesem Konto dürfen Anfragen gestellt, aber keine Daten geändern werden. Benutze das Navigationsmenü auf der linken Seite um zu einzelnen Tabellen zu navigieren.
Die Datenbankinstanz für diese Aufgabe heißt cddb und die Tabellen liegen im Schema public. Die
Daten stammen aus freedb, einem kostenlosen Informationsdienst zu Musik-CDs im Internet. In den
Tabellen sind Daten von CD-Covers (Album und Interpreter, Genre und die Songs) gespeichert und
wie folgt strukturiert (Tabellennamen sind fett markiert und Attributnamen in Klammern aufgelistet).
albums (albumid, album)
artist2album (artist2albumid, artistid, albumid)
artists (artistid, artist)
cds (cdid, artist2albumid, ayear, genreid, discid)
cdtracks (songid, cdid, track)
genres (genreid, genre)
songs (songid, song)
Benutze den Link SQL oben rechts, um ein neues Fenster zu öffnen, in dem SQL-Anfragen eingeben
und ausgeführt werden können.
a) Führe folgende SQL-Anfragen aus und beschreibe sie in narürlicher Sprache (z.B. alle Alben
”
von Michael Jackson aus den 90er“). Kopiere die erhaltenen Treffer in eine Textdatei. Abzugeben sind die Beschreibungen der Anfragen sowie die erhaltenen Treffer. Sollten dir einige
der verwendeten SQL-Konstrukte unbekannt sein, scheue dich nicht, ihre Definitionen in der
PostgreSQL-Dokumentation unter
http://www.postgresql.org/files/documentation/pdf/8.1/postgresql-8.1-A4.pdf nachzuschlagen.
i) SELECT a1.albumid, ar1.artist, ar2.artist
FROM artist2album AS a1, artist2album AS a2,
artists AS ar1, artists AS ar2
WHERE a1.albumid=a2.albumid AND a1.artistid!=a2.artistid AND
a1.artistid=ar1.artistid AND a2.artistid= ar2.artistid
LIMIT 10
ii) SELECT ar1.artist, ar2.artist
FROM artists AS ar1, artists AS ar2
WHERE ar1.artist LIKE ’%’ || ar2.artist AND ar1.artist != ar2.artist
LIMIT 20
Bitte wenden!
−−−−−−−−−−→
-
iii) SELECT * FROM genres
WHERE genre LIKE ’%rock%’ AND genre NOT LIKE ’%pop%’
ORDER BY genre DESC
LIMIT 20
iv) SELECT DISTINCT track FROM cdtracks
ORDER BY track
v) SELECT AVG(ayear) AS avg_year
FROM cds c
WHERE ayear BETWEEN 1900 AND 2007
vi) SELECT DISTINCT album, ayear, track, song
FROM albums, artist2album, artists, cds, cdtracks, songs
WHERE artist=’mozart’ AND ayear>1700 AND
albums.albumid=artist2album.albumid AND
artist2album.artistid = artists.artistid AND
cds.artist2albumid=artist2album.artist2albumid AND
cdtracks.cdid= cds.cdid AND cdtracks.songid=songs.songid
ORDER BY ayear, album, track
LIMIT 30
b) Nun sollst du eigene SQL-Anfragen formulieren und ausführen, um folgende Fragen zu beantworten (Abzugeben sind die Anfragen sowie die jeweils erhaltenen Treffer, wobei die Anzahl der
Treffer je Anfrage auf 10 beschränkt werden soll).
i) Erstelle eine alphabetisch sortierte duplikatfreie Liste aller Genres von ABBA’s Alben (alle
Namen in cddb sind kleingeschrieben, z.B. abba).
ii) Gib alle Jahre aus (ohne Duplikate), in denen es CDs im Genre new age oder newage gab.
Aufgabe 2: DATENBANKENTWURF
(10 Punkte)
Ein ER-Schema für ein Flugbuchungssystem soll entworfen werden. Kunden sollen dort die typischen
Vorgänge eines Reservierungssystems durchführen können (Fluginformationen (Tarife, Strecken, freie
Plätze, Flugzeugtyp, Flugzeit, Zwischenstopps) abrufen, Reservierungen durchführen). Konstruiere
das ER-Schema und kennzeiche darin Schlüsselattribute und Kardinalitäten der Beziehungstypen.
Berücksichtige dabei folgende Anforderungen.
a) Eine Flugstrecke kann von mehreren Airlines bedient werden.
b) Ein Flug kann aus mehreren Teilstrecken bestehen (z.B. Zürich - San Francisco = Zürich - Atlanta, Atlanta - San Francisco).
c) Nicht jedes Flugzeug kann aufgrund seiner Größe/Bauart auf jedem Flughafen landen.
d) Für ein und denselben Flug kann es verschiedene Tarife geben (z.B. abhängig von Buchungsklasse, Buchungszeitraum, ...). Außerdem kann es für bestimmte Tarife Restriktionen geben
(z.B. Ticket kann nicht umgetauscht werden).
e) Jeder Flughafen ist durch einen dreistelligen Airportcode eindeutig bestimmt.
f) Der Kunde soll bei der Reservierung sehen können, mit welchem Flugzeugtyp er fliegt.
g) Bei der Buchung muss der Kunde seinen Namen, eine Telefonnummer und eine Kreditkartennummer angeben. Die Bearbeitung der Buchung (Rechnungs-/Ticketversandt) braucht nicht im
ER-Diagramm modelliert werden.
-
Herunterladen