\documentclass{bschlangaul-aufgabe}
\bLadePakete{syntax}
\begin{document}
\bAufgabenMetadaten{
  Titel = {Aufgabe 3},
  Thematik = {Relationale Algebra und Optimierung},
  Referenz = 66116-2020-H.T2-TA2-A3,
  RelativerPfad = Examen/66116/2020/09/Thema-2/Teilaufgabe-2/Aufgabe-3.tex,
  ZitatSchluessel = examen:66116:2020:09,
  BearbeitungsStand = mit Lösung,
  Korrektheit = unbekannt,
  Ueberprueft = {unbekannt},
  Stichwoerter = {SQL mit Übungsdatenbank, Relationale Algebra},
  EinzelpruefungsNr = 66116,
  Jahr = 2020,
  Monat = 09,
  ThemaNr = 2,
  TeilaufgabeNr = 2,
  AufgabeNr = 3,
}

\begin{enumerate}

%%
% a)
%%

% Datenbankname: Division
\begin{minted}{sql}
CREATE TABLE V (
  Name VARCHAR(1),
  Jahr integer
);

CREATE TABLE S (
  Jahr integer
);

INSERT INTO V VALUES
  ('A', 2019),
  ('A', 2020),
  ('B', 2018),
  ('B', 2019),
  ('B', 2020),
  ('C', 2017),
  ('C', 2018),
  ('C', 2020);

INSERT INTO S VALUES
  (2018),
  (2019),
  (2020);
\end{minted}
\index{SQL mit Übungsdatenbank}

\item Betrachten Sie die Relation $V$. Sie enthält eine Spalte
\emph{Name} sowie ein dazugehörendes Jahr.
\index{Relationale Algebra}
\footcite{examen:66116:2020:09}

\begin{center}
\begin{tabular}{|l|l|}
\hline
Name & Jahr \\\hline\hline
A & 2019 \\\hline
A & 2020 \\\hline
B & 2018 \\\hline
B & 2019 \\\hline
B & 2020 \\\hline
C & 2017 \\\hline
C & 2018 \\\hline
C & 2020 \\\hline
\end{tabular}
\end{center}

\begin{enumerate}

%%
% i.
%%

\item Gesucht ist eine Relation $S$, die das folgende Ergebnis von $V
\div S$ berechnet ($\div$ ist die Division der relationalen Algebra):

$V \div S$

\begin{center}

\begin{tabular}{|l|}
\hline
Name \\\hline\hline
B \\\hline
\end{tabular}
\end{center}

Welche der nachstehenden Ausprägungen für die Relation liefert das
gewünschte Ergebnis? Geben Sie eine Begründung an.

\begin{enumerate}
\item

\begin{tabular}{|l|}
\hline
Jahr\\\hline\hline
2017\\\hline
2018\\\hline
2019\\\hline
2020\\\hline
\end{tabular}

\item

\begin{tabular}{|l|}
\hline
Jahr\\\hline\hline
2018\\\hline
2019\\\hline
2020\\\hline
\end{tabular}

\item

\begin{tabular}{|l|}
\hline
Jahr\\\hline\hline
2017\\\hline
2019\\\hline
2020\\\hline
\end{tabular}

\item ii.,

\end{enumerate}

%%
%
%%

\begin{bAntwort}
iv) also weder i., noch ii., noch iii.

\begin{enumerate}
\item

\begin{tabular}{|l|}
\hline
Name \\\hline\hline
\end{tabular}

\item

\begin{tabular}{|l|}
\hline
Name \\\hline\hline
C \\\hline
\end{tabular}

\item

\begin{tabular}{|l|}
\hline
Name \\\hline\hline
B \\\hline
C \\\hline
\end{tabular}
\end{enumerate}
\end{bAntwort}

%%
% ji.
%%

\item Formulieren Sie die Divisions-Query aus Teilaufgabe i. in SQL.

\begin{minted}{sql}
SELECT DISTINCT v1.Name FROM V as v1
WHERE NOT EXISTS (
  (SELECT s.Jahr FROM S as s)
  EXCEPT
  (SELECT v2.Jahr FROM V as v2 WHERE v2.Name = v1.Name)
);
\end{minted}
\bFussnoteUrl{https://www.geeksforgeeks.org/sql-division/}

\end{enumerate}

%%
% b)
%%

\item Gegeben sind die Tabellen R(A, B) und S(C, D) sowie die folgende View:

ı CREATE VIEW mv (A,C,D) AS

, SELECT DISTINCTA,C,D

»  FROMR,S

« WHEREB=DANDA <> 10;

Auf dieser View wird die folgende Query ausgeführt:

, SELECT DISTINCT A
, FROM mv
;» WHEREC>D:

Konvertieren Sie die Query und die zugrundeliegenden View in einen
Ausdruck der relationalen Algebra in Form eines Operatorbaums. Führen
Sie anschließend eine relationale Optimierung durch. Beschreiben und
begründen Sie dabei kurz jeden durchgeführten Schritt.

%%
% c)
%%

\item Gegeben sind die Relationen R, S und U sowie deren Kardinalitäten
Tr, Ts und Tr:

R (al, a2, a3) Tr = 200
S (al, a2, a3) Ts = 100
U (ul, u2) Iv = 50

Bei der Ausführung des folgenden Query-Plans wurden die Kardinalitäten
der Zwischenergebnisse mitgezählt und an den Kanten notiert.

Leiten Sie aus den Angaben im Ausführungsplan den Anteil der
qualifizierten Tupel aller Prädikate her und geben Sie diese an.

Tx
s0|
N Ral > Vu

N R.a3 = S.a3 U
 N
OR.al > 100 OS.al < 10

R 5
\end{enumerate}

\end{document}
