Informatik/Jahrgangsstufe Q/001 Klausuren

Werbung
Aufgabe 3:
Datenbanken – Entity-Relationship-Modell
a) Geben sie die Komplexität der folgenden Situationen an. Erstellen Sie jeweils ein ERDiagramm. Formulieren Sie sinnvolle Geschäftsregeln.
1.
Eine Ladenkette möchte Informationen über ihre Filialen und über deren Zulieferer
speichern. Jeder Zulieferer beliefert mehrere Filialen, und jede Filiale kauft von
mehreren Zulieferern.
2.
Ein Installateur möchte über seine Handwerker und über die Häuser, in denen sie
gerade arbeiten, Informationen speichern.
b) Die Computerzubehörfirma Microtec GmbH möchte ihre Verwaltung auf EDV umstellen.
Sie verkauft ein Sortiment von Artikeln, die sie von verschiedenen Herstellern bezieht.
Außerdem hat sie einen bestimmten Kundenkreis, der bei ihr Bestellungen aufgibt. Eine
Bestellung kann natürlich mehrere Artikel umfassen. Derselbe Artikel kann oft von
mehreren Herstellern bezogen werden, und ein Hersteller liefert natürlich meist mehr als
einen Artikel.
Erstellen Sie im Entity-Relationship-Modell ein sinnvolles Datenmodell für die Firma, das
Datenredundanz vermeidet. Wählen Sie geeignete Entities mit notwendigen Attributen und
geben Sie die zwischen den Entities bestehenden Beziehungen mit ihrem Komplexitätsgrad
an.
c) Eine Fluggesellschaft will ein Informationssystem aufbauen, um diese Informationen zu
speichern:
1. die Piloten, identifiziert durch die Personal-Nr mit Name und Alter,
2. die verwendeten Flugzeugtypen mit eindeutiger Typ-Bezeichnung und Sitzanzahl,
3. die Information, welcher Pilot welchen Flugzeugtyp fliegt,
4. die Flugstunden, die ein Pilot insgesamt geflogen ist,
5. die Flugstunden die er auf einem bestimmten Flugzeugtyp geflogen ist und
6. die Flugstunden, die mit einem Flugzeugtyp insgesamt geflogen wurden.
I)
Zeichnen Sie das entsprechende ER-Diagramm, unterstreichen Sie dabei die
Schlüsselattribute.
II)
Überführen Sie das Modell in das relationale Modell.
Lösung:
Aufgabe 3:
a.I)
Zulieferer
n
beliefert
cn
Filialen
Ein Zulieferer kann in der Datenbank vorhanden sein, obwohl er keine Filiale beliefert, Eine
Filiale dagegen hat mindestens einen Zulieferer.
a.II)
Handwerker
n
arbeitet
an
m
Häuser
Ein Handwerker arbeitet mindestens an einem Haus. In einem Haus arbeiten mindestens ein
Handwerker.
b)
Name
HerstNr
Anschrift
Hersteller
Bezeichnung
ArtNr
n
liefert
m
Preis
Artikel
n
gehört
zu
KundNr
Kunde
1
gibt
auf
n
Anzahl
cm
Bestellung
RechnNr
Name
Anschrift
Datum
c.I)
Name
PersNr
Alter
Pilot
Stunden
n
c.II)
Pilot(PersNr, Name, Alter, Stunden)
fliegt(PersNr, TypBez, Stunden)
Flugzeugtyp(TypBez, Stunden, Sitze)
Stunden
fliegt
TypBez
m
FlugzTyp
Sitze
Stunden
Aufgabe 4:
Datenbanken – Relationales Modell
a) Gegeben seien drei Relationen mit den folgenden Daten:
Besucht
Serviert
Mag
Gast Bistro
Bistro Getränk
Gast
Hans Uno
Uno
Wasser
Hans
Ede
Uno
Uno
Kaffee
Ede
Ede
Dos
Dos
Kaffee
Ede
Ede
Chico
Karl
Karl Dos
Karl Chico
Heini Uno
Getränk
Wasser
Wasser
Kaffee
Kaffee
I)
Bilden Sie Serviert × Mag.
II) Bilden Sie Serviert
Mag. Welche Informationen beinhaltet diese Relation?
III) Geben Sie alle Bistros aus, die Getränke servieren, die Karl mag. Geben Sie auch die
entsprechende Operation der Relationenalgebra an.
IV) Geben Sie alle Gäste aus, die ein Bistro besuchen, das auch das Getränk serviert,
das sie mögen. Formulieren Sie die Anfrage mit Operationen der Relationenalgebra.
b) Gegeben seien folgende Relationen:
Lieferanten (LieferantenNr, Name, Status, Stadt)
Teile (TeileNr, Name, Farbe, Gewicht, Stadt)
Projekte (ProjektNr, Name, Stadt)
Lieferungen (LieferantenNr, TeileNr, ProjektNr, Anzahl)
Hierbei bedeutet Stadt einmal die Stadt, in der ein Lieferant sitzt, die Stadt, in der das
entsprechende Teil hergestellt wird, bzw. die Stadt, in der ein Projekt stattfindet. Lösen Sie
die folgenden Aufgaben durch Operationen aus der Relationenalgebra:
I)
Finden Sie alle Lieferungen mit Anzahlen zwischen 300 und 750 und geben Sie alle
dazu in der Relation Lieferungen verzeichneten Informationen aus.
II) Geben Sie alle Städte aus, in denen Lieferanten sitzen.
III) Finden Sie alle schwarzen Teile. Geben Sie ihre Nummer und ihren Namen aus.
IV) Finden Sie alle Lieferanten, die in einer Einzellieferung mehr als 150 Teile geliefert
haben. Geben Sie ihren Namen aus.
V) Finden Sie alle Städte, in denen sowohl Projekte als auch Lieferanten beheimatet sind.
c) Bilden Sie das folgende ER-Diagramm in das relationale Modell ab. Optimieren Sie die
Relationenanzahl
Lehrstuhlbezeichnun
g
PName
Telefon
Anschrift
1
Professor
akad.
Grad
AName
hat
cn
1
Telefon
Assistent
1
betreut
hält
ÜbungsNr
Zeit
Vorl-Nr
cn
1
Vorlesung
hat
cn
cn
Übungsgruppe
1
Zeit
Ort
MatrikelNr
Stundenzahl
korrigiert
IS
A
1
Student
c
Ort
Stundenzahl
1
Hiwi
Vertrag
Name
Anschrift
Fach
d) Sie importieren Daten aus einer Excel-Tabelle und erhalten die folgende Struktur.
Normalisieren Sie die Daten von der 1. bis zur 3. Normalform. Dokumentieren Sie dabei
ausführlich Ihre Schritte mit der entsprechenden Begründung (Definition der
Normalformen und ihre Folgerungen).
PersNr Name
Abteilung
513
134
599
Einkauf
Verkauf
Personal
Lorenz, Christian
Baumann, Peter
Petersen, Anna
AbteilungsNr
13
21
7
Lösung:
Aufgabe 4:
a.I)
Bistro
Uno
Uno
Uno
Uno
Uno
Uno
Getränk
Wasser
Wasser
Wasser
Wasser
Kaffee
Kaffee
Gast
Hans
Ede
Ede
Karl
Hans
Ede
Getränk
Wasser
Wasser
Kaffee
Kaffee
Wasser
Wasser
Abteilungsort
Stunden
51519 Odentahl
51467 Berg. Gl.
51515 Kürten
198, 201
120, 189, 43
120
Uno
Uno
Dos
Dos
Dos
Dos
Kaffee
Kaffee
Kaffee
Kaffee
Kaffee
Kaffee
Ede
Karl
Hans
Ede
Ede
Karl
Kaffee
Kaffee
Wasser
Wasser
Kaffee
Kaffee
a.II)
Bistro
Getränk Gast
Uno
Wasser
Hans
Uno
Wasser
Ede
Uno
Kaffee
Ede
Uno
Kaffee
Karl
Dos
Kaffee
Ede
Dos
Kaffee
Karl
Die Tabelle enthält die Information darüber, in welchem Bistro welche Personen ihr
Lieblingsgetränk erhalten könnte.
a.III) πBistro (σGast = Karl (Serviert
Bistro
Uno
Dos
a.IV) πGast (Besucht
Mag)
(πBistro, Gast (Serviert
Mag)
Gast
Hans
Ede
Karl
b.I)
b.II)
σAnzahl ≥ 300 und Anzahl ≤ 750 (Lieferungen)
πStadt (Lieferanten)
b.IV)
πTeileNr, Name (σFarbe = schwarz (Teile))
πName ((πLieferantenNr (σAnzahl > 150 (Lieferungen)))
b.V)
πStadt (Lieferanten
b.III)
Lieferanten)
Projekte)
c)
Professor(PName, Lehrstuhlbez., Telefon, Anschrift)
Assistent(AName, akad. Grad, Telefon, PName)
Vorlesung(Vorl.Nr, Zeit, Ort, Std.zahl, PName)
Übungsgruppe(Übungs-Nr, Zeit, Ort, Std.zahl, AName, Vorl.Nr, Vertrag, MatrikelNr)
Student(MatrikelNr, Name, Adresse, Fach)
d)
1. Normalform: eindt. Schlüssel und atomare Werte
Hier: Name -> Vorname, Nachname
Stunden auslagern in extra Tabelle, da Mehrfachattribut
Stunden(PersNr,AbteilungsNr, StundenID, Stunden)
Personal(PersNr, AbteilungsNr, Vorname, Nachname, Abteilung, AbteilungsPLZ, Abteilungsort)
2. Normalform: Attribute nur Abhängig vom gesamten Primärschlüssel.
Hier: Abteilung (mit PLZ und Ort) nur von AbteilungsNr abhängig. => auslagern. Diese Lösung lässt
auch zu, dass Personal in mehreren Abteilungen gleichzeitig eingesetzt werden kann.
Stunden(PersNr,AbteilungsNr, StundenID, Stunden)
Personal(PersNr, Vorname, Nachname)
Personal_istIn_Abteilung(PersNr, AbteilungsNr)
Abteilungen(AbteilungsNr, Abteilung, AbteilungsPLZ, Abteilungsort)
3. Normalform: keine transitiven Abhängigkeiten.
Hier: Ort hängt von PLZ ab. => auslagern in PLZ-Ort-Tabelle
Stunden(PersNr,AbteilungsNr, StundenID, Stunden)
Personal(PersNr, Vorname, Nachname)
Personal_istIn_Abteilungs(PersNr, AbteilungsNr)
Abteilungen(AbteilungsNr, Abteilung, AbteilungsPLZ)
Orte(PLZ, Ort)
Aufgabe 2:
Datenbanken
a) Frau Emma möchte ihren Tante-Emma-Laden ab jetzt mit einer Datenbank verwalten.
Für jeden Artikel will Frau Emma die Bezeichnung, den Bestand, den Einkaufspreis und
den Verkaufspreis speichern.
Die Artikel gehören sogenannten Warengruppen (Lebensmittel, Zeitschriften, etc.) an.
Diese haben eine eindeutige Bezeichnung und einen Mehrwertsteuersatz.
Neben den Artikeln und Warengruppen will Frau Emma auch ihre Verkaufsfläche auf
EDV umstellen. In ihrem Laden gibt es verschiedene Standorte, welche durch die
Kombination aus Regal-Nummer und Platz-Nummer eindeutig festgelegt sind. Es Gibt
Standorte, welche noch leer sind, andernfalls ist im Standort vermerkt, welcher Artikel sich
dort befindet. Da bestimmte Artikel nur in Regalen eines bestimmten Materials gelagert
werden können, soll für jeden Standort zusätzlich das Material des Regals gespeichert
werden. Die Relation Standorte könnte damit wie folgt aussehen:
Standorte RegalNr PlatzNr ArtikelNr Material
11
15
17
Holz
11
16
NULL
Holz
11
17
39
Holz
12
5
NULL
Eisen
12
15
25
Eisen
I)
Erstellen Sie ein Entity-Relationship-Diagramm für dieses Problem (Bitte nur die
oben angegebenen Attribute einfügen). Begründen Sie alle angegebenen
Kardinalitäten.
II)
Überführen Sie das Diagramm in das relationale Modell. Optimieren Sie falls
möglich die Anzahl der Relationen.
III) Begründen Sie entweder, dass Ihr relationales Modell bereits der 1. Normalform
entspricht. Oder überführen Sie Ihre Datenbank in die 1. Normalform.
IV) Begründen Sie, dass Ihre Datenbank noch nicht den Anforderungen der 2.
Normalform entspricht. Überführen Sie Ihre Datenbank anschließend in die 2.
Normalform.
V)
Formulieren Sie bezugnehmend auf Ihre Datenbank SQL-Abfragen für die folgenden
Informationen:
1. Welche Artikel-Bezeichnung der Warengruppe "Schreibwaren" gibt es im TanteEmma-Laden?
2. In welchen Regalen ist noch Platz? Die Regalnummern sollen aufsteigend sortiert
sein.
3. Zu allen Standorten soll die Bezeichnung des Artikel ausgegeben werden, der dort
liegt. Leere Standorte sollen ebenfalls mit ausgegeben werden.
4. Wie viele Artikel haben einen Mehrwertsteuersatz von 19%?. Nur die Anzahl ist
gefragt.
b) Im Datenbank-System einer Schule sind folgende Tabellen implementiert:
Schueler Nummer Name
Vorname Geburtsdatum Lerngruppe
123
Müller
Martin
11.2.1992
9A
178
Schmitz Antonia
19.6.1989
12
Lerngruppen Klasse
9A
12
10C
Klassenlehrer
MEY
KSL
TAN
Faecher Abkuerzung Langname
M
Mathe
D
Deutsch
Kurse Bezeichnung
M-LK-12
D-9-A
F-GK-13
Lehrer Kuerzel
MEY
OP
TAN
Schueler SchuelerNr Kursbezeichnung
D-9-A
besucht 123
E-9-A
Kurs 123
123
M-9-A
178
M-LK-12
456
D-9-A
Stufe
12
9
13
Fach
M
D
F
Lehrer
MEY
OP
TAN
Langname
Meyer
Opermann
Tarnert-Nauber
Lehrer Lehrer Fach
D
unterrichtet OP
E
Fach OP
MEY M
MEY E
I)
Geben Sie zu allen Tabellen den Primärschlüssel an.
II)
Begründen Sie kurz, dass die Datenbank der 3. Normalform entspricht.
III) Zeichnen Sie ein Entity-Relationship-Diagramm ohne Attribute. Achten Sie darauf,
dass Sie alle Beziehungen zeichnen, die in den Relationen versteckt sind.
Geben Sie auch die Komplexitäten an.
IV) Welche Information erhält man durch folgende SQL-Abfragen?
1. select max(Schueler.Geburtsdatum)
from Schueler
2. select Lehrer.Langname, Lehrer_unterrichtet_Fach.Fach
from Lehrer left join Lehrer_unterrichtet_Fach on
Lehrer.Kuerzel = Lehrer_unterrichtet_Fach.Lehrer
order by Lehrer.Kuerzel
3. select Kurse.Fach
from (Schueler inner join Schueler_besucht_Kurs on
Schueler.Nummer = Schueler_besucht_Kurs.SchuelerNr)
inner join Kurse on
Schueler_besucht_Kurs.Kursbezeichnung= Kurse.Bezeichnung
where Schueler.Lerngruppe = "9A"
V)
Geben Sie SQL-Abfragen an, mit denen folgende Informationen gesucht werden:
1. Alle Fächer-Langnamen, die von dem Lehrer MEY unterrichtet werden.
2. Alle Geburtsdaten der Schüler der Stufe 9, absteigend sortiert.
3. Alle Schüler, deren Klassenlehrer Mathematik unterrichten kann.
Lösung:
Aufgabe 2:
a) I)
Besatand
Bezeichnung
EK
VK
Artikel
Bezeichnung
n
gehört
zu
c
1
liegt
in
RegalNr
II)
1
Mehrwertsteuer
Warengruppe
Standorte
PlatzNr
Material
Die Relationen sind:
Artikel(Bezeichnung, Bestand, EK, VK, Warengruppe, ArtikelNr)
Warengruppe(Bezeichnung, Mehrwertsteuersatz)
Standorte(RegalNr, PlatzNr, Material, ArtikelNr)
III) Die Relationen entsprechen noch nicht der 1. Normalform, da nicht alle Relationen
eine Primärschlüssel haben.
Artikel(ArtikelNr, Bezeichnung, Bestand, EK, VK, Warengruppe)
Warengruppe(Bezeichnung, Mehrwertsteuersatz)
Standorte(RegalNr, PlatzNr, Material, ArtikelNr)
IV) Die Relation Standorte entspricht nicht der 2. Normalform, da das Material nur von
RegalNr abhängig ist, d. h. nur von Teilen des Primärschlüssels
Artikel(ArtikelNr, Bezeichnung, Bestand, EK, VK, Warengruppe)
Warengruppe(Bezeichnung, Mehrwertsteuersatz)
Regale(RegalNr, Material)
Standorte(RegalNr, PlatzNr, ArtikelNr)
V)
b) I)
1. select Artikel.Bezeichnung
from Artikel
where Artikel.Warengruppe = "Schreibwaren"
2. select Standorte.RegalNr
from Standorte
where ArtikelNr is NULL
order by Artikel.RegalNr ASC
3. select Standorte.RegalNr, Standorte.PlatzNr, Artikel.Bezeichnung
from Standorte left join Artikel ON Standorte.ArtikelNr =
Artikel.ArtikelNr
4. select count(Artikel.Bezeichnung)
from Artikel inner join Warengruppe on Artikel.Warengruppe =
Warengruppe.Bezeichnung
where Warengruppe.Mehrwertsteuersatz = 0.19
Schüler(Nummer)
Lerngruppen(Klasse)
Kurse(Bezeichnung)
Faecher(Abkuerzung)
Lehrer(Kuerzel)
SchuelerBesuchtKurs(SchuelerNr, Kursbezeichnung)
LehrerUnterrichtetFach(Lehrer, Fach)
II)
Alle Attribute sind atomar und jede Relation hat einen Primärschlüssel => 1. NF
Alle Attribute sind vom vollständigen Primärschlüssel abhängig => 2. NF
Kein Attribut ist transitiv abhängig vom Primäschlüssel. => 3. NF
III)
Quelle: http://www.r-krell.de/k1if13m-07a.pdf
Ein Schüler gehört zu 1 Klasse, eine Klasse hat n Schüler
Ein Schüler besucht n Kurse, eine Kurs hat n Schüler
Ein Lehrer unterrichtet n Kurse, ein Kurs wird von 1 Lehrer unterrichtet
Ein Lehrer darf n Fächer unterrichten, Ein Fach wird von n Lehrern unterrichtet.
Ein Lehrer ist Klassenlehrer von 1 Klasse, Eine Klasse hat 1 Klassenlehrer
Ein Kurs gehört zu 1 Fach, ein Fach hat n Kurse.
IV) 1. Das größte Geburtsdatum aller Schüler.
2. Alle Lehrernamen mit den Fächern die sie unterrichten, sortiert nach Lehrer-Kürzel
3. Alle Fächer, die von der Klasse 9a belegt werden.
V)
1.
SELECT Faecher.Langname
FROM Faecher INNER JOIN Lehrer_unterrichtet_Fach ON
Faecher.Abkuerzung = Lehrer_unterrichtet_Fach.Fach
WHERE Lehrer_unterrichtet_Fach.Lehrer="MEY"
2.
SELECT Schueler.Geburtsdatum
FROM Schueler INNER JOIN
(Schueler_besucht_Kurs INNER JOIN Kurse ON
Schueler_besucht_Kurs.Kursbezeichnung = Kurse.Bezeichnung) ON
Schueler.Nummer = Schueler_besucht_Kurs.SchuelerNr
WHERE Kurse.Stufe="9"
ORDER BY Schueler.Geburtsdatum DESC
3.
SELECT Schueler.Name
FROM (Schueler INNER JOIN Lerngruppen ON
Schueler.Lerngruppe = Lerngruppen.Klasse) INNER JOIN
Lehrer_unterrichtet_Fach ON
Lerngruppen.Klassenlehrer = Lehrer_unterrichtet_Fach.Lehrer
WHERE Lehrer_unterrichtet_Fach.Fach = "M"
Aufgabe 1:
Datenbanken
a) Gegeben ist folgender Ausschnitt einer Fußball-Datenbank:
Fußballspieler können bei höchstens einem Verein gemeldet sein. Sie werden über ihre
Passnummer identifiziert und besitzen einen Namen. Die Vereine sind durch ihren
Namen und die Vereinsnummer gekennzeichnet. Zusätzlich wird registriert, in welchen
Ligen die Vereine vertreten sind. Die Namen der Ligen sind eindeutig in Kombination
mit der Altersklasse (es gibt mehrere Altersklassen). Jeder Verein ist mindestens in
einer dieser Ligen vertreten. Zudem wird das Datum erfasst, zu dem der Verein in die
jeweilige Liga aufgestiegen ist.
Modellieren Sie diesen Ausschnitt der Fußball-Datenbank im Entity-Relationship-Modell.
Verwenden Sie die grafische Notation des ER-Diagramm für Ihre Darstellung.
Markieren Sie die Primärschlüssel und geben Sie die Kardinalitäten der Beziehungen an.
b) Gegeben ist folgendes E-R-Modell einer Hotelketten-Verwaltung:
Sterne
Hotel
Adresse
Stadt
Kapazität
Land
Hotel-ID
1
Pers-ID
arbeitet
in
n
Name
Zimmer-ID
1
1
1
hat
IS A
IS A
c
c
n
Kategorie
Gehalt
Angestellter
Zimmer
n
Möbel
Preis
verantwortlich
m
Reinigungskraft
Arbeitsverhältnis
Manager
email
Telefon
Überführen Sie dieses E-R-Diagramm in das relationale Modell. Achten Sie dabei auf eine
optimierte Relationenanzahl.
c) Gegeben seien drei Relationen mit den folgenden Daten:
Unterrichtet
Fach Lehrer
M
ULO
E
RE
E
PL
D
PL
M
NOP
M
PL
Lehrbefähigung
Lehrer Stufe
ULO
SekI
RE
SekII
RE
SekI
PL
SekII
Verteilung
Fach
Stufe
M
SekI
M
SekII
D
SekI
E
SekII
D
RE
Bilden Sie die Selektion σLehrer = RE(Lehrbefähigung).
Lehrbefähigung. Geben Sie in eigenen Worten
Bilden Sie den Join Unterrichtet
an, welche Informationen diese Relation beinhaltet.
III) Geben Sie alle Fächer aus, die in Stufen unterrichtet werden, die der Lehrer PL
unterrichten darf. Geben Sie auch die entsprechende Operation der
Relationenalgebra an.
IV) Geben Sie alle Lehrer aus, die Fächer in der SekI unterrichten dürfen, die auch (evtl.
von anderen Lehrern) in der SekII unterrichtet werden. Formulieren Sie die Anfrage
mit Operationen der Relationenalgebra.
I)
II)
d) Im folgenden ist das Relationenmodell einer Schlüsselverwaltung angegeben:
Raum( Raum-ID, Raumbezeichnung )
Tür( Tür-ID, RaumVor, RaumHinter, Schloss-ID )
Schloss( Schloss-ID, Seriennummer )
schließt( Schloss-ID, Schlüssel-ID )
Schlüssel( Schlüssel-ID, Nummer )
Person( Person-ID, Vorname, Name )
Ausleihe( Ausleihe-ID, Person-ID, Schlüssel-ID, AusgabeDatum, RückgabeDatum )
I) Entwickeln Sie aus dem Relationenmodell ein E-R-Diagramm mit Angabe von
Attributen, Primärschlüsseln und Kardinalitäten.
II) Geben Sie unter Verwendung der Relationenalgebra die Operationen für folgende
Abfragen an:
(1) Welche Schlüssel (Nummer) müssen Weihnachten zurückgegeben werden?
(2) Welche Personen (Vorname, Name) haben irgendwann Schlüssel ausgeliehen
und schon wieder zurückgebracht?
(3) Welche Türen (Tür-ID) kann Gustav Gazelle aufschließen?
Lösung:
Aufgabe 1:
a)
Name
Passnr.
Vereinsnr
Spieler
n
gemeldet
in
1
Name
Verein
n
spielt
in
Aufst.Dat.
m
Liga
Name
Klasse
b) Hotel(Hotel-ID, Kapazität, Sterne, Stadt, Land)
Angestellter(Pers-ID, Name, Gehalt, Hotel-ID)
Zimmer(Zimmer-ID,Kategorie, Preis, Hotel-ID)
Möbel(Möbel-ID, Zimmer-ID, Bezeichnung)
Reinigungskraft(Pers-ID, Arbeitsverhältnis)
verantwortlich(Zimmer-ID, Pers-ID)
Manager(Pers-ID, email, Telefon)
c)
I) σLehrer = RE(Lehrbefähigung)
Lehrer Stufe
RE
SekII
RE
SekI
II) Unterrichtet
Lehrbefähigung
Fach Lehrer Stufe
M
ULO
SekI
E
RE
SekII
E
RE
SekI
E
PL
SekII
D
PL
SekII
M
PL
SekII
D
RE
SekII
D
RE
SekI
Es werden alle Kombinationen Fächer-Stufe ausgegeben, für die ein Lehrer existiert.
III) πFach(σLehrer = PL(Unterrichtet
Fach
E
M
Lehrbefähigung)
IV) πLehrer(σStufe=SekII(Verteilung
Lehrer
ULO
RE
σStufe=SekI(Lehrbefähigung)))))
(πFach, Lehrer(Unterrichtet
d)
Bezeichn.
Tür-ID
hinter
1
Raum
Raum-ID
n
1
vor
Tür
n
1
hat
Nummer
1
Schlüssel
Schl.-ID
n
passt
in
m
Schloss
n
Ausgabe
Sereinnr
ausgeliehen
SchlossID
Rückgabe
1
Person
Person-ID
Vorname
Name
(1) πNummer(σRückgabeDatum="24.12."(Schlüssel
(2) πVorname, Name(σRückgabeDatum<>""(Ausleihe
(3) πTür-ID(Tür
(schließt
(Ausleihe
Ausleihe))
Person))
σName="Gazelle" ∧ Vorname="Gustav"(Person))))
Aufgabe 1:
Datenbanken
Das "Schuhhaus König" möchte seinen Artikelbestand in einer Datenbank speichern. Die
Datenbank soll Angaben zu den einzelnen Herstellern (Name und Anschrift) und Daten der
einzelnen Schuhtypen (Hersteller, Fabrikat, Schuhart) enthalten. Unter Schuhart versteht das
Schuhhaus die Unterscheidung in "Sandale", "Stiefel", "Pantoffel", etc., welche in einer
eigenen Entität modelliert werden sollen.
Zusätzlich möchte das Schuhhaus für jeden Schuhtyp die Anzahl der auf dem Lager
befindlichen Größen und Farben speichern. Für ein Paar Schuhe wird demnach der Schuhtyp,
die Größe, die Farbe und der Lagerort gespeichert.
Die Lagerorte bestehen dabei stets aus einer Gangnummer und einer Regalnummer, welche −
unabhängig davon, ob Schuhe im Lagerort gelagert werden − in einer eigenen Tabelle
gespeichert werden sollen.
a) Modellieren Sie ein geeignetes Entity-Relationship-Modell und stellen Sie dieses als
Entity-Relationship-Diagramm dar. Führen Sie sinnvolle Primärschlüssel ein oder
definieren Sie geeignete Attribute als Primärschlüssel. Geben Sie auch die Kardinalitäten
Ihrer Beziehungen an.
b) Überführen Sie dieses ERM in das relationale Modell. Optimieren Sie die Tabellenanzahl.
Der Hersteller "Salamander" verwaltet seine Kunden und Artikel ebenfalls mithilfe einer
Datenbank. Die Modellierung im relationalen Modell sieht dabei wie folgt aus:
Kunde(Firmenname, Anschrift, Ansprechpartner, bestellterArtikel-ID, bestellteAnzahl)
Artikel(ID, Fabrikatname, Geschlecht, Größe)
Lagerort(HalleGangPlatz, Artikel-ID, Anzahl, Stapler)
Das Attribut HalleGangPlatz könnte z. B. "Halle5, Gang 3, Platz 17b" lauten. Es gibt
Lagerorte, in denen keine Artikel gelagert sind, es kann aber auch sein, dass an einem
Lagerort unterschiedliche Artikel gelagert werden.
Im Attribut Stapler soll lediglich festgehalten werden, ob ein Stapler für diesen Lagerort
benötigt wird, oder nicht.
c) Geben Sie die Datentypen an, welche für die Relation Lagerort bei der Anlage einer
entsprechenden MySQL-Tabelle gewählt werden müssen.
d)
Erläutern Sie, weshalb sich die Datenbank nicht in der 1. Normalform befindet.
Überführen Sie anschließend die Datenbank in die 1. Normalform.
e) Begründen oder widerlegen Sie, dass sich die Datenbank aus c) in der 3. Normalform
befindet. Überführen Sie diese gegebenenfalls in die 3. Normalform.
f) Geben Sie eine SQL-Anfrage an, mit der man herausfinden kann, an welchem Lagerort
die von der Firma "Schuhhaus König" bestellten Schuhe zu finden sind.
g) Geben Sie eine SQL-Anfrage an, die alle Lagerorte und – falls vorhanden – dort gelagerte
Artikel-IDs auflistet.
Erläutern Sie, weshalb der Inner Join hier nicht zum Ziel führt.
Lösung:
Aufgabe 1:
a) ... noch machen ...
b) Hersteller(ID, Name, Straße, PLZ, Ort)
Schuhtyp(ID, Hersteller-ID, Fabrikat, Schuhart-ID)
Schuhart(ID, Art)
Schuh(ID, Schuhtyp-ID, Größe, Farbe, Lagerort-ID)
Lagerort(ID, Gangnummer, Regalnummer)
c) HalleGangPlatz: VARCHAR(30)
Artikel-ID: INTEGER
Anzahl: INTEGER
Stapler: BOOLEAN
d) Die Attribute sind nicht atomar und es gibt keine Primärschlüssel.
Kunde(ID, Firmenname, Straße, PLZ, Ort, Ansprechpartner, bestellterArtikel-ID,
bestellteAnzahl)
Artikel(ID, Fabrikatname, Geschlecht, Größe)
Lagerort(ID, Halle, Gang, Platz, Artikel-ID, Anzahl, Stapler)
e) Die Attribute sind nicht alle vom Primärschlüssel abhängig. Es gibt zudem transitive
Abhänigkeiten (z. B. PLZ-Ort). Diese müssen in eigene Tabelle aufgelöst werden.
Kunde(ID, Firmenname, Straße, PLZ, Ansprechpartner)
Orte(PLZ, Ort)
bestellt(Kunden-ID, Artikel-ID, Anzahl)
Artikel(ID, Fabrikatname, Geschlecht, Größe)
lagert(Artikel-ID, Lagerort-ID, Anzahl)
Lagerort(ID, Halle, Gang, Platz, Stapler)
f) SELECT Lagerort.Halle, Lagerort.Gang, Lagerort.Platz
FROM Lagerort INNER JOIN lagert ON Lagerort.ID = lagert.Lagerort-ID
INNER JOIN Artikel ON lagert.Artikel-ID = Artikel.ID
INNER JOIN bestellt ON Artikel.ID = bestellt.Artikel-ID
INNER JOIN Kunde ON bestellt.Kunden-ID = Kunde.ID
WHERE Kunde.Firmenname = "Schuhhaus König"
g) SELECT Lagerort.Halle, Lagerort.Gang, Lagerort.Platz, Artikel.ID
FROM Lagerort LEFT OUTER JOIN lagert ON Lagerort.ID = lagert.Lagerort-ID
RIGHT JOIN Artikel ON lagert.Artikel-ID = Artikel.ID
Aufgabe 2:
Datenbanken
Sie importieren Daten aus einer Excel-Tabelle und erhalten die folgende Struktur.
GeräteNr Bezeichnung
Raum
Gebäude
Anschaffung
XV12942
CD-Player, Kenwood
517
5
DY96352
Radio, Toshiba
119
1
ZU66351
Fernseher, Panasonic
914
9
12.01.2004,
119 €
17.10.2000,
15,99 €
04.03.2009,
1199 €
Fachschaft
im Raum
GE, SP, E
GE, EK, SW
IF, M, PH
a) Normalisieren Sie die Daten in der 3. Normalform im relationalen Modell. Dokumentieren
Sie dabei ausführlich Ihre Schritte mit der entsprechenden Begründung.
b) Gesucht sind die Anschaffungspreise der Geräte, welche von der Fachschaft Informatik
verwendet werden. Geben Sie auf Grundlage des relationalen Modells aus Aufgabenteil a)
den zugehörigen Ausdruck in der Relationenalgebra an.
c) Formulieren Sie eine äquivalente SQL-Anfrage, welche die Anschaffungspreise
absteigend sortiert ausgibt.
Gegeben ist folgende Datenbank im relationalen Modell:
Person(PersonenNr, Name, Gehalt, Beruf, AbeitlungNr, ManagerNr, Ort)
Abteilung(AbteilungNr, AbteilungName, AbteilungOrt)
Dabei ist Person.ManagerNr Fremdschlüssel auf Person.PersonenNr, d. h. ein Manager ist
auch nur eine Entität des Entitätstyps Person.
Zudem ist Person.AbteilungNr Fremdschlüssel auf Abteilung.AbteilungNr.
d) Formulieren Sie für folgende Informationen Anfragen in SQL:
I)
Liste aller Angestellten aus Abteilung K15, die mehr als 5000 € verdienen.
II) Anzahl der Abteilungen, die in Köln angesiedelt sind.
III) Liste aller Abteilungen in Köln, die Angestellte beschäftigen, die auch in Köln
wohnen.
IV) Liste aller Programmierer (Name, Gehalt und Abteilungsname), die in Köln
beschäftigt sind.
V) Durchschnittsverdienst aller Mitarbeiter der Abteilung K15.
e)
Beschreiben Sie die Informationen, welche man durch die Ausdrücke E1 und
E2 der Relationenalgebra erhält.
I)
E1 = πName, Ort(σAbteilungName="K15"(Person
Abteilung))
der Join wird auf das Attribut AbteilungNr ausgeführt.
II) A1 = πPersonenNr(σName = "Müller"(Person))
;
E2 = πName(A1
Person)
der Join wird auf die Attribute A1.PersonenNr und Person.ManagerNr ausgeführt.
Lösung:
Aufgabe 2:
a) 1. Normalform: Attribute atomar machen:
Gerät(Geräte-Nr, Bezeichnung, Hersteller, Raum, Gebäude, Anschaffungsdatum,
Anschaffungspreis, Fachschaft)
2. Normalform: Abhängigkeit vom gesamten Primärschlüssel
Gerät(Geräte-Nr, Bezeichnung, Hersteller, Raum, Gebäude, Anschaffungsdatum,
Anschaffungspreis)
Fachschaft(Geräte-Nr, Fachschaft)
3. Normalform: keine transitiven Abhängigkeiten:
Gerät(Geräte-Nr, Bezeichnung, Raum, Anschaffungsdatum, Anschaffungspreis)
Fachschaft(Geräte-Nr, Fachschaft)
Hersteller(Bezeichnung, Hersteller)
Raum(Raum, Gebäude)
b) πAnschaffungspreis(σFachschaft = IF(Fachschaft)
Gerät)
c) SELECT Gerät.Anschaffungspreis
FROM Gerät INNER JOIN Fachschaft ON Gerät.Geräte-Nr = Fachschaft.GeräteNr
WHERE Fachschaft.Fachschaft = "IF"
ORDER BY Gerät.Anschaffungspreis DESC
d) I) SELECT *
FROM Person INNER JOIN Abteilung ON Person.AbteilungNr =
Abteilung.AbteilungNr
WHERE Abteilung.AbteilungName = "K15" AND Person.Gehalt > 5000
II) SELECT COUNT(*)
FROM Abteilung
WHERE Abteilung.AbteilungOrt = "Köln"
III) SELECT *
FROM Person INNER JOIN Abteilung ON Person.AbteilungNr =
Abteilung.AbteilungNr
WHERE Abteilung.AbteilungOrt = "Köln" AND Person.Ort = "Köln"
IV) SELECT Person.Name, Person.Gehalt, Abteilung.AbteilungName
FROM Person INNER JOIN Abteilung ON Person.AbteilungNr = Abteilung.AbteilungNr
WHERE Person.Beruf = "Programmierer" AND Abteilung.AbteilungOrt = "Köln"
V) SELECT AVG(Person.Gehalt)
FROM Person INNER JOIN Abteilung ON Person.AbteilungNr =
Abteilung.AbteilungNr
WHERE Abteilung.AbteilungName = "K15"
e) I) Alle Namen und Wohnorte der Beschäftigten von Abteilung K15
II) Alle Mitarbeiter-Namen, die Müller als Manager haben.
Aufgabe 2:
Datenbanken
a) Ein Sportverein möchte seine Daten in einer Datenbank organisieren. Zunächst beschränkt
sich der Verein auf die reine Mitgliederverwaltung, welche folgende Informationen
verarbeiten soll:
• Zu jedem Vereinsmitglied soll der Name, welcher sich in Vor- und Nachname
aufschlüsselt und das Geburtsdatum gespeichert werden.
• Für jedes Vereinsmitglied soll die Adresse (aufgeteilt in Straße, Hausnummer,
Postleitzahl und Wohnort) gespeichert werden.
• Zur eindeutigen Identifizierung eines Vereinsmitgliedes soll eine fortlaufende
Nummer gespeichert werden.
• In der Datenbank soll außerdem erfasst werden, ob es sich bei einem Vereinsmitglied
um ein aktives oder passives Mitglied handelt.
o Für alle aktiven Mitglieder wird festgehalten, welche Sportart das Mitglied im
Verein betreibt und welchen Vereinsbeitrag das Mitglied dafür zu zahlen hat.
o Für passive Mitglieder wird festgehalten, welche ehrenamtlichen Tätigkeiten
das Mitglied angenommen hat. Dies können für ein passives Mitglied durchaus
mehrere Tätigkeiten sein.
Entwickeln Sie ein Entity-Relationship-Diagramm, das die beschriebene Struktur darstellt.
Geben Sie im folgenden (also bei allen Diagrammerweiterungen) auch die Kardinalitäten
der Beziehungen an und kennzeichnen Sie Primärschlüsselattribute.
b) Der Sportverein hat gute Erfahrungen mit der Datenbank gemacht und möchte für die
Mitgliederverwaltung durch eine Mannschaftsverwaltung ergänzen.
• Jede Mannschaft ist durch einen eindeutigen Namen identifizierbar und spielt in einer
Liga.
• In jeder Mannschaft spielen nur aktive Mitglieder des Vereins, wobei der Trainer der
Mannschaft stets ein passives Mitglied ist.
• Ein aktives Mitglied kann in mehreren Mannschaften mitspielen, dagegen kann ein
Trainer nur genau eine Mannschaft trainieren.
• Alle Mannschaften sind jeweils eindeutig den verschiedenen Abteilungen des Vereins
untergeordnet. In einer Abteilung können durchaus mehrere Mannschaften existieren.
• Eine Abteilung umfasst alle Mannschaften einer bestimmten Sportart und besitzt einen
eindeutigen Namen.
• Eine Abteilung wird stets von einem aktiven Mitglied geleitet. Dieses Mitglied kann
auch weitere Abteilungen leiten.
Zeichnen Sie ein neues Entity-Relationship-Diagramm, das die gesamte beschriebene
Struktur darstellt. Verzichten Sie bei den Entities aus Teilaufgabe a) auf die AttributAngabe.
c) Der Verein möchte nun zusätzlich alle gespielten Begegnungen seiner Mannschaften in
der Datenbank speichern. Am Ende eines Spieltages füllt dazu der Trainer der Mannschaft
immer den folgenden Spielbericht aus, welcher anschließend in die Datenbank
übernommen wird.
SPIELBERICHT
Heimspiel:
Name der Mannschaft:
Trainer:
Name der gegnerischen
Gastspiel:
(bitte ankreuzen)
___________________________
________________
Mannschaft:
Trainer:
Datum der Begegnung:
Uhrzeit der Begegnung:
Ergebnis:
___________________________
________________
____.____.20____
____:____Uhr
____:____-(Heim : Gast)
Zeichnen Sie ein neues Entity-Relationship-Diagramm, das die beschriebene Struktur
darstellt. Zeichnen Sie lediglich die Entities aus Teilaufgabe a) und b), welche in einer
Beziehung zur neuen Entity stehen. Verzichten Sie bei den Entities aus Teilaufgabe a) und
b) auf die Attribut-Angabe.
Kennzeichnen Sie den Primärschlüssel und begründen Sie Ihre Wahl.
Lösung:
Aufgabe 2:
a - c)
Datenbanken
Geburtsdatum
Nummer
Straße
Vorname
Hausnummer
Name
PLZ
Adresse
Mitglied
Ort
Nachname
is
a
Sportart
is
a
1
aktivesMitglied
n
Beitragssatz
Tätigkeiten
passiivesMitglied
1
1
spielt
in
1
trainiert
m
Name
Liga
Mannschaft
1
leitet
1
n
n
1
gehört
zu
spielt
Abteilung
Name
Trainer
bei
HeimGast
n
spielt
m
HeimErgebnis
n
Begegnung
Datum,Uhrzeit
GegnerMann
GastErgebnis
Sportart
GegnerTrainer
Aufgabe 1:
Datenbanken − ERM, Relationenalgebra
Sie erhalten den Auftrag, für das International Olympic Committee eine Datenbank für die
nächsten Olympischen Spiele zu erstellen, die folgenden Wirklichkeitsausschnitt enthalten
soll.
Die einzelnen Wettkämpfe der Olympischen Spiele sind durch den Namen der Sportart, den
Termin und die Sportstätte gekennzeichnet. An jedem Wettkampf nehmen mehrere Sportler
teil, die durch eine Startnummer identifiziert werden und außerdem einen Namen besitzen.
Jeder Wettkampf wird von einem Schiedsrichter geleitet, dem für diese Spiele eine
eindeutige Personalnummer zugeordnet wurde. Die Schiedsrichter werden bei einem
Wettkampf von verschiedenen Helfern unterstützt, die ebenfalls eine eindeutige
Personalnummer erhalten haben. Die Sportler und Schiedsrichter gehören jeweils einer
Nation an. Zu jeder Nation werden der Name der Nation, der Name des Mannschaftsleiters
sowie eine Telefonnummer für Rückfragen abgespeichert.
a)
Modellieren Sie diesen Ausschnitt der Datenbank im Entity-RelationshipModell. Verwenden Sie die grafische Notation des ER-Diagramms für Ihre Darstellung.
Geben Sie auch die Komplexitäten der Beziehungen an und markieren Sie die
Primärschlüssel. Führen Sie, wenn nötig und sinnvoll, einen im Wirklichkeitsausschnitt
nicht erwähnten Schlüssel ein.
b) Überführen Sie das ER-Modell in das relationale Modell. Optimieren Sie die Anzahl der
verwendeten Relationen.
Bei der Recherche nach einer geeigneten Modellierung Ihrer Datenbank im Internet finden
Sie die folgende Datenbankstruktur, die Ihnen zwar bei den Aufgabenteilen a und b nicht
weiterhilft, aber dennoch interessant ist:
Sportart(SportartNr, SportartName, Spielregel, Mannschaftsgröße, Hallensportart)
Mannschaft(MannschaftNr, MannschaftName, SportartNr, AnzahlSpieler)
spieltIn(SpielerNr, MannschaftNr, Position)
Spieler(SpielerNr, SpielerName, Straße, PLZ, Ort, Telefonnummer)
c) Stellen Sie die Datenbank als ER-Diagramm dar. Geben Sie auch die Komplexitäten an.
d) Geben Sie die Datentypen für die Attribute der Relation Sportart an.
e) Beschreiben Sie, welche Fragestellungen mithilfe der folgenden Operationen der
Relationenalgebra beantwortet werden können.
i) σHallensportart = 1(Sportart)
ii) πPosition(σName = "Basketball"(Sportart)
Mannschaft
spieltIn)
iii) πMannschaftName(σPLZ = 51519(Spieler)
σPosition = "Kapitän"(spieltIn)
Mannschaft)
f) Geben Sie die Operationen der Relationenalgebra an, mithilfe derer folgende
Informationen ermittelt werden können:
i) Alle Sportartnamen und deren Spielregeln
ii) Alle Sportarten, deren Mannschaften aus 2 Spielern bestehen.
iii) Alle Spielernamen, deren Position "Torwart" lautet und deren Mannschaft aus 7
Spielern besteht.
iv) Alle Orte, in denen Spieler wohnen, welche eine Hallensportart ausüben.
Lösung:
Datenbanken – ERM, Relationenalgebra
Aufgabe 1:
a)
Name
Personalnr
Startnr
Sportler
n
Schiedsrichter
n
ist
von
1
nimmt
teil
1
Helfer
n
Personalnr
ist
von
n
Wettkampf
Termin
wird
unterst.
n
leitet
1
Wettkampfnr
1
Sportart
Sportstätte
1
Nation
1
Telefonnr
Name
Manns.leiter
b) Sportler(Startnr, Name, Wettkampfnr, Nationname)
Schiedsrichter(Personalnr, Nationname)
Helfer(Personalnr, SchiedsrichterNr)
Wettkampf(Wettkampfnr, Termin, Sportstätte, Sportart, SchiedsrichterNr)
Nation(Name, Mannschaftsleiter, Telefonnr)
c)
SportartName
Spielregel
Mann.größe
SportartNr
Sportart
1
Hallensportart
spielt
Position
n
MannschaftsNr
Mannschaft
n
spielt
in
SpielerNr
m
Spieler
SpielerName
Straße
Mann.Name
AnzahlSpieler
Telefonnr
PLZ
d) SportartNr: INT
SportartName: VARCHAR(20)
Spielregel: VARCHAR(500)
Ort
Mannschaftsgröße: INTEGER
Hallensportart: BOOL
e) i) Alle Informationen über die Sportarten, die in der Halle gespielt werden.
ii) Alle Positionen, welche in einer Basketball-Mannschaft gespielt werden.
iii) Alle Mannschaftsnamen, deren Mannschaft einen Kapitän aus dem PLZ-Bezirk 51519
hat.
f) i)
ii)
iii)
iv)
πSportartName, Spielregel(Sportart)
σAnzahlSpieler=2(Mannschaft)
Sportart)
πSpielerName(Spieler
σPosition = "Torwart"(spieltIn)
σAnzahlSpieler=7(Mannschaft))
πOrt(Spieler
spieltIn
Mannschaft
σHallensportart = 1(Sportart))
Datenbanken − Normalisierung, SQL
Aufgabe 2:
Ein Unternehmen bietet ausschließlich Städtereisen an. Für verschiedene europäische Städte
existieren bestimmte Reiseangebote (jeweils genau eines), die Eigenschaften wie den Namen
der Stadt, den (konstanten) Preis sowie die Reisedauer (Anzahl der Übernachtungen) besitzen.
Für jedes Reiseangebot existieren verschiedene terminliche Ausprägungen (Reisen). Eine
solche konkrete Reise wird jeweils von genau einem Busfahrer durchgeführt. Die Busfahrer
des Unternehmens besitzen jeweils nur Kenntnisse für bestimmte Städte (Reiseangebote);
dementsprechend besitzen sie nur die Fähigkeit zur Durchführung bestimmter Reisen. Die
Kunden des Unternehmens sind ebenfalls in dem System abzubilden. Hierbei ist auch
abzubilden, welche Kunden welche konkreten Reisen gebucht haben.
Ein Vorschlag für die Modellierung im relationalen Modell lautet wie folgt:
Dauer Reisen (Nr, Termin)
Reiseangebote
Stadtname Preis
Paris
275,00 € 5
(121, 26.09.2009), (312, 15.10.2010), ...
London
545,00 € 6
(541, 12.12.2009), ...
...
Busfahrer
Kunden
Fahrername
Lukas Lunert
Lukas Lunert
Paul Parker
…
Stadtnamen
Paris
London
Paris
Kunden- Name
nummer
123456
Anton Acker
451271
...
Berta Burkert
fährt
Fahrername
Lukas Lunert
Lukas Lunert
Paul Parker
…
ReiseNr
121
541
312
Adresse
Reisen (Nr)
Roggenacker 23,
51519 Odenthal
Bananenweg 3,
51467 Bergisch Gladbach
(121), (541), (388),...
(121), (312), ...
a) Begründen Sie, dass mit dieser relationalen Datenbank der oben beschriebene
Wirklichkeitsausschnitt modelliert wurde. Gehen Sie dabei insbesondere auf die
Modellierung der Komplexitäten ein.
b) Begründen Sie mithilfe der Definition, dass sich diese Datenbank noch nicht in der ersten
Normalform befindet.
Überführen Sie anschließend die relationale Datenbank in die erste Normalform.
c) Geben Sie eine Definition dafür an, dass sich eine Datenbank in der zweiten Normalform
befindet.
d) Geben Sie eine Definition dafür an, dass sich eine Datenbank in der dritten Normalform
befindet.
Überführen Sie die Datenbank anschließend in die dritte Normalform.
e) Analysieren Sie die folgende SQL-Anweisung und erläutern deren Zweck.
i) SELECT Busfahrer.Fahrername
FROM Busfahrer
INNER JOIN Reiseangebote ON Busfahrer.Stadtname = Reiseangebot.Stadtname
WHERE Reiseangebot.Preis < 300.00
ii) SELECT Dauer, AVG(Preis) AS D_Preis
FROM Reiseangebote
GROUP BY Dauer
f)
Implementieren Sie SQL-Anweisungen auf Basis ihrer Datenbank in dritter
Normalform für folgende Abfragen:
i) Alle Reisetermine zur Stadt Paris.
ii) Alle Orte (PLZ reicht aus) in denen Kunden wohnen, die eine Reise nach Paris
gebucht haben.
iii) Alle Kundendaten der Kunden, die von "Lukas Lunert" zu ihrem Reiseziel geführt
wurden.
iv) Den Namen des Kunden mit der kleinsten Kundennummer.
v) Alle Busfahrernamen, die eine Reise leiten, welche mindestens 7 Tage dauert und
deren Reiseziel mit "P" anfängt (z. B. Prag, Paris, Podgorica, ...).
Lösung:
Aufgabe 2: Datenbanken – Normalisierung, SQL
a) Ein Reiseangebot gehört zu einer eindeutigen Stadt und hat einen festen Preis und eine
feste Dauer. Die einzelnen Reisen (terminliche Ausprägungen mit deren Nummer) werden
als Mehrfachattribut gespeichert. Damit können zu einem Angebot mehrere Reisen
gespeichert werden.
Die Busfahrer haben einen Namen und können (realisiert durch ein Mehrfachattribut)
beliebig viele Städte anfahren.
Welche Reisen nun tatsächlich von den Busfahrern gefahren werden steht in der Relation
fährt. Hier ist es möglich für jede Zuordnung Fahrer-Reise eine neue Zeile anzulegen.
Die Kundendaten Name, Adresse und Kundennummer aller Kunden und deren jemals
gebuchten Reisen (realisiert durch Mehrfachattribut) werden in der Tabelle Kunden
gespeichert.
b) Die Datenbank befindet sich nicht in erster Normalform, da nicht alle Tabellen über
Primärschlüssel verfügen sowie die Attribute nicht atomar sind.
Reiseangebote(Stadtname, Preis, Dauer)
Reisen(Stadtname, ReiseNr, Termin, FahrerNr)
Busfahrer(FahrerNr, Vorname, Nachname)
kannFahren(FahrerNr, Stadtname)
Kunden(KundenNr, Vorname, Nachname, Straße, PLZ, Ort)
gebucht(KundenNr, ReiseNr)
c) Eine Datenbank befindet sich in der 2. Normalform, wenn sie sich in der ersten
Normalform befindet und jedes Nichtschlüsselattribut vom gesamten Primärschlüssel
abhängig ist.
d) Eine Datenbank befindet sich in der 3. Normalform, wenn sie sich in der zweiten
Normalform befindet und jedes Attribut direkt (und nicht transitiv) vom Gesamtschlüssel
abhängig ist.
Dies ist hier nicht der Fall, da z. B. Ort nur von PLZ abhängig ist.
Kunden(KundenNr, Name, Straße, PLZ)
Orte(PLZ, Ort)
e) i) Zuerst werden die Tabellen Busfahrer und Reiseangebote gejoint. Damit erhalten wir
alle Informationen über die Möglichen Kombinationen Stadt-Busfahrer. Hiervon
werden nun nur die Reisen ausgewählt, deren Preis unter 300 Euro liegt. Abschließend
wird projiziert auf den Namen des Busfahrers.
Es werden alle Busfahrer ausgegeben, die eine Stadt anfahren können, deren
Reisepreis unter 300 Euro liegt.
ii) Die Daten der Tabelle Reiseangebote werden nach ihrer Dauer gruppiert. Von jeder
Gruppe wird die Dauer und der durchschnittliche Reisepreis aller zu dieser Gruppe
gehörenden Reisen ausgegeben. Der durchschnittliche Reisepreis wird in einem
Attribut D_Preis ausgegeben.
f) i)
select Termin
from Reisen
where Stadtname = "Paris"
ii)
select Kunden.PLZ
from Kunden
inner join gebucht on Kunden.KundenNr = gebucht.KundenNr
inner join Reise on gebucht.ReiseNr = Reise.ReiseNr
where Reise.Stadtname = "Paris"
iii)
select Kunden.*
from Kunden
inner join gebucht on Kunden.KundenNr = gebucht.KundenNr
inner join Reise on gebucht.ReiseNr = Reise.ReiseNr
inner join Busfahrer on Reise.FahrerNr = Busfahrer.FahrerNr
where Busfahrer.Vorname = "Lukas"
and Busfahrer.Nachname = "Lunert"
iv)
select Vorname, Nachname
from Kunden
where KundenNr = (
select min(KundenNr)
from Kunden
)
v)
select Busfahrer.Nachname, Busfahrer.Vorname
from Busfahrer
inner join Reise on Busfahrer.FahrerNr = Reise.FahrerNr
inner join Reiseangebot on Reise.Stadtname = Reiseangebot.Stadtname
where Reiseangebot.Dauer >= 7
and Reiseangebot.Stadtname like "P%"
Herunterladen