\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}