Aufgabe 12-1 ER-Modell
Aufgabenstellung
In einer relationalen Datenbank sollen Informationen über die XXIII. Olympischen Winterspiele in Pyeongchang gespeichert werden.
Die einzelnen Wettkämpfe besitzen eine Wettkampfnummer, den Namen der Sportart, einen Termin und eine Wettkampfstätte. An jedem Wettkampf nehmen beliebig viele Sportler teil, die durch eine Startnummer identifiziert werden. Jeder Wettkampf wird von genau einem Schiedsrichter geleitet, der eine eindeutige Schiedsrichternummer besitzt. Es sollen die Nationen mit eindeutigem Kürzel und dem vollen Namen abgespeichert werden. Jede Person besitzt einen Namen und gehört zu einer Nation.
(a) Entwerfen Sie zu diesem Zweck ein E/R-Modell.
Scrollen und zoomen mit STRG gedrückt
(b) Setzen Sie das E/R-Diagramm in ein relationales Datenbankschema um.
Aufgabe 12-2 Relationale Algebra
Aufgabenstellung
Gegeben seien folgende Relationen R und S.
Geben Sie die Ergebnisrelationen folgender Ausdrücke der relationalen Algebra also Tabellen an. Wenn nötig, ist die Duplikat-Elimination durchzuführen.
(a) Vereinigung
Lösung
(b) Quotient
Lösung
(c) Quotient
Lösung
Aufgabe 12-3 Relationale Algebra | Tupelkalkül | Bereichskalkül
Aufgabenstellung
Gegeben sei das folgende Relationenschema. Dabei sind die Schlüsselattribute jeweils unterstrichen.
Geben Sie für die folgende verbal formulierte Anfrage einen äquivalenten Ausdruck in Relationaler Algebra und wahlweise in relationalem Tupel- oder Bereichskalkül an. Für Anfragen im Tupelkalkül soll darüber hinaus das Schema aller freien Variable angegeben werden. Sie können an passender Stelle auch den Join-Operator benutzen.
- Bestimmen Sie Name und Verkaufspreis aller Produkte, die der Angestellte Peter Müller am 04.02.2017 verkauft hat.
Relationale Algebra
Bedingung vor Join
Bedingung nach Join
Tupelkalkül
Bereichskalkül
Aufgabe 12-4 SQL
Aufgabenstellung
Gegeben sei das folgende Relationenschema zur Fußball-Weltmeisterschaft.
- >
- >
- >
- >
- >
- >
- >
> Formulieren Sie die folgenden Anfragen in SQL.
a) Bestimmen Sie für jeden Austragungsort die Anzahl der Spiele, die dort stattgefunden haben. Beachten Sie, dass auch Austragungsorte gespeichert wurden, an denen dann kein Spiel stattgefunden hat.
b) Bestimmen Sie die Anzahl der Spiele, die Spanien im Laufe der WM gespielt hat, in denen mindestens ein Tor fiel.
-
SELECT COUNT(DISTINCT Spiel.SpielID) AS Anzahl_Spiele: Diese Zeile zählt die einzigartigen Spiel-IDs. Mit
COUNT(DISTINCT …)
wird sichergestellt, dass jedes Spiel, unabhängig davon, wie viele Tore darin gefallen sind, nur einmal gezählt wird. -
FROM Spiel JOIN Tor ON Spiel.SpielID = Tor.Spiel: Diese Zeile verknüpft die Tabellen
Spiel
undTor
über die Spiel-ID. Das bedeutet, dass nur Spiele berücksichtigt werden, in denen mindestens ein Tor gefallen ist (da nur solche Spiele in derTor
-Tabelle aufgeführt werden). -
WHERE (Spiel.MannschaftA = ‘Spanien’ OR Spiel.MannschaftB = ‘Spanien’): Diese Bedingung filtert die Spiele, in denen Spanien entweder also Mannschaft A oder also Mannschaft B beteiligt war.
Die Kombination dieser Elemente führt dazu, dass die Abfrage die Anzahl der unterschiedlichen Spiele liefert, in denen Spanien gespielt hat und in denen mindestens ein Tor erzielt wurde, wobei jedes Spiel nur einmal gezählt wird, auch wenn mehrere Tore fielen.
Weitere Lösungen
Aufgabe 12-5 Funktionale Abhängigkeiten
Aufgabenstellung a)
Gegeben sei das Relationenschema , sowie die Menge der zugehörigen nicht-trivialen funktionalen Abhängigkeiten:
a) Bestimmen Sie die Menge der Schlüsselkandidaten von R1. Geben Sie dazu alle Schlüsselkandidaten an und erläutern Sie, warum es keine weiteren Schlüsselkandidaten gibt
-
→ →
-
→ →
-
→ →
Mithilfe von kann man alle Attribute herleiten. Zudem ist diese Menge eindeutig und minimal
b) Bestimmen Sie die kanonische Überdeckung zu . Geben Sie dazu die kanonische Überdeckung an und erläutern Sie, wie sie erreicht wird. Synthesealgorithmus
Aufgabenstellung b)
Gegeben sei das Relationenschema , sowie die Menge der zugehörigen nicht-trivialen funktionalen Abhängigkeiten:
Erinnerung
Schritte des Synthesealgorithmus:
- Linksreduktion
- Rechtsreduktion
- Entfernung von rechtsleeren Abhängigkeiten
- Zusammenfassen von Abhängigkeiten mit gleicher linker Seite
- Neues Relationsschema erzeugen
- Rekonstruktion eines Schlüsselkandidaten:
- Elimination überflüssiger Relationen
Linksreduktion
-
→ →
- Da gilt
- Wir können in der funktionalen Abhängigkeit weglassen, weil bereits durch und alleine hergeleitet werden kann.
-
- minimal gibt nix zu ändern
-
- gibt nix zu ändern
-
- minimal gibt nix zu ändern
Rechtsreduktion
Falsche Anwendung der Rechtsreduktion zum vorbeugen von Fehlern
- wird abgedeckt durch
- wird abgedeckt durch
- bleibt unverändert
- wird abgedeckt durch
nicht korrekt, weil das Entfernen von und aus diesen Abhängigkeiten bedeuten würde, dass sie aus der Überdeckung komplett verschwinden. Das ist nicht das Ziel der Rechtsreduktion. Das Ziel ist es, Redundanzen zu entfernen, nicht aber die komplette Abhängigkeit.
Richtige Anwendung der Rechtsreduktion
- wird abgedeckt durch
- bleibt unverändert
- und werden abgedeckt durch und
- bleibt unverändert
Wir behalten und in der kanonischen Überdeckung, da diese direkten funktionalen Abhängigkeiten eine klare und eigenständige Beziehung zwischen den Attribute definieren, die nicht implizit durch abgedeckt sind.
c) Entfernung von rechtsleeren Abhängigkeiten
d) Zusammenfassen von Abhängigkeiten mit gleicher linker Seite
e) Neues Relationsschema erzeugen
f) Rekonstruktion eines Schlüsselkandidaten:
Unsure
Unsicher ob dies nötig, da in schon und enthalten
Neue Relation für Schlüsselkandidaten