\documentclass{bschlangaul-aufgabe}
\bLadePakete{mathe}
\begin{document}
\bAufgabenMetadaten{
  Titel = {Aufgabe 4},
  Thematik = {Tupelkalkül bei Dozenten-Datenbank},
  Referenz = 66116-2018-F.T2-TA1-A4,
  RelativerPfad = Examen/66116/2018/03/Thema-2/Teilaufgabe-1/Aufgabe-4.tex,
  ZitatSchluessel = examen:66116:2018:03,
  ZitatBeschreibung = {Thema 2 Teilaufgabe 1 Aufgabe 4
Seite 12-13},
  BearbeitungsStand = mit Lösung,
  Korrektheit = unbekannt,
  Ueberprueft = {unbekannt},
  Stichwoerter = {Tupelkalkül},
  EinzelpruefungsNr = 66116,
  Jahr = 2018,
  Monat = 03,
  ThemaNr = 2,
  TeilaufgabeNr = 1,
  AufgabeNr = 4,
}

Gegeben\index{Tupelkalkül} \footcite[Thema 2 Teilaufgabe 1 Aufgabe 4
Seite 12-13]{examen:66116:2018:03} sei das folgende Datenbank-Schema,
das für die Speicherung der Daten einer Universität entworfen wurde,
zusammen mit einem Teil seiner Ausprägung. Die Primärschlüssel-Attribute
sind jeweils unterstrichen. Die Relation \emph{Dozent} enthält
allgemeine Daten zu den Doz\-entinnen und Dozenten. Dozentinnen und
Dozenten halten Vorlesungen, die in der Relation \emph{Vorlesung}
abgespeichert sind. Wir gehen davon aus, dass es zu jeder Vorlesung
genau einen Dozenten (und nicht mehrere) gibt. Zusätzlich wird in der
Relation \emph{Vorlesung} das \emph{Datum} gespeichert, an dem die
Klausur stattfindet. In der Relation \emph{Student} werden die Daten der
teilnehmenden Studierenden verwaltet, während die Relation
\emph{besucht} Auskunft darüber gibt, welche Vorlesung von welchen
Studierenden besucht wird.
\footcite[Seite 4-5]{db:ab:3}

\begin{mdframed}
\tt
Dozent (\underline{DNR}, DVorname, DNachname, DTitel)\\
Vorlesung (\underline{VNR}, VTitel, Klausurtermin, Dozent)\\
Student (\underline{Matrikelnummer}, SVorname, SNachname, Semesterzahl)\\
besucht (\underline{Student, Vorlesung})
\end{mdframed}

Formulieren Sie die folgenden Anfragen im Tupelkalkül. Datumsvergleiche
können Sie mit $>$, $\geq$, $<$, $\leq$ oder $=$ angeben:

\begin{enumerate}

\item Geben Sie die Vornamen aller Studierenden aus, die die Vorlesung
\emph{„Datenbanksysteme“} besuchen oder besucht haben.

\begin{bAntwort}
$\{s.SVorname |
s \in Student \land
\forall v \in
Vorlesung(
  v.VTitel = \mlq Datenbanksysteme \mrq \Rightarrow
  \exists b \in besucht(
    b.Vorlesung = v.VNR \land
    b.Student = s.Matrikelnummer
  )
)
\}$
\end{bAntwort}

oder

\begin{bAntwort}
$\{\text{s.SVorname} |
\text{s} \in \text{Student} \land
\text{s.Matrikelnummer} = \text{b.Student} \land
\text{b} \in \text{besucht} \land
\text{b.Vorlesung} = \text{v.NVR} \land
\text{v.VNR} \in \text{Vorlesung} \land
\text{v.VTitel} = \mlq \text{Datenbanksysteme} \mrq
\}$
\end{bAntwort}

%%
%
%%

\item Geben Sie die Matrikelnummern der Studierenden an, die keine
Vorlesung mit einem Klausurtermin nach dem 31.12.2017 besuchen oder
besucht haben.

\begin{bAntwort}
\begin{multline*}
\{\text{s.Matrikelnummer} |\\
\text{s} \in \text{Student} \land
\forall \text{v} \in
\text{Vorlesung}(\\
  \text{v.Klausurtermin} > \mlq 31.12.2017 \mrq \Rightarrow\\
  \text{b} \in \text{besucht}(\\
    \text{b.Vorlesung} = \text{v.VNR} \land
    \text{b.Student} = \text{s.Matrikelnummer}\\
  )\\
)\}
\end{multline*}
\end{bAntwort}

%%
%
%%

\item Geben Sie die Matrikelnummern der Studierenden aus, die alle
Vorlesungen von Prof. Dr. Schulz hören oder gehört haben.
\end{enumerate}
\end{document}
