aboutsummaryrefslogtreecommitdiff
path: root/Info/10/1
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2025-11-25 17:45:07 +0100
committerFlorian Fischer <florian.fischer@muhq.space>2025-11-25 17:45:07 +0100
commit07ce7ac1514c97883bb5d519ed5db3ac2476db44 (patch)
tree36ae5580bfc837e508284fa748af0eaa1be7fddb /Info/10/1
parent9d74995f4b4328cc95097e4f86253b8a4adb51a0 (diff)
downloadunterricht-07ce7ac1514c97883bb5d519ed5db3ac2476db44.tar.gz
unterricht-07ce7ac1514c97883bb5d519ed5db3ac2476db44.zip
add second version of the 10th grade exam
Diffstat (limited to 'Info/10/1')
-rw-r--r--Info/10/1/Aufgaben/joins_social_media.tex35
-rw-r--r--Info/10/1/Aufgaben/tabellenschema_filme_n_m.tex46
2 files changed, 81 insertions, 0 deletions
diff --git a/Info/10/1/Aufgaben/joins_social_media.tex b/Info/10/1/Aufgaben/joins_social_media.tex
new file mode 100644
index 00000000..d86a16e7
--- /dev/null
+++ b/Info/10/1/Aufgaben/joins_social_media.tex
@@ -0,0 +1,35 @@
+\renewcommand{\Verteilung}{5+4}
+\begin{Aufg}[Joins]
+Ein soziales Netzwerk verwaltet alle User, Freundschaftsbeziehungen, sowie alle Posts in einer Datenbank mit folgenden Tabellen: \\
+\texttt{Nutzer[\underline{nutzername}: TEXT, vorname: TEXT, nachname: TEXT, alter: DATE]} \\
+\texttt{Freundschaft[\underline{\dashuline{freund1: TEXT}, \dashuline{freund2: TEXT}}]} \\
+\texttt{Posts[\underline{id: INTEGER}, inhalt: TEXT, datum: DATE, \dashuline{nutzer: TEXT}]} \\
+
+\begin{enumerate}[a)]
+\item Formuliere eine SQL-Abfrage, die die Namen aller befreundeten Nutzer liefert.
+\item Formuliere eine SQL-Abfrage, die die \textbf{Anzahl} der Posts von Freunden des Nutzers \textbf{rezo} ausgiebt.
+\end{enumerate}
+\end{Aufg}
+
+\begin{Lsg}
+\begin{enumerate}[a)]
+\item
+\begin{minted}{sql}
+SELECT n1.name, n2.name
+FROM Nutzer AS n1, Nutzer AS n2, Freundschaft
+WHERE f1.nutzername = Feundschaft.freund1
+ AND n2.nutzername = Freundschaft.freund2;
+\end{minted}
+\BE{1} Select \BE{2} From \BE{2} Where
+\item
+\begin{minted}{sql}
+SELECT Count(Posts.id)
+FROM Nutzer AS n1, Nutzer AS n2, Freundschaft, Posts
+WHERE n1.nutzername = Freundschaft.freund1
+ AND n2.nutzername = Freundschaft.freund2
+ AND n1.nutzername = "rezo"
+ AND n2.nutzername = Posts.nutzer;
+\end{minted}
+\BE{1} Select+Count \BE{1} From+Posts \BE{2} Where Rezo | 1,n Join
+\end{enumerate}
+\end{Lsg}
diff --git a/Info/10/1/Aufgaben/tabellenschema_filme_n_m.tex b/Info/10/1/Aufgaben/tabellenschema_filme_n_m.tex
new file mode 100644
index 00000000..05fa51e0
--- /dev/null
+++ b/Info/10/1/Aufgaben/tabellenschema_filme_n_m.tex
@@ -0,0 +1,46 @@
+\renewcommand{\Verteilung}{7+3}
+\begin{Aufg}[Tabellenschema]
+Für eine Streaming-Plattform soll nach folgendem Klassendiagramm eine relationale Datenbank erstellt werden: \\[0.1cm]
+
+\begin{tikzpicture}
+\begin{class}[text width=4cm]{Film}{0,0}
+\attribute{Titel}
+\attribute{Länge}
+\attribute{Erscheinungsdatum}
+\end{class}
+
+\begin{class}[text width=3cm]{Actor}{12,0}
+\attribute{ActorNr}
+\attribute{Vorname}
+\attribute{Name}
+\end{class}
+\association{Actor}{m}{$< $spielt in}{Film}{}{n}
+\end{tikzpicture}
+
+\begin{enumerate}[a)]
+\item Gib die Tabellenschemata inklusive sinnvoller Datentypen aller nötigen Tabellen an und markiere darin Fremd- und Primärschlüssel wie üblich.
+\item Nenne und beschreibe knapp zwei Probleme und deren Fachbegriffe die auftreten könnten, wenn zur Speicherung nur eine einzige Tabelle verwendet wird.
+\end{enumerate}
+\end{Aufg}
+
+\begin{Lsg}
+\begin{enumerate}[a)]
+\item
+ \texttt{Film[\underline{Titel: Text, Erscheinungsdatum: Date}, Länge: INTEGER]} \\
+ \texttt{Actor[\underline{ActorNr: INTEGER}, Vorname: Text, Name: TEXT]} \\
+ \texttt{spieltin[\underline{\dashuline{ActorNr: INTEGER}, \dashuline{Titel: Text, Erscheinungsdatum: DATE}}]} \\[0.3cm]
+ Künstlicher Primärschlüssel bei Film auch möglich \\
+ Erscheinungsdatum kann auch Typ Text sein \\
+ Datentypen müssen bei Primär- und Fremdschlüsselbeziehung übereinstimmen \\
+ \BE{2} auf die korrekte Notation (Tabellenname, Klammern, Doppelpunkte, Kommas, Attributnamen, Datentypen) \\
+ \BE{3} auf die korrekte Beziehungstabelle (Primärschlüssel, zwei Fremdschlüssel) \\
+ \BE{2} auf die vollständigen anderen beiden Tabelle \\
+\item
+ \begin{itemize}
+ \item UPDATE-Anomalie: Vergessen von Einträgen bei Änderungen
+ \item INSERT-Anomalie: Neue Sportart könnte nicht ohne Mitglieder angelegt werden
+ \item DELETE-Anomalie: Eine Sportart würde bei der Löschung des letzten Mitglieds ebenfalls gelöscht werden
+ \end{itemize}
+ 0.5 BE pro Fachbegriff und 1 BE pro Beschreibung $\Rightarrow$ \BE{3}
+\end{enumerate}
+\end{Lsg}