2
0
Fork 0
mirror of https://github.com/MartinThoma/LaTeX-examples.git synced 2025-04-19 11:38:05 +02:00

db getext

This commit is contained in:
Martin Thoma 2013-07-27 17:14:28 +02:00
parent a430494180
commit fe6543ad0b
13 changed files with 315 additions and 0 deletions

View file

@ -0,0 +1,7 @@
SOURCE = musterloesung-db-2012-09-24
make:
pdflatex -shell-escape $(SOURCE).tex -output-format=pdf
make clean
clean:
rm -rf $(TARGET) *.class *.html *.log *.aux *.out *.pyg

View file

@ -0,0 +1 @@
Auf Basis von [Nilans und Stephans pastebin](http://pastebin.com/JfDfrVMV) entstanden.

View file

@ -0,0 +1,11 @@
CREATE VIEW FriendshipSymmetric AS (
(
SELECT person1, person2
FROM Friendship
)
UNION
(
SELECT person2 AS person1, person1 AS person2
FROM Friendship
)
)

View file

@ -0,0 +1,10 @@
SELECT f1.person2, f2.person2
FROM FriendshipSymmetric f1
JOIN FriendshipSymmetric f2
ON f1.person1 = f2.person1
LEFT JOIN FriendshipSymmetric f3
ON f1.person2 = f3.person1 AND f2.person2 = f3.person2
WHERE f1.person2 != f2.person2
AND f1.person1 = <id>
AND p3.person1 IS NULL
AND p3.person2 IS NULL

View file

@ -0,0 +1,12 @@
SELECT f1.person2, f2.person2
FROM (
SELECT person2 FROM FriendshipSymmetric WHERE person1 = <id>
) f1
JOIN ON
(
SELECT personni FROM FriendshipSymmetric WHERE person1 = <id>
) f2
EXCEPT
(
SELECT * FROM FriendshipSymmetric
)

View file

@ -0,0 +1,165 @@
\documentclass[a4paper,9pt]{scrartcl}
\usepackage{amssymb, amsmath} % needed for math
\usepackage[utf8]{inputenc} % this is needed for umlauts
\usepackage[ngerman]{babel} % this is needed for umlauts
\usepackage[T1]{fontenc} % this is needed for correct output of umlauts in pdf
\usepackage{pdfpages} % Signatureinbingung und includepdf
\usepackage{geometry} % [margin=2.5cm]layout
\usepackage{hyperref} % links im text
\usepackage{color}
\usepackage{framed}
\usepackage{enumerate} % for advanced numbering of lists
\usepackage{marvosym} % checkedbox
\usepackage{wasysym}
\usepackage{braket} % for \Set{}
\usepackage{pifont}% http://ctan.org/pkg/pifont
\usepackage{minted} % needed for the inclusion of source code
\usepackage{tikz}
\usetikzlibrary{arrows,positioning, calc,lindenmayersystems,decorations.pathmorphing,intersections}
\tikzstyle{vertex}=[draw,
fill=yellow,
circle,minimum size=10pt,inner sep=0pt]
\newcommand{\cmark}{\ding{51}}%
\newcommand{\xmark}{\ding{55}}%
\hypersetup{
pdfauthor = {Martin Thoma},
pdfkeywords = {Datenbanksysteme,KIT},
pdftitle = {Musterlösung: Datenbanksysteme}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Begin document %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\section{Aufgabe 1 - Funktionale Abhängigkeiten}
\subsection{Teilaufgabe a)}
Gilt $F \Rightarrow f$?
\begin{tabular}{clccl}
& Funktionale Abhängigkeit $f$ & & Begründung\\
\hline\hline
1 & $DI \rightarrow BCDEFI$ & \xmark & kein F\\
2 & $BDG \rightarrow ABCDEFHH$ & \cmark &\\
3 & $DHI \rightarrow ACDGI$ & \xmark & kein A\\
4 & $BCDEGI \rightarrow ABCDEFGHI$ & \cmark &\\
5 & $AF \rightarrow ABCEGH$ & \cmark &\\
6 & $ABCDE \rightarrow ABCEFHI$ & \xmark & kein I\\
7 & $DI \rightarrow CFGI$ & \xmark & kein C\\
8 & $ADFI \rightarrow BCDEFGHI$ & \cmark &\\
9 & $GI \rightarrow BDEFG$ & \xmark & kein B\\
\end{tabular}
\subsection{Teilaufgabe b)}
Schlüssel in R:
\begin{itemize}
\item $\Set{I, A}$
\item $\Set{I, B}$
\item $\Set{I, C}$
\end{itemize}
Die Relation befindet sich nur in 1NF, da $I \rightarrow H$ eine
partielle Abhängigkeit darstellt. Daher kann die Relation nicht in
2NF sein.
\subsection{Teilaufgabe c)}
\begin{align*}
F^{(2)} = \{ & A \rightarrow B,\\
&AI \rightarrow \delta,\\
& B \rightarrow C, B \rightarrow D,\\
& C \rightarrow A,C \rightarrow D,C \rightarrow F,\\
& D \rightarrow E,D \rightarrow F,D \rightarrow G,D \rightarrow H,D \rightarrow H,\\
& F \rightarrow G,\\
& I \rightarrow H
\}
\end{align*}
\begin{align*}
F^{(3)} = \{ & A \rightarrow B,\\
&AI \rightarrow \delta,\\
& B \rightarrow C, B \rightarrow D,\\
& C \rightarrow A,\\
& D \rightarrow E,D \rightarrow F,D \rightarrow G,D \rightarrow H,\\
& F \rightarrow G,\\
& I \rightarrow H
\}
\end{align*}
aufgelöst wurden wie folgt:
\begin{tabular}{l|l}
& redundant durch\\
\hline
$C \rightarrow D$ & $C \rightarrow A \land A \rightarrow B \land B \rightarrow D$\\
$C \rightarrow F$ & $C \rightarrow A \land A \rightarrow B \land B \rightarrow D \land D \rightarrow F$\\
$D \rightarrow G$ & $D \rightarrow F \land F \rightarrow G$\\
\end{tabular}
ergibt die Zerlegung
\begin{align*}
R = \{\\
& (\Set{A, B}, \Set{\Set{A}}),\\
&(\Set{A, I}, \Set{\Set{A, I}}),\\
& (\Set{B, C, D}, \Set{\Set{B}}),\\
& (\Set{C, A}, \Set{\Set{C}}),\\
& (\Set{D, E, F, H},\Set{\Set{D}}),\\
& (\Set{F, G}, \Set{\Set{F}}),\\
& (\Set{I, H}, \Set{\Set{I}})\\
\}
\end{align*}
\clearpage
\section{Aufgabe 2 - SQL}
\subsection{Teilaufgabe a)}
\begin{tikzpicture} [scale=1.2]
\node (a)[vertex] at (1,2) {1};
\node (b)[vertex] at (2,2) {2};
\node (c)[vertex] at (3,1) {3};
\node (d)[vertex] at (2,0) {4};
\node (e)[vertex] at (1,0) {5};
\node (f)[vertex] at (0,1) {6};
\foreach \from/\to in {a/b,a/c,a/d,b/c,b/d,c/d,d/e,e/f}
\draw[line width=1.5pt] (\from) -- (\to);
\end{tikzpicture}
\subsection{Teilaufgabe b)}
\inputminted[linenos, numbersep=5pt, tabsize=4]{sql}{d2b.sql}
\subsection{Teilaufgabe c)}
\subsubsection{Version A}
\inputminted[linenos, numbersep=5pt, tabsize=4]{sql}{d2c1.sql}
\subsubsection{Version B}
\inputminted[linenos, numbersep=5pt, tabsize=4]{sql}{d2c2.sql}
\section{Aufgabe 3 - Histories}
\subsubsection{Teilaufgabe a)}
\begin{itemize}
\item[H1] Es gibt folgende Kanten:
(12, xyz), (13, xy), (23, y), (32, y).\\
Somit ist ein Zykel zwischen 2 und 3 $\Rightarrow$ nicht serialisierbar
\item[H2] (21, xyz), (23, y), (31, xy).\\
Somit keine Zykel und serialisierbar
\end{itemize}
\subsubsection{Teilaufgabe b) und c)}
(Y = erfüllt, N = nicht erfüllt)
\begin{itemize}
\item[H1]
\begin{itemize}
\item T3 reads y from T2 NN
\item T2 reads x from T3 YN
\item T2 reads z from T1 YN
\item T3 reads x from T1 YN
\end{itemize}
\item[H2]
\begin{itemize}
\item T1 reads y from T3 YN
\item H1 ist nicht rücksetzbar (also weder in RC, ACA oder ST)
\item H2 ist in RC (also nicht in ACA oder ST)
\end{itemize}
\end{itemize}
\end{document}

View file

@ -0,0 +1,7 @@
SOURCE = musterloesung-db-klausur-a
make:
pdflatex -shell-escape $(SOURCE).tex -output-format=pdf
make clean
clean:
rm -rf $(TARGET) *.class *.html *.log *.aux *.out *.pyg

View file

@ -0,0 +1,6 @@
CREATE VIEW GoalsPerPlayer AS (
SELECT player_id, name, team, SUM(goals) AS sum_goals
FROM Player
JOIN Participation ON Participation.player_id = Player.player_id
GROUP BY player_id
)

View file

@ -0,0 +1,10 @@
CREATE VIEW AlwaysParticipating AS (
SELECT player_id, name
FROM Player
JOIN Participation ON Player.player_id = Participation.player_id
HAVING SUM(Participation.cup_id) =
(
SELECT SUM(cup_id)
FROM cup_id
)
)

View file

@ -0,0 +1,86 @@
\documentclass[a4paper,9pt]{scrartcl}
\usepackage{amssymb, amsmath} % needed for math
\usepackage[utf8]{inputenc} % this is needed for umlauts
\usepackage[ngerman]{babel} % this is needed for umlauts
\usepackage[T1]{fontenc} % this is needed for correct output of umlauts in pdf
\usepackage{pdfpages} % Signatureinbingung und includepdf
\usepackage{geometry} % [margin=2.5cm]layout
\usepackage{hyperref} % links im text
\usepackage{color}
\usepackage{framed}
\usepackage{enumerate} % for advanced numbering of lists
\usepackage{marvosym} % checkedbox
\usepackage{wasysym}
\usepackage{braket} % for \Set{}
\usepackage{pifont}% http://ctan.org/pkg/pifont
\usepackage{minted} % needed for the inclusion of source code
\newcommand{\cmark}{\ding{51}}%
\newcommand{\xmark}{\ding{55}}%
\hypersetup{
pdfauthor = {Martin Thoma},
pdfkeywords = {Datenbanksysteme,KIT},
pdftitle = {Musterlösung: Datenbanksysteme}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Begin document %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\section{Aufgabe D1 - Multiple Choice}
\begin{tabular}{p{12cm}cc}
& Richtig & Falsch\\
Die Komplexität des Nested-Loop Joins ist stets höher als die des Merge-Joins. & \Square & \Square\\
Wenn die Daten vorab in sinnvoller Weise sortiert wurden, kann dies die Ausführung des Nested Loops beschleunigen. & \Square & \Square\\
Die Berechnung der Intervall-Grenzen ist beim Equi-Depth Histogramm aufwendiger als beim Equi-Width Histogramm. & \Square & \Square\\
Eine zustandsbehaftete Ausführung hat die Eigenschaft, dass der Zustand explizit erfasst und in einer Datenbank gespeicher wird. & \Square & \Checkedbox\\
Beim asynchronen Zugriff wird die Kontrolle an den Aufrufer zurückgegeben, sobald die letzte Kopie des Datenobjekts geschrieben wurde. & \Square & \Square\\
Eine sinnvolle Möglichkeit der Auflösung von Inkonsistenzen von mehreren Versionen des Einkaufswagens ist, ihre Schnittmenge zu berechnen. & \Square & \Square\\
Der Kommunikationsaufwand in strukturierten P2P-Systememn ... & \Square & \Square\\
Vector Clocks sind Listen ... & \Square & \Square\\
PIQL ... & \Square & \Square\\
PIQL ... & \Square & \Square\\
Im PIQL ... & \Square & \Square\\
Der DataStop-Operator ... & \Square & \Square\\
\end{tabular}
\section{Aufgabe D2 - Normalformen}
\subsection{Teilaufgabe a)}
$\Set{D, B}$ und $\Set{D, C}$
\subsection{Teilaufgabe b)}
\begin{itemize}
\item $D^+ = \Set{A, D, E, F, G}$
\item $B^+ = C^+ = \Set{A, B, C, E, F, G}$
\end{itemize}
TODO: Was kann ich daraus auf die NF folgern?
\subsection{Teilaufgabe c)}
TODO
\clearpage
\section{D3 - SQL}
\subsection{Teilaufgabe a)}
\inputminted[linenos, numbersep=5pt, tabsize=4]{sql}{d3a.sql}
\subsection{Teilaufgabe b)}
\inputminted[linenos, numbersep=5pt, tabsize=4]{sql}{d3b.sql}
TODO: Geht das schöner?
\subsection{Teilaufgabe c)}
TODO: Keine Ahnung, was das soll. Das WHERE verwirrt mich. Werden hier
nur Teams angeschaut, die weniger Punkte haben also alle Spieler ohne
Mannschaft zusammen?
\section{D4 - Transaktionen und Histories}
TODO: Transaktionen
\subsection{Teilaufgabe a)}
TODO: Serialisierbarkeitsgraph
\subsection{Teilaufgabe b)}
TODO: Serialisierbarkeitsgraph
\end{document}