Musterlösung

Lösung Übung ERD / Normalisierung
Dr. Christian Senger
DB & IS II, SS 2015
21.03.2015
0) Das Couchsurfingprojekt (nur für Deutschland) soll endlich implementiert werden. Sie
haben den Auftrag die Datenbank zu erstellen, dass mindestens die folgenden Entitäten zur
Verfügung stellen soll.
E1:
Registrierter Nutzer:
Registrierungs-Nummer, Name, Adresse, Telefonnummer
E2:
Schlafplatz:
Nummer, Adresse, Telefonnummer, Anbieter, GPSKoordinaten, Straßenbahn-/Bushaltestelle, Straßenbahn-/Buslinien
(Hinweis GPS-Koordinaten: Google-MapsRechtsklick  „Was ist hier“: Breitengrad, Längengrad)
E3:
Sehenswürdigkeit:
Nummer, Bezeichnung, Adresse, GPS-Koordinaten, Straßenbahn-/Bushaltestelle, Straßenbahn-/Buslinien.
Den Benutzern sollen folgende Listen zur Verfügung gestellt werden:
L1:
Liste der Belegungen der Schlafplätze (Adresse, Anbietername, Datum, Schlafplatznutzer)
L2:
Schlafplatz und Attraktionen im Ort (Schlafplatz, Sehenswürdigkeit, Entfernung)
L3:
Sehenswürdigkeiten und Eintrittspreise (Sehenswürdigkeit, Eintrittspreis, Rabatt in Prozent Kinder u.
Studenten, Rabatt in Prozent Gruppe)
L4:
Liste aller Straßenbahn/Bushaltestellen (Nummer, Name, Adresse, GPS-Koordinaten, Linien)
L5:
Liste aller Straßenbahn-/Buslinien und Haltestellen
(Linie, Haltestellen)
L6:
Liste von Wegen vom Schlafplatz zur Attraktion
(Schlafplatz, Haltestelle, Linien, Haltestelle, Sehenswürdigkeit) – Es könnte notwendig sein, Umzusteigen, Reihenfolge beachten!
Entwerfe ein relationales Schema der Datenbank, indem Sie folgende Arbeitsschritte durchführen:
1) Entwerfe ein grobes Entity-Relationship-Diagramm (ERD) mit Attributen und Primärschlüsseln zu Deiner eigenen Übersicht. (<min, max>-Notation, s. Anhang)
2) Überprüfe die gegebenen Attribute, zerlege diese oder führe neue ein wo es notwendig und
sinnvoll ist, z.B.
Registrierter Nutzer: Name  Vorname, Nachname
3) Beschreibe die Anforderungen in Form von Relationen, z.B.
bahnbus_linie(linien_nr, eröffnungsdatum) und generalisiere, wo es evtl.
vereinfachend ist.
4) Bestimme und überprüfe Primärschlüssel.
5) Überführe das Schema in die DNF. Zeichne ein ERD (<min, max>-Notation ) von Deinem
Ergebnis (Wenn wegen der Übersichtlichkeit nötig, zeichne mehrere kleinere). Gib zu jeder
Entität und auch bei Relationen, die als n:m-Beziehung dargestellt sind Attribute und Primärschlüssel an.
strasse
nachname
hausnummer
plz
vorname
telefonnr
nummer
Nutzer
<0,1>
schlafplatz_nu
mmer
<0,n>
<1,1>
nutzer_numm
er
bietet an
belegt
wohnt in
datum
nummer
<0,n>
strasse
<0,1>
name
<0,n>
ist in der
Nähe
von
breitengrad
Schlafplatz
haltestelle_nu
mmer
schlafplatz_nu
mmer
laengengrad
Ort
anbieter_nr
(nutzer_nr)
<0,n>
<0,n>
<0,n>
name
plz
nummer
<0,n>
breitengrad
plz
Haltestelle
laengengrad
schlafplatz_nu
mmer
steht in
ist in der
Nähe
von
sehenswürdig
keit_nummer
<1,n>
<0,n>
haltestelle_nu
mmer
entfernung
wird
angefahr
en von
haltestelle_nu
mmer
linie_nummer
sehenswürdig
keit_nummer
<0,1>
<0,n>
nummer
ist in der
Nähe
von
<2,n>
<0,n>
breitengrad
Linie
Sehenswürdig
keit
rabatt_kinder
laengengrad
rabatt_gruppe
name
eintrittspreis
strasse
plz
hausnummer
strasse
name
name
plz
nummer
breitengrad
Ort
Haltestelle
<0,n>
<1,1>
plz
steht in
laengengrad
nummer
strasse
name
plz
nummer
breitengrad
Haltestelle
laengengrad
<0,n>
<0,n>
ist halte
stelle 1
von
ist halte
stelle 2
von
sehenswürdig
keit_nr
<1,1>
schlafplatz_nr
<1,1>
nummer
haltestelle1
_nr
Weg
breitengrad
<1,1>
Schlafplatz
ist am
weg
<0,n>
haltestelle2
_nr
laengengrad
<1,1>
anbieter_nr
(nutzer_nr)
<1,1>
linie_nr
strecken_
abschnitt
ist am
weg
<0,n>
nummer
Sehenswürdig
keit
transport
iert auf
weg
<0,n>
breitengrad
Linie
laengengrad
rabatt_kinder
nummer
name
rabatt_gruppe
strasse
eintrittspreis
plz
hausnummer