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.

SELECT Stadion, COUNT(SpielID) FROM Austragungsort
LEFT JOIN Spiel ON Spiel.Austragungsort = Austragungsort.Stadion
GROUP BY Austragungsort.Stadion

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 FROM Spiel
JOIN Tor ON Spiel.SpielID = Tor.Spiel
WHERE (Spiel.MannschaftA = 'Spanien' OR Spiel.MannschaftB = 'Spanien');
  1. 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.

  2. FROM Spiel JOIN Tor ON Spiel.SpielID = Tor.Spiel: Diese Zeile verknüpft die Tabellen Spiel und Tor über die Spiel-ID. Das bedeutet, dass nur Spiele berücksichtigt werden, in denen mindestens ein Tor gefallen ist (da nur solche Spiele in der Tor-Tabelle aufgeführt werden).

  3. 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

SELECT COUNT(SpielID) FROM spiel s JOIN Tor t ON s.SpiellD = t.spiel
WHERE MannschaftA = 'Spanien' OR MannschaftB = 'Spanien'
GROUP BY SpielID;
SELECT COUNT(SpiellD) FROM Spiel
WHERE (MannschaftA= 'Spanien' OR MannschaftB = 'Spanien') AND
EXISTS (SELECT * FROM Tor WHERE Tor.Spiel = Spiel.SpiellD);

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

Gibt keine gleiche linke 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

g) Elimination überflüssiger Relationen

In diesem Schritt nix zu tun

Finale Relationen: