Aufgabe 1: Gemischte Fragen

Aufgabenstellung

Gegeben sei das Relationenschema . Wir wissen, dass der einzige Schlüsselkandidat ist. Über weitere funktionale Abhängigkeiten gibt es keine Informationen, es kann aber weitere funktionale Abhängigkeiten geben. Nehmen Sie an, dass die erste Normalform erfüllt.

(a) Können wir mit Sicherheit davon ausgehen, dass auch die zweite und dritte Normalform erfüllt? Begründen Sie Ihre Aussage jeweils in ein bis zwei Sätzen.

Lösung

2.NF

Für die 2. Normalform (2NF) muss gellten:

  • jedes Nicht-Schlüssel-Attribut (NSA) ist voll funktional abhängig von jedem Schlüsselkandidaten

Diese Bedingung ist erfüllt, da der einzige Schlüssel ist und alle Attribute die vom Schlüsselkandidaten abhängig sind automatisch von allen Schlüsselkandidaten (also nur A) abhängig sind. Es kann also garkeinen Fall geben, dass ein Attribute nicht von allen Schlüsselattributen abhängig sind.

In der 2.NF sind zudem transitive Abhängigkeiten erlaubt wie z.B

3.NF

Für die 3. Normalform (3NF) muss gellten:

  • Keine transitiven Abhängigkeiten (Kein Nichtschlüssel zu anderem Nichtschlüssel) wobei der eine Nichtschlüssel wiederum von einem Schlüsselkandidaten abhängt
  • ”Vermittler” hängt also von Schlüsselkandidat ab ist aber selber keiner und hat eine Abhängigkeit zu einem Nichtschlüsselkandidaten
  • Reicht wenn ein Nichtschlüssel Attribute von irgendeinem Schlüsselkandidaten abhängig ist

Die 3.NF ist hier nicht gegeben, da es eine Abhängigkeit geben kann, und dann wiederum eine Abhängigkeit wo also der Vermittler dient

(b) Gegeben seien die Relationen und . Relation enthält 50 Tuple und Relation enthält 10 Tuple. Gegeben seien außerdem folgende Anfragen:

:

SELECT DISTINCT *
FROM R, S;

:

SELECT *
FROM R NATURAL JOIN S;
  • ist das Kreuzprodukt von und (CrossJoin in SQL)

  • Minimale Anzahl von Ergebnistupel für Anfrage :

Lösung

Berechnung und Erklärung:

Die minimale Anzahl der Ergebnistupel ist das Product der Anzahl der Tuple in den beiden beteiligten Relationen. Dies ergibt:

  • Maximale Anzahl von Ergebnistupel für Anfrage :

Lösung

Berechnung und Erklärung:

Die maximale Anzahl der Ergebnistupel ist identisch zur minimalen, da es sich um eine Kreuzprodukt-Operation handelt, die alle Kombinationen der Tuple aus beiden Relationen erzeugt:

  • Anzahl der Attribute in der Ergebnisrelation von Anfrage :

Lösung

  • Ergebnis: 6 Attribute.
  • Minimale Anzahl von Ergebnistupel für Anfrage :

Lösung

  • Ergebnis: Mindestens 0 Ergebnistupel, da es möglich ist, dass keine Übereinstimmungen in den gemeinsamen Spalten existieren.
  • Maximale Anzahl von Ergebnistupel für Anfrage

Lösung

Berechnung:

Im schlimmsten Fall stimmt jedes Tuple in mit jedem Tuple in bezüglich der Werte in den Spalten und überein. Daher ist die Anzahl der Ergebnistupel das Product der Anzahl der Tuple in beiden Relationen:

- Anzahl der Attribute in der Ergebnisrelation von Anfrage $A_2$ >[!success] Lösung > >- **Ergebnis**: 4 Attribute. ## (c) Gegeben seien die Transaktionen $T_1$, $T_2$ und $T_3$, wobei Transaktion $T_1$ aus 5 Einzelaktionen, Transaktion $T_2$ aus 7 Einzelaktionen und Transaktion $T_3$ aus 8 Einzelaktionen besteht. Wie viele mögliche verschiedene serielle Schedules gibt es? - $T_{1}$ hat 5 Einzelaktionen - $T_2$ hat 7 Einzelaktionen - $T_3$ hat 8 Einzelaktionen >[!success] Lösung > >

serielle \ Schedules \ Anzahl: 3! = 6

(d) Was unterscheidet eine materialisierte View von einer gewöhnlichen View?

Lösung

  • materialisierte Views kann man abspeichern und wie eine Art eigene Schema benutzen, die Ergebnisse der materialisierten View werden physisch in eienr Tabelle gespeichert
  • Eine gewöhnliche View speichert keine Daten physisch. Stattdessen handelt es sich um eine Abfrage, die bei Bedarf ausgeführt wird, um die aktuellen Daten aus den zugrunde liegenden Tabellen zu generieren

Was ist der wesentliche Vorteil einer materialisierten View?

Lösung

  • Verbesserte Abfrageleistung durch physische Speicherung der Abfrageergebnisse
  • Schnellerer Zugriff auf Daten, da Abfrage nicht bei jedem Zugriff erneut ausgeführt werden muss
  • Kürzere Antwortzeiten insbesondere bei komplexen Abfragen oder großen Datenmengen
  • Möglichkeit zur Speicherung vorausberechneter Daten, was die Leistung weiter verbessert
  • Effizientere Datenverarbeitung und -abfrage, besonders in Umgebungen mit großen Datenmengen oder komplexen Abfragen

(e) Was ist die maximale und minimale Anzahl von Schlüsseln, die ein innerer Knoten in einem B-Baum der Ordnung 10 haben kann?

Lösung

Minimal: 10 Maximal: 20


Aufgabe 2 SQL & Kalküle Tupelkalkül |Bereichskalkül | Erweiterte Abfragen in SQL

Aufgabenstellung

Gegeben sei das folgende Datenbankschema, das für die Speicherung der Daten eines Geheimdienstes verwendet wird. Zusätzlich ist ein Teil seiner Ausprägung gegeben. Die Primärschlüsselattribute sind jeweils unterstrichen. Die Attributnamen sind global eindeutig, d.h. Fremdschlüsselbeziehungen sind anhand des Attributnamens erkennbar.

In der Relation Agenten werden alle Agenten mit einer eindeutigen Nummer und ihrem Namen gespeichert. Die Relation Einsätze beschreibt Einsätze, die jeweils mit einem eindeutigen Namen beschrieben werden. Einsätze finden an einem bestimmten Datum und Ort statt und werden aufgrund einer Zielperson durchgeführt. Die Agenten tragen Decknamen (Relation Decknamen). Dabei ist einem Decknamen jeweils ein Agent eindeutig zuzuordnen. Ein Agent kann aber mehrere Decknamen haben. Agenten nehmen gegen Bezahlung an Einsätzen teil (Relation nimmt-teil). Außerdem kann ein Agent auch under mehreren Decknamen an einem Einsatz teilnehmen.

(a) Geben Sie die Anweisung in SQL-DDL an, die notwendig ist, um die Relation “nimmt-teil” wie beschrieben zu erzeugen. Achten Sie dabei auf Fremdschlüsselbeziehungen und wählen Sie anhand der gegebenen Ausprägungen sinnvolle Datentypen. Die Bezahlung ist ganzzahlig und darf niemals negative sein. Gehen Sie davon aus, dass alle Zeichenketten eine maximale Länge von 20 haben.

Lösung

  • Kurzform:
    CREATE TABLE nimmt-teil
    (
        EName VARCHAR(20) REFERENCES Einsätze,
        Deckname VARCHAR(20) REFERENCES Decknamen,
        Bezahlung INTEGER CHECK (Bezahlung >= 0),
        PRIMARY KEY (EName,Deckname)
    )
  • Längere Form:
    CREATE TABLE nimmt-teil
    (
        EName VARCHAR(20) REFERENCES Einsätze(EName),
        Deckname VARCHAR(20) REFERENCES Decknamen(Deckname),
        Bezahlung INTEGER CHECK (Bezahlung >= 0),
        PRIMARY KEY (EName,Deckname)
    )
  • Ausführliche Form:
    CREATE TABLE `nimmt-teil`
    (
        EName VARCHAR(20),
        Deckname VARCHAR(20),
        Bezahlung INTEGER CHECK (Bezahlung >= 0),
        PRIMARY KEY (`EName`, `Deckname`),
        FOREIGN KEY (`EName`) REFERENCES `Einsätze`(`EName`),
        FOREIGN KEY (`Deckname`) REFERENCES `Decknamen`(`Deckname`)
    )

Alle drei Formen sind korrekt, aber die kürzeste Form ist am prägnantesten.

(b) Erstellen Sie eine Liste aller Einsätze, an denen der Agent under dem Decknamen 007 beteiligt war. Die Liste soll den Einsatznamen, das Datum, den Ort und die Zielperson enthalten. Sortieren Sie die Liste absteigend nach dem Namen der Zielperson und bei gleicher Zielperson aufsteigend nach dem Datum.

Lösung

SELECT EName,Datum,Ort,Zielperson FROM Einsätze
JOIN nimmt-teil ON Einsätze.EName = nimmt-teil.EName
WHERE Deckname = "007"
ORDER BY Zielperson DESC, Datum ASC

(c) Geben Sie zu jedem Agenten den Realnamen und dessen Einsatzorte an. Nehmen Sie jedoch nur diejenigen Orte auf, an denen noch kein anderer Agent einen Einsatz hatte.

Lösung

SELECT Name, Ort
FROM Agenten A1
JOIN Decknamen D1 ON D1.ANr = A1.ANr
JOIN nimmt-teil NT1 ON NT1.Deckname = D1.Deckname
JOIN Einsätze E1 ON NT1.EName = E1.EName
WHERE NOT EXISTS ( SELECT * FROM Agenten A2
				   JOIN Decknamen D2 ON D2.ANr = A2.ANr
				   JOIN nimmt-teil NT2 ON NT2.Deckname = D2.Deckname
				   JOIN Einsätze E2 ON NT2.EName = E2.EName
				   WHERE E1.Ort = E2.Ort AND NOT(A1.Name = A2.Name)
				 )

(d) Geben Sie für jeden Einsatz den Einsatznamen sowie die Gesamtkosten aller Bezahlungen für die Agenten aus. Jedoch sollen dabei nur die Bezahlung der Agenten mitgezählt werden, die schon an mehr also zwei unterschiedlichen Einsätzen beteiligt waren.

Lösung

SELECT E.EName, SUM(NT.Bezahlung) AS Gesamtkosten FROM Einsätze E
JOIN nimmt-teil NT ON E.EName = NT.EName
JOIN Decknamen D ON NT.Deckname = D.Deckname
WHERE D.ANr IN (SELECT D2.ANr FROM Decknamen D2
               JOIN nimmt-teil NT2 ON D2.Deckname = NT2.Deckname
               GROUP BY D2.ANr
               HAVING COUNT(DISTINCT NT2.EName) > 2)
GROUP BY E.EName;

Schritte zur Erstellung der SQL-Abfrage

  • Verknüpfung der Tabellen: Verbinde die Einsätze-, nimmt-teil- und Decknamen-Tabellen, um Einsätze mit den zugehörigen Bezahlungen und Agenten zu assoziieren.
    • FROM Einsätze E JOIN nimmt-teil NT ON E.EName = NT.EName: Jeder Einsatz wird mit den Details seiner Teilnahme verknüpft.
    • JOIN Decknamen D ON NT.Deckname = D.Deckname: Die Teilnahmeinformationen werden über Decknamen mit den Agenten verbunden.
  • Filtern von Agenten: Wähle nur die Agenten aus, die an mehr also zwei verschiedenen Einsätzen beteiligt waren.
    • WHERE D.ANr IN (…): Es wird eine Unterabfrage verwendet, die die Agenten filtert.
    • SELECT D2.ANr FROM Decknamen D2 JOIN nimmt-teil NT2 ON D2.Deckname = NT2.Deckname: Diese Unterabfrage sammelt alle Agenten und deren Einsätze.
    • GROUP BY D2.ANr: Gruppierung der Agenten, um die Einsätze je Agent zu zählen.
    • HAVING COUNT(DISTINCT NT2.EName) > 2: Agenten, die an mehr also zwei unterschiedlichen Einsätzen teilgenommen haben, werden ausgewählt.
  • Aggregieren der Kosten: Berechne die Gesamtkosten der Bezahlungen für jeden Einsatz.
    • SUM(NT.Bezahlung) AS Gesamtkosten: Summiert alle Bezahlungen, die den oben genannten Kriterien entsprechen.
    • GROUP BY E.EName: Die Ergebnisse werden nach Einsatzname gruppiert, um die Kosten pro Einsatz auszugeben.

Ziel der Abfrage

  • Die Abfrage liefert den Namen jedes Einsatzes zusammen mit den Gesamtkosten der Zahlungen an Agenten, die intensiv (mehr also zwei verschiedene Einsätze) involviert waren.

(e) Geben Sie die Namen der Zielpersonen an, gegen die under dem Decknamen 007 im Jahr 1956 (zwischen dem 01.01.1956 und 31.12.1956 einschließlich) ermittelt wurde. Hinweis: Datumsangaben können mit Hilfe der Operatoren <, <=, >, >= und = verglichen werden.

Aufgabenstellung

Formulieren Sie die folgende Anfrage im Tupelkalkül. Zusätzlich soll das Schema aller freien Variable angegeben werden.

Lösung


Aufgabe 3 Relationale Algebra

(a) Gegeben seien die zwei Relationen R und S. Bilden Sie die folgenden Operationen durch Verwendung der fünf relationalen Grundoperationen (Vereinigung. Differenz, Kartesisches Product. Selektion, Projektion) nach

1. Durchschnitt

Lösung

2. Join mit Bedingung

Lösung

3. Quotient

Lösung

(b) Gegeben sind nun folgende Relationen

Aufgabenstellung

Hierbei verweist das Attribute Besitzer in Wohnung auf das Attribute Persld in Personen. Formulieren Sie die folgenden Anfragen in der relationalen Algebra.

1. Ermitteln Sie die Namen und das Vermögen aller Personen, die eine Wohnung in Hamburg und in München besitzen.

Lösung

2. Bestimmen Sie die Ids aller Personen, die keine Wohnung besitzen

Lösung


Aufgabe 4 ER-Modell

Note

ER-Modellierung (8 Punkte) Stadt, Land, Fluss einmal anders: Die relationale Datenbank eines geographischen Informationssystems beinhaltet Städte, Länder und Flüsse mit folgenden Einzelheiten:

  • Eine Stadt wird durch ihren Namen und das Land gekennzeichnet, in dem sie liegt. Außerdem hat jede Stadt eine Einwohnerzahl.
  • Ein Land hat einen eindeutigen Namen, eine Fläche und ebenfalls eine Einwohnerzahl. Ein Land kann an mehrere Länder angrenzen. In einem Land liegt mindestens eine Stadt, wobei jede Stadt nur in genau einem Land liegt. Außerdem hat jedes Land eine Hauptstadt.
  • Ein Fluss wird durch seinen Namen bestimmt und hat eine gewisse Länge. Jeder Fluss kann durch mehrere Städte und auch durch mehrere Länder fließen. Hierbei wird gespeichert, wie viele Kilometer ein Fluss ein Land durchfließt. Des Weiteren kann ein Fluss in einen anderen Fluss münden, in den auch weitere Flüsse münden können. Eine Stadt kann an mehreren Flüssen liegen und durch ein Land können mehrere Flüsse fließen.

Erstellen Sie ein Entity-Relationship-Diagramm für die oben beschriebene Datenbank. Markieren Sie die Funktionalitäten der Relationships und unterstreichen Sie den Primärschlüssel jeder Entität. Vermeiden Sie es, zusätzliche, nicht geforderte Attribute einzuführen.

Nutzen Sie also Grundlage für das Entity-Relationship-Diagramm nur die unten aufgeführten Entitäten.

> Scrollen und zoomen mit STRG gedrückt >Auf das 3. Icon von links klicken falls Skizze nicht zu sehen ist

Lösung




Aufgabe 5 Transaktionen

Aufgabenstellung

Gegeben sei der folgende Schedule:

(a) Geben Sie den Abhängigkeitsgraphen von an. Nutzen Sie hierzu die unten dargestellte Vorlage.

**Lösung **

Tabelle anfertigen zur leichteren Skizze


Scrollen und zoomen mit STRG gedrückt Auf das 3. Icon von links klicken falls Skizze nicht zu sehen ist

(b) Ist der Schedule S, serialisierbar? Falls ja, geben Sie alle möglichen seriellen Schedules an. Falls der Schedule nicht serialisierbar ist, begründen Sie Ihre Antwort.

Lösung

Der Schedule ist serialisierbar, da er zyklenfrei ist

(c) Welche Anomalien treten im Schedule auf? Geben Sie für jede Anomalien an, ob diese auftritt und falls ja, bezüglich welchen Objekten. Jede Anomalie kann entweder keinmal, einmal oder mehrmals auftreten.

Aufgabenstellung

Betrachten Sie nun folgenden Schedule:

Anomalien:

  • Dirty Read
  • Lost-Update
  • Non-repeatable Read

Lösung

Merkhile

DR: WRW LU: RWW NRR: RWR

img


Aufgabe 6 Normalformen und Synthesealgorithmus

(a) Gegeben sind die folgenden Relationen, deren funktionale Abhängigkeiten und ihre Schlüsselkandidaten.

1.

Aufgabenstellung

Funktionale Abhängigkeiten:

  • Schlüsselkandidaten:

Entscheiden Sie, ob das Relationenschema die 3. Normalform erfüllt und begründen Sie Ihre Antwort.

Lösung

→ Das Relationenschema erfüllt die 3. Normalform. Es existieren keine transitiven Abhängigkeiten zwischen Nicht-Schlüsselattributen. Alle funktionalen Abhängigkeiten, in denen ein Attribute von anderen abhängt, betreffen entweder Schlüsselkandidaten oder sind zwischen Attribute, die Teil von Schlüsselkandidaten sind. Daher gibt es keine Verletzungen der Bedingungen der 3. Normalform.

2.

Aufgabenstellung

Funktionale Abhängigkeiten:

  • Schlüsselkandidaten:

Entscheiden Sie, ob das Relationenschema die 3. Normalform erfüllt und begründen Sie Ihre Antwort.

Lösung

ist abhängig von partiellem Schlüsselkandidaten und nicht von allen. Dadurch ist die 2.NF nicht gegeben und somit auch nicht die 3.NF

(b) Gegeben sei das Relationenschema sowie die Menge der zugehörigen nicht-trivialen funktionalen Abhängigkeiten:

Aufgabenstellung

Funktionale Abhängigkeiten:

Bestimmen Sie alle Schlüsselkandidaten der Relation und begründen Sie jeweils, warum es sich um einen Schlüsselkandidaten handelt. Begründen Sie auch, weshalb es keine weiteren Schlüsselkandidaten gibt.

Schlüsselkandidaten für die Relation R_3

Schlüsselkandidat:

  • Funktionale Abhängigkeiten:

Begründung:

  • deckt und ab.
  • ermöglicht, dass auch abdeckt, da durch bestimmt wird.
  • und da sowohl also auch durch bestimmt sind, wird auch abgedeckt.
  • ermöglicht, dass auch abdeckt, indem und (bereits durch bestimmt) verwendet werden.
  • ist redundant, da selbst verwendet wird, um alles abzudecken.

Vollständigkeit der Abdeckung:

Minimalität: Keine echte Teilmenge von kann die gesamte Relation abdecken.

Schlüsselkandidat:

  • Funktionale Abhängigkeiten:

Begründung:

  • deckt ab.
  • deckt ab, da sowohl (bereits durch abgedeckt) also auch in der Attributmenge enthalten sind.
  • deckt ab, da sowohl (über abgedeckt) also auch in der Attributmenge enthalten sind.
  • deckt ab, sobald bestimmt ist.

Vollständigkeit der Abdeckung:

Minimalität: Keine echte Teilmenge von kann die gesamte Relation abdecken.

Fazit

Die Analyse zeigt, dass sowohl also auch minimale Schlüsselkandidaten für die Relation sind. Beide Attributmengen decken die gesamte Relation funktional ab und erfüllen die Kriterien der Minimalität für Schlüsselkandidaten.

Warum keine weiteren Kandidaten?

  • Attribute allein oder in anderen Kombinationen: Kein einzelnes Attribute außer und keine andere Kombination außer können alle anderen Attribute bestimmen. Beispielsweise reicht allein nicht aus, um , , und zu bestimmen. Ebenso kann eine Kombination wie oder nicht und somit nicht alle Attribute abdecken.
  • Redundanzfreie Kombinationen: Alle anderen Kombinationen, die die gesamte Relation abdecken könnten, würden zusätzliche, unnötige Attribute enthalten und somit nicht minimal sein.