Aufgaben

Transcrição

Aufgaben
Praktikum zur Vorlesung Datenbanken
BAI, Komedia, ISE CSCE/CE,
Mathematik/Technomathematik und Lehramt
Informatik
Ioannis Karatassis, M.Sc.
Henning Schumann, B.Sc.
Nikolas Gur, B.Sc.
Wintersemester 2015/2016
Block 3 aktualisiert am 1. Dezember 2015
Datum
Team (Account)
Passwort
Aktuelle Informationen, Ansprechpartner, Materialien und Uploads unter:
http://www.is.inf.uni-due.de/courses/db_ws15/
v1.1
1
Inhaltsverzeichnis
0 Block 0: Einführung in Linux
3
1 Block 1: Modellierung einer Datenbank für eine MusikInformations-Website (10 Punkte)
4
2 Block 2: SQL mit DB2 (15 Punkte)
5
3 Block 3: Implementierung einer Musik-Informations-Website
(20 Punkte)
8
A Spezifikation der Website
A.1 Beschreibung der Mini-Welt . . . . . . . .
A.2 Beschreibung der zu erstellenden Website
A.2.1 Die Hauptseite . . . . . . . . . . .
A.2.2 Detailseite für Personen . . . . . .
A.2.3 Detailseite für Bands . . . . . . . .
A.2.4 Detailseite für Aufnahmen . . . . .
A.2.5 Detailseite für Musikstücke . . . .
A.2.6 Detailseite für Kollektionen . . . .
A.2.7 Bewertungen für Detailseiten . . .
A.2.8 Komplette Listen . . . . . . . . . .
A.2.9 Playlist . . . . . . . . . . . . . . .
A.2.10 Neue Playlist anlegen . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
9
9
10
10
11
11
15
16
16
18
18
18
18
B Beschreibung der Geodatenbank
22
B.1 Auflistung sämtlicher Tabellen . . . . . . . . . . . . . . . . . . . 22
B.2 Relationales Schema der Datenbank . . . . . . . . . . . . . . . . 27
B.3 Darstellung von Verknüpfungen zwischen einzelnen Tabellen . . . 29
2
0
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 direkt über das Menü in
der rechten oberen Ecke (eine Sprechblase mit Eurem Login-Namen) und dann
Systemeinstellungen vorgenommen werden.
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
1
Block 1: Modellierung einer Datenbank für eine Musik-Informations-Website (10 Punkte)
Abgabe bis 30.11.2015, 11: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.1 auf Seite 9) wird die generelle
Funktionsweise der zu erstellenden Website vorgestellt. Es ist dringend anzuraten, vor dem Entwurf neben der Beschreibung der Miniwelt auch die vollständige
Spezifikation (siehe Anhang A.2 auf Seite 10) zu lesen und zu verstehen.
Abgabe:
• EER-Diagramm
4: CREATE TABLE- und Trigger-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 und Trigger-Statement
4
2
Block 2: SQL mit DB2 (15 Punkte)
Abgabe bis 8.2.2016, 11.59 Uhr
Für die folgenden Aufgaben steht eine Beschreibung der verwendeten Datenbank
im Anhang B zur Verfügung.
Hinweis: Block 2 ist unabhängig von Block 1 und 3. Letztere bauen aufeinander
auf.
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.
Die Datenbank mit der wir arbeiten werden befindet sich auf einem entfernten Rechner und muss daher in Eurem Rechner importiert werden. 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 mondial lokal unter einem Alias.
Lasst Euch das Node Directory und das Database Directory anzeigen.
Abgabe:
• Einträge für Instanz (node) und Datenbank (database)
6: Sichten (1 Punkt)
(a) Erstellt eine Sicht dblabXX1 .landmarks aller Landmarken (Berge und Ästuare) mit ihrem Typ (mountain, estuary) und den Ländern, in denen
sie sich befinden. Die Sicht soll die drei Attribute name, type und country
enthalten. Dabei soll in name der Name der Landmarke und in country
der Name des Landes (nicht das Kürzel!) enthalten sein.
(b) Erstellt aus der Tabelle borders eine Sicht, die eine symmetrische Grenzrelation enthält. D.h. zu Ländern A und B, die aneinander grenzen, soll
die Tabelle zwei Tupel (A,B,Länge) und (B,A,Länge) enthalten. A und B
sind dabei die Kürzel (Schlüssel) der Länder.
Abgabe:
• SQL-Befehle
7: Verwendung von Sichten (2 Punkte)
(a) Benutzt die Sicht dblabXX.landmarks, um zu jedem Land die Anzahl von
Landmarken auszugeben.
(b) Benutzt die Sicht dblabXX.borders, um für alle Länder die Gesamtlänge
ihrer Grenzen auszugeben.
1 Dabei
steht XX“ für Eure Gruppenummer
”
5
Abgabe:
• SQL-Befehle
8: SQL-Anfragen (8 Punkte) Formuliert folgende Anfragen in SQL:
(a) Ermittelt zu allen Meeren die Gesamtfläche aller Inseln, die in jeweils
einem Meer liegen.
(b) Ermittelt zu jedem Land die dort am häufigsten gesprochene Sprache und
gebt Landesname (nicht Kürzel!), Sprache und Prozentanteil der Sprache
aus.
(c) Ermittelt alle Organisationen, in denen alle Länder mit Wüsten Mitglied
sind (nicht: alle Mitgliedsländer Wüsten haben).
(d) Ermittelt alle Paare von Ländern mit mindestens 10 Provinzen, die die
gleiche Zahl von Provinzen haben. Jedes Länderpaar soll nur einmal ausgegeben werden.
(e) Ermittelt zu jedem Land in Europa den längsten Fluss, der durch das
Land fließt (wenn es überhaupt einen solchen Fluss gibt). Die Ausgabe
soll nach Länge des Flusses sortiert werden.
(f) Berechnet den prozentualen Anteil der Angehörigen jeder ethnischen
Gruppe an der Weltbevölkerung.
Tip: Wenn man zwei Ganzzahlen (Integer) durcheinander teilt, so erhält
man als Ergebnis eine Ganzzahl, daher sollten die Operanden für die Berechnung von Prozentanteilen zunächst in einen anderen Datentyp gewandelt werden.
Tip: Beim Aufsummieren oder Durchschnittbilden von großen Ganzzahlen
kann es leicht zum Überlauf kommen. Daher gegebenfalls vorher in einen
anderen Datentyp wandeln.
(g) Die in der Datenbank aufgeführten Städte seien alle existierenden Städte.
Berechnet den Anteil der städtischen Bevölkerung an der Gesamtbevölkerung für die Länder Europas.
(h) Bestimme alle Organisationen, die auf jedem Kontinent mindestens ein
Mitgliedsland besitzen (die Art der Mitgliedschaft soll keine Rolle spielen).
Abgabe:
• SQL-Befehle
9: rekursive Anfragen (1 Punkt)
(a) Ermittelt mit Hilfe einer rekursiven Anfrage alle Zuflüsse des Rheins direkte und indirekte) und berechnet die Gesamtlänge des Flussnetzes. Gesucht
ist also eine einzige SQL-Abfrage, die die Gesamtlänge des Flussnetzes wie
oben beschrieben ausgibt.
Abgabe:
• SQL-Befehl
6
10: Trigger (2 Punkte) Erstellt und füllt zunächst eine Tabelle
dblabXX.orgacount (ersetzt XX wieder durch Eure Gruppennummer):
CREATE TABLE dblabXX.orgacount (
orga VARCHAR(20),
countrycount INTEGER
)
INSERT INTO dblabXX.orgacount
SELECT o.abbreviation, COUNT(m.organization)
FROM organization o JOIN ismember m
ON o.abbreviation=m.organization
GROUP BY o.abbreviation
Schreibt nun zwei Trigger mit dem Namen dblabXX.trigger1 und
dblabXX.trigger2, die folgendes leisten:
• wenn neue Mitgliedschaften in die Tabelle dblabXX.ismember eingefügt
werden, soll das Attribut countrycount für entsprechenden Organisationen erhöht werden
• wenn Mitgliedschaften aus der Tabelle dblabXX.ismember gelöscht werden, soll das Attribut countrycount für die entsprechenden Organisationen gesenkt werden
Hinweis: Die Tabellen dblabXX.city und dblabXX.ismember müssen vorher
aus dem Schema dbmaster in das eigene Schema kopiert werden.
Abgabe:
• SQL-Befehle
7
3
Block 3: Implementierung einer
Informations-Website (20 Punkte)
Musik-
Fertigstellung bis zum Abnahmetermin (9.2.2016 – 12.2.2016)
11: Korrektur des Entwurfs (0 Punkte) Wenn Ihr die Korrekturen zu Eurem EER-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 EER-Modell korrigiert habt, entwickelt eine Web-Anwendung (Website) in Java, die die beschriebenen Anforderungen (siehe Beschreibung A.2 im Anhang A) umsetzt.
Die Struktur der Daten (und eventuelle Integritätsbedingungen) ist bereits aus
der Beschreibung der Miniwelt (siehe Anhang A.1) bekannt.
Folgende Anforderungen sind dabei zu beachten:
•
•
•
•
•
Verwendung der DB22
Korrekte Verwendung von Transaktionen
Schließen von DB-Ressourcen an sinnvollen Stellen
Verhinderung von SQL-Injection
Befüllen relevanter Tabellen mit einigen Beispieldaten, um die Website
testen zu können
Abgabe:
• Keine. Die Web-Anwendung wird bei einem separaten Abnahmetermin
zusammen mit den Veranstaltern vorgestellt und überprüft.
Beim Abnahmetermin gibt es zwei Möglichkeiten:
(a) Ihr könnt Eure Lösung abnehmen lassen, indem Ihr sie auf Eurem eigenen Laptop etc. vorführt. Dazu bringt Ihr das Gerät zum Termin mit und
denkt bitte an Netzteil und/oder an genug Akkuladung. Testet die Vorführung bitte vorher. Zur Not sollte sich im Workspace Eures dblab-Accounts
eine Kopie Eures Endprojekts befinden.
(b) Ihr könnt Eure Lösung auch auf einem Rechner im Computerpool vorführen. Dazu sollte sich die Endversion Eures Projekts im Workspace Eures
dblab-Accounts befinden.
In beiden Fällen werden wir uns sowohl die Funktionalität des Programms als
auch den Quellcode anschauen! Für jedes Feature, was korrekt implementiert
wurde, werden Teilpunkte vergeben. Daher lohnt sich eine Anmeldung für die
Abnahme in jedem Fall.
8
Anhang
A
A.1
Spezifikation der Website
Beschreibung der Mini-Welt
• Alle Künstler haben einen Namen.3
• Alle Künstler sind entweder eine Person oder eine Gruppe (auch Band“
”
genannt).4 Für Personen kann eine Biografie hinterlegt werden.
• 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) Un”
”
der Pressure“ (Musikstück)).
• Aufnahmen haben eine Länge, ein Veröffentlichungsjahr und einen -Ort
sowie eine Audiodatei. Darüber hinaus ein Feld Promotion, welches die
Werte 0 oder 1 annehmen kann.
• 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.
”
”
3 Ausnahmen, wie der Künstler, der früher mal als Prince“ aufgetreten ist, sollen nicht
”
berücksichtigt werden.
4 Verwende für die Vererbung ein Konstrukt von EER-Modellen (Erweiterte EntityRelationship) (s. http://www.is.inf.uni-due.de/courses/db_ws10/folien/Kap04a.pdf, S.
3)
9
• 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.
• 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 Shoul”
”
der“ an Position 2. (Playlisten können dann in der Reihenfolge der Positionen ihrer Aufnahmen aufgelistet werden.)
• Playlisten sind an Benutzer gebunden; eine Playlist gehört genau einem
Benutzer.
A.2
Beschreibung der zu erstellenden Website
Zu erstellen ist also eine Website für Musik-Metainformationen.
In den hier aufgeführten Mockups (Wireframes) ist das Rechteck oben im jeweiligen Mockup das Seiten-Logo, das wir Euch im Eclipse-Workspace mitliefern.
Hinweis: Zum Testen der Website sowie für die Abnahme, sollten einige Beispieldaten in die Tabellen eingefügt werden. An einigen Stellen im Programmcode sind DB-Transaktionen erforderlich, um eventuelle Anomalien zu vermeiden. Identifiziert sinnvolle Stellen und implementiert anschließend das Konzept
an diesen Stellen.
Die zu erstellende Website soll folgendermaßen aufgebaut sein:
A.2.1
Die Hauptseite
Der Einstieg soll über die Hauptseite (siehe Abbildung 1) beginnen, die eine
Übersicht über die verfügbaren Daten liefert. Bei den anzuzeigenden Playlisten
handelt es sich um diejenigen, die dem aktuell angemeldeten Benutzer gehören.
Aus der Beschreibung geht hervor, dass eine Playlist genau einem Benutzer
gehört.
Hinweis: Eine Anmeldefunktion (Login) ist nicht notwendig! Im Programmcode soll ein Standardbenutzer fest vorgegeben (hartkodiert) sein. Alle benutzerspezifischen Lese- und Schreiboperationen auf der Datenbank (z.B. das Anlegen
einer Playlist) sollen mit diesem Benutzer durchgeführt werden.
10
Zu den Haupt-Informationstypen sollen jeweils maximal fünf gelistet werden –
wir schlagen vor, die letzten eingefügten Einträge aufzulisten. Ein Klick auf einen
Eintrag soll zur jeweiligen Detailseite führen. Da Künstler entweder einzelne
Personen oder eine Band sein können, sollen die Links bei den Künstlern auf
die jeweilige Detailseite führen.
Es soll möglich sein, Künstler anhand ihres Namens, und Aufnahmen und Musikstücke anhand ihres Titels suchen zu können. Dazu sollte das LIKE-Prädikat
verwendet werden. Die Ergebnisseite der Suche kann jeweils genau so dargestellt
werden, wie die Liste aller entsprechenden Einträge (siehe Abbildung 1), nur,
dass eben die angezeigten Elemente der Suche entsprechen müssen.
Um die Usability der Website zu verbessern, sollte auf jeder Unterseite ein Link
auftauchen, der auf die Hauptseite führt.
A.2.2
Detailseite für Personen
Hier (siehe Abbildung 2) soll neben dem Namen und der Biographie angezeigt
werden, welche Aufnahmen eine Person veröffentlicht hat und an welchen Aufnahmen bzw. Musikstücken sie wie beteiligt war. Die Verlinkungen sind angegeben.
A.2.3
Detailseite für Bands
Bands haben keine Biographie. Bands haben aber Mitglieder, die aufgelistet
werden sollen (siehe Abbildung 3). Die Namen der Mitglieder sollen auf die
jeweiligen Personen-Seiten verlinken.
Die Veröffentlichungen der Band sollen ebenfalls aufgelistet werden inkl. einer
Verlinkung auf die Seite der jeweiligen Aufnahme.
11
Abbildung 1: Die Hauptseite
12
James Hetfield
Biographie:
Lorem ipsum dolor ...
Veröffentlichte:
Alle meine Entchen
1989
Zur Aufnahme
Beteiligt:
Zum Musikstück
Harvester of Sorrow (Komposition, Gitarre)
Alle meine Entchen (Gitarre)
Zur Aufnahme
Abbildung 2: Die Personen-Detailseite
13
Metallica
Mitglieder:
James Hetfield
Lars Ulrich
Cliff Burton
...
1981 - heute
1981 - heute
1982 - 1986
Zum Künstler
Veröffentlichte:
... and Justice for All
...
1988
Zur Aufnahme
Abbildung 3: Die Band-Detailseite
14
A.2.4
Detailseite für Aufnahmen
Auf der Aufnahmen-Detailseite sollen Details zu einer Aufnahme aufgelistet
werden.
Die Dropdown-Liste, die im Mockup als Diverse“ beschriftet ist (siehe Abbil”
dung 4), soll alle Playlisten des aktuell angemeldeten Benutzers beinhalten.
Der Button Zu Playlist hinzufügen“ soll die Aufnahme zu der Playliste hinzu”
fügen, die in der Dropdown-Liste ausgewählt ist und zwar an die letzte Position.
Dies soll nur geschehen, wenn die Aufnahme nicht bereits in der ausgewählten
Playliste vorhanden ist. Anschließend wird die Detailseite aktualisiert.
Dropdown-Feld enthält alle Playlisten
des Benutzers
Abbildung 4: Die Detailseite für eine Aufnahme
15
Abbildung 5: Detailseite für ein Musikstück
A.2.5
Detailseite für Musikstücke
Die Details für ein Musikstück sollen aufgeführt werden wie in Abbildung 5
gezeigt wird.
A.2.6
Detailseite für Kollektionen
Kollektionen haben normalerweise auch ein Plattencover. Das Cover-Bild soll in
dem entsprechenden Rechteck angezeigt werden. Ansonsten soll diese Seite so
funktionieren wie eine Playlist-Detailseite. (Das Cover-Bild kann eine einfache
Datei sein, auf die verlinkt wird.)
16
Abbildung 6: Detailseite für eine Kollektion
17
A.2.7
Bewertungen für Detailseiten
Benutzer können Bewertungen schreiben zu Aufnahmen, Kollektionen, Künstlern und Musikstücken. Diese bestehen aus einem numerischen Rating (im Bereich von 0 – 5) und einem Text. Auf den entsprechenden Detailseiten (zu Aufnahmen, Kollektionen, Personen, Bands und Musikstücken) soll im unteren Bereich der Seite das Bewertungssystem eingebaut werden (siehe Abbildung 7).
Ein Benutzer kann – über den Button Bewerten“ – pro Eintrag maximal eine
”
Bewertung abgeben. Dies soll im Programmcode explizit überprüft werden. Bewertet der Benutzer einen Eintrag erneut, obwohl er diesen bereits bewertet hat,
soll die alte Bewertung gelöscht und die neue Bewertung übernommen werden.
Anschließend soll die Detailseite aktualisiert werden.
Die Durchschnittsbewertung für einen Eintrag setzt sich aus dem arithmetischen
Mittel über alle Bewertungen zusammen.
Darüber hinaus sollen sämtliche Bewertungen (jeweils Benutzername, Rating
und Text) für diesen Eintrag angezeigt werden.
A.2.8
Komplette Listen
Einige Seiten (siehe Abbildungen 8 und 9) sollen alle Entitäten eines Typs auflisten: alle Künstler (Bands und Personen) bzw. alle Aufnahmen.
A.2.9
Playlist
Eine Playlist-Seite (siehe Abbildung 10) soll die Stücke der jeweiligen Playlist
auflisten (sortiert anhand den Positionen) sowie die Gesamtlänge aller Stücke.
Pro Aufnahme soll ein Link zum Downloaden der Musik-Datei angeboten werden
(ein einfacher Link auf eine Musik-Datei genügt).
A.2.10
Neue Playlist anlegen
Das Anlegen einer neuen Playlist (siehe Abbildung 11) ist sehr einfach gehalten:
der Name soll in die Textbox eingegeben werden und nach Klick auf Anlegen“
”
soll die Liste angelegt und der Benutzer auf die (aktualisierte) Hauptseite geleitet werden. Wenn eine Playlist schon existiert, soll dieser Fehler still ignoriert
werden.
18
Abbildung 7: Bewertungen für Detailseiten
19
Künstler
Zum Künstler
John Doe
Jane Doe
Guns 'N' Flowers
...
Abbildung 8: Die Liste aller Künstler
Aufnahmen
Titel
Titel
...
3:30
2:54
Künstler A 2001
Künstler B 1999
Zum Künstler
Zur Aufnahme
Abbildung 9: Die Liste aller Aufnahmen
20
Abbildung 10: Die Detailseite für eine Playlist
Abbildung 11: Erstellen einer neuen Playlist
21
B Beschreibung der Geodatenbank
Für die SQL-Aufgaben ist eine Beispieldatenbank mit geographischen Daten
vorgegeben. Diese Datenbank mondial solltet Ihr in der ersten Woche unter
einem lokalen Alias katalogisiert haben.
Der relevante Ausschnitt des Schemas der Datenbank ist im Anschluss beschrieben. Ihr könnt den Aufbau der Tabellen auch direkt von der Datenbank erfragen.
Die Daten der Tabellen geben teilweise kein vollständiges Bild der Welt wieder,
sollen aber für unsere Zwecke genügen.
B.1
Auflistung sämtlicher Tabellen
22
The relational schema of the Mondial database
Country: the countries (and similar areas) of the world with some data.
name: the country name
code: the car code
capital: the name of the capital
province: the province where the capital belongs to
area: the total area
population: the population number
Economy: economical information about the countries.
country: the country code
GDP: gross domestic product (in million $)
agriculture: percentage of agriculture of the GDP
service: percentage of services of the GDP
industry: percentage of industry of the GDP
inflation: inflation rate (per annum)
Population: information about the population of the countries.
country: the country code
population growth: population growth rate (per annum)
infant mortality: infant mortality (per thousand)
Politics: political information about the countries.
country: the country code
independence: date of independence (if independent)
wasdependent: the plotical body where the area was dependent of; usually a country (but not
always).
dependent: the country code where the area belongs to
government: type of government
Language: infomation about the languages spoken in a country
country: the country code
name: name of the languange
percentage: percentage of the language in this country
Religion: information about the religions in a country
country: the country code
name: name of the religion
percentage: percentage of the language in this country
EthnicGroup: information about the ethnic groups in a country
country: the country code
name: name of the religion
percentage: percentage of the language in this country
borders: informations about neighboring countries. Note that in this relation, for every pair of
neighboring countries (A,B), only one tuple is given – thus, the relation is not symmetric.
country1: a country code
country2: a country code
length: length of the border between country1 and country2
Continent: Information about continents.
name: name of the continent
area: total area of the continent
encompasses: information to which continents a country belongs.
country: the country code
continent: the continent name
percentage: percentage, how much of the area of a country belongs to the continent
City: information about cities.
name: the name of the city
country: the country code where it belongs to
province: the name of the province where it belongs to
population: population of the city
elevation: the elevation (above sea level) of the city
longitude: geographic longitude
latitude: geographic latitude
Province: information about administrative divisions.
name: the name of the administrative division
country: the country code where it belongs to
area: the total area of the province
population: the population of the province
capital: the name of the capital
capprov: the name of the province where the capital belongs to
note that capprov is not necessarily equal to name. E.g., the municipality of Bogota (Columbia)
is a province of its own, and Bogota is the capital of the surrounding province Cudinamarca.
Organization: information about political and economical organizations.
name: the full name of the organization
abbreviation: its abbreviation
city: the city where the headquarter is located
country: the country code where the headquarter is located
province: the province where the headquarter is located
established: date of establishment
isMember: memberships in political and economical organizations.
organization: the abbreviation of the organization
country: the code of the member country
type: the type of membership
Lake: information about lakes.
name: the name of the lake
area: the total area of the lake
depth: the depth of the lake
elevation: the elevation (above sea level) of the lake
river: the river that flows out of the lake (may be null)
type: the type of the lake, e.g., salt, caldera, ...
coordinates: its geographical coordinates as (longitude, latitude)
Sea: information about seas.
name: the name of the sea
depth: the maximal depth of the sea
River: information about rivers.
name: the name of the river
length: the length of the river
river: the river where it finally flows to
lake: the lake where it finally flows to
2
sea: the sea where it finally flows to;
(note that at most one out of {river,lake,sea} can be non-null)
source: the coordinates of its source
sourceElevation: the elevation (above sea level) of its source
mountains: the montains where its source is located
estuary: the coordinates of its estuary
RiverThrough: information about rivers flowing through lakes.
river: the name of the river
lake: the lake where it flows through
Mountain: information about mountains
name: the name of the mountain
mountains: the montains where the it belongs to
elevation: the maximal elevation of the summit of the mountain
type: the type of the mountain, e.g. volcanic, (active) volcano, ...
coordinates: its geographical coordinates as (longitude, latitude)
Island: information about islands
name: the name of the island
islands: the group of islands where it belongs to
area: the area of the island
elevation: the maximal elevation of the island
type: the type of the island, e.g. volcanic, coral, atoll, ...
coordinates: its geographical coordinates as (longitude, latitude)
Desert: information about deserts.
name: the name of the desert
area: the total area of the desert
coordinates: its geographical coordinates as (longitude, latitude)
geo Mountain: geographical information about mountains
mountain: the name of the mountain
country: the country code where it is located
province: the province of this country
Note that for a country there can be several provinces where the mountain is located in.
analogous for geo island, geo desert, geo river, geo lake, geo sea. Analogously, there are also
geo source and geo estuary.
mergesWith: information about neighboring seas. Note that in this relation, for every pair of
neighboring seas (A,B), only one tuple is given – thus, the relation is not symmetric.
sea1: a sea
sea2: a sea
located: information about cities located at rivers, lakes, and seas.
city: the name of the city
country: the country code where the city belongs to
province: the province where the city belongs to
river: the river where it is located at
lake: the lake where it is located at
sea: the sea where it is located at
Note that for a given city, there can be several lakes/seas/rivers where it is located at.
locatedOn: information about cities located in islands.
city: the name of the city
3
country: the country code where the city belongs to
province: the province where the city belongs to
island: the island it is (maybe only partially) located on
Note that for a given city, there can be several islands where it is located on.
islandIn: information the waters where the islands are located in.
island: the name of the island
sea: the sea where the island is located in
lake: the sea where the island is located in
river: the sea where the island is located in
Note that an island can have coasts to several seas.
MountainOnIsland: information which mountains are located in islands.
mountain: the name of the mountain
island: the name of the island
Incrementally extended version: Mondial-II, 2012
4
B.2
Relationales Schema der Datenbank
27
name
Language
name
Ethnic Grp
name
headq
capital
establ.
name
gdp.agr
gdp.serv
of
name
pop.
borders
length
name
City
pop.
in
in
in
in
in
in
on
at
at
coordinates
in
elevation
capital
Province
area
at
type
name
area
type
Lake
out
River
name
Sea
coordinates
Source
mountains
coordinates
Estuary
coordinates
merges
elevation
to
has
to
has
to
coordinates
elevation
islands
island in
island in
island in
Island
↑on
coordinates
in
Mondial-II, 2012
elevation
mountains
Mountain
Desert
area
coordinates
name
type
area
name
depth
length
name
depth
elevation
name
ER-Diagram of the Mondial Database
abbrev
is member
pop
code
Country
infl.
dependent
territory
territory
gdp.ind
gdp
type
Organization
name
area
from
coordinates:
coordinates
latitude
longitude
wasdependent
from
governm.
indep.date
pop.grw
inf.mort
percent
speak
percent
belong
believe
percent
encompasses
Religion
percent
name
Continent
area
in
B.3
Darstellung von Verknüpfungen zwischen einzelnen
Tabellen
29
Referential Dependencies of the Mondial
Database
Organization
name
✄ abbreviation
city
✄
country
✄
province
✄
established
City
✄ name
✄ country
✄ province
population
elevation
longitude
latitude
isMember
✁ organization
✁ country
type
Country
name
✄ code
capital
province
area
population
Province
name
✁ country
✁
area
population
✁ capital
✁ capprov
✄
✄
✄
Continent
name
area
borders
✁ country1
✁ country2
length
Population
✁ country
population growth
infant mortality
Politics
✁ country
✁ dependent
independence
✁ wasdependent
government
•
✁ City
Language
✁ country
name
percentage
Religion
✁ country
name
percentage
✁ City
EthnicGroup
✁ country
name
percentage
•
geo river
river
✁ country
✁ province
✁
✁
•
geo source
river
✁ country
✁ province
geo estuary
river
✁ country
✁ province
Lake
✄ name
area
depth
elevation
✁ river
type
coordinates
✄
✄
•
•
•
✄
•
•
✄
•
✁
encompasses
continent
✄
✁ country
percentage
✁ Country.code
Economy
✁ country
GDP
agriculture
service
industry
inflation
✄
✄
geo lake
lake
✁ country
✁ province
geo sea
sea
✁ country
✁ province
located
✁ city
✁ country
✁ province
river
lake
sea
geo island
island
✁ country
✁ province
locatedOn
✁ city
✁ country
✁ province
island
•
•
mergesWith
✁ sea1
✁ sea2
•
islandIn
✁ island
✁ sea
Island
✄ name
islands
area
elevation
type
coordinates
✄
✄
River
✄ name
✁ river
✁ lake
✁ sea
length
source
mountains
elevation
estuary
Sea
✄ name
depth
✄
✄
✄
✄
riverThrough
✁ river
✁ lake
•
mountainOnIsl.
✁ island
✁ mountain
geo mountain
mountain
✄
✁ country
✁ province
Mountain
✄ name
mountains
elevation
type
coordinates
geo desert
desert
✁ country
✁ province
Desert
✄ name
area
coordinates
Transitive dependencies are omitted.
Incrementally extended version: Mondial-II, 2012
✄

Documentos relacionados