aboutsummaryrefslogtreecommitdiff
path: root/Info/10/1
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2023-11-15 17:32:24 +0100
committerFlorian Fischer <florian.fischer@muhq.space>2023-11-16 11:28:55 +0100
commit6fcb56c3b2708cd7d41578ae005e5df9f8046312 (patch)
treee8ac4b266f503f1a5cbace9cc02492e1972360db /Info/10/1
parentcbb79a16da340e1cc99e2e365385317ee68c3ef2 (diff)
downloadunterricht-6fcb56c3b2708cd7d41578ae005e5df9f8046312.tar.gz
unterricht-6fcb56c3b2708cd7d41578ae005e5df9f8046312.zip
add initial draft for the first Info KA in 10B
Diffstat (limited to 'Info/10/1')
-rw-r--r--Info/10/1/Aufgaben/joins_bayern.tex34
-rw-r--r--Info/10/1/Aufgaben/klassendiagramm_hoghwarts.tex41
-rw-r--r--Info/10/1/Aufgaben/modellierung_hoghwarts.tex44
-rw-r--r--Info/10/1/Aufgaben/tabellenschema_sportverein_n_m.tex44
4 files changed, 163 insertions, 0 deletions
diff --git a/Info/10/1/Aufgaben/joins_bayern.tex b/Info/10/1/Aufgaben/joins_bayern.tex
new file mode 100644
index 00000000..48deffdf
--- /dev/null
+++ b/Info/10/1/Aufgaben/joins_bayern.tex
@@ -0,0 +1,34 @@
+\begin{Aufg}[Joins]
+Bayrische Gemeinden werden in einer Datenbank mit folgenden Tabellen verwaltet: \\
+\texttt{Gemeinde[\underline{schluessel}: TEXT, name: TEXT: plz: INTEGER, flaeche: INTEGER]} \\
+\texttt{Nachbargemeinde[\underline{\dashuline{schluessel1: TEXT}, \dashuline{schluessel2: TEXT}}]} \\
+\texttt{Schwimmbad[\underline{id:INTEGER}, name:TEXT, art:TEXT, \dashuline{gemeindeschluessel:TEXT}]} \\
+
+\begin{enumerate}[a)]
+\item Formuliere ein SQL-Statement, das die Namen aller benachbarten Gemeinden liefert.
+\item Formuliere ein SQL-Statement, das die \textbf{Anzahl} der Schwimmbäder in den Nachbargemeinden von \textbf{Bayreuth} ausgiebt.
+\end{enumerate}
+\end{Aufg}
+
+\begin{Lsg}
+\begin{enumerate}[a)]
+\item
+\begin{minted}{sql}
+SELECT g1.name, g2.name
+FROM Gemeinde AS g1, Gemeinde AS g2, Nachbargemeinde
+WHERE g1.schluessel = Nachbargemeinde.schluessel1
+ AND g2.schluessel = Nachbargemeinde.schluessel2;
+\end{minted}
+\BE{1} Select \BE{2} From \BE{2} Where
+\item
+\begin{minted}{sql}
+SELECT Count(Schwimmbad.id)
+FROM Gemeinde AS g1, Gemeinde AS g2, Nachbargemeinde, Schwimmbad
+WHERE g1.schluessel = Nachbargemeinde.schluessel1
+ AND g2.schluessel = Nachbargemeinde.schluessel2
+ AND g1.name = "Bayreuth"
+ AND g2.schluessel = Schwimmbad.gemeindeschluessel;
+\end{minted}
+\BE{1} Select+Count \BE{1} From+Schwimmbad \BE{2} Where Bayreuth | 1,n Join
+\end{enumerate}
+\end{Lsg}
diff --git a/Info/10/1/Aufgaben/klassendiagramm_hoghwarts.tex b/Info/10/1/Aufgaben/klassendiagramm_hoghwarts.tex
new file mode 100644
index 00000000..fc33bc62
--- /dev/null
+++ b/Info/10/1/Aufgaben/klassendiagramm_hoghwarts.tex
@@ -0,0 +1,41 @@
+\begin{Aufg}[Klassendiagramm]
+\begingroup
+\setstretch{2}% Adjust line spacing
+Das \textit{„Warzenschwein-Internat für Zauberei“} teilt seine \textbf{Schüler} in vier \textbf{Häuser} auf: \textbf{Ritter}, \textbf{Drachen}, \textbf{Elfen} und \textbf{Zwerge}.
+Der bekannteste Schüler ist \textbf{Harald Töpfer}.
+\textbf{Frau Gongalle} ist \textbf{Lehrkraft} und Oberhaupt des Hauses der Ritter.
+\textbf{Herr Moodi} ist auch Lehrkraft, leitet aber kein Haus. Ein Haus wird nur von genau einer Lehrkraft geleitet.
+\par
+\endgroup
+\begin{enumerate}[a)]
+\item Schreibe in obigem Text über die Objekte ein \textbf{O} und über die Klassen ein \textbf{K}, so dass alle fettgedruckten Begriffe gekennzeichnet sind.
+ Kennzeichne mit einem Pfeil, zu welcher Klasse die Objekte jeweils gehören.
+\item Vervollständige das Klassendiagramm, aber nur mit den oben stehenden Angaben.
+ Bezeichne die zwei Beziehungen und trage die Kardinalitäten ein.
+\end{enumerate}
+
+\iflehrer{}{
+\begin{tikzpicture}
+\node[draw, minimum height=1.5cm, minimum width=4cm] (s) {};
+\node[right=7cm of s, draw, minimum height=1.5cm, minimum width=4cm] (l) {};
+\node[below=1.5cm of s, xshift=5.5cm, draw, minimum height=1.5cm, minimum width=4cm] (h) {};
+\draw (s) -- (h);
+\draw (h) -- (l);
+\end{tikzpicture}}
+\end{Aufg}
+
+\begin{Lsg}
+\begin{enumerate}[a)]
+\item
+\BE{1} auf Objekte, \BE{1} auf Klassen, \BE{1} auf die Pfeile
+
+\item \BE{3} auf richtige Klassen und \BE{6} fuer die beiden Beziehungen \\
+\begin{tikzpicture}
+\node[draw, minimum height=1.5cm, minimum width=4cm] (s) {Schueelr};
+\node[right=7cm of s, draw, minimum height=1.5cm, minimum width=4cm] (l) {Lehrkraft};
+\node[below=1.5cm of s, xshift=5.5cm, draw, minimum height=1.5cm, minimum width=4cm] (h) {Haus};
+\draw (s) -- (h) node[midway] {m gehoert an > n};
+\draw (h) -- (l) node[midway] {1 < leitet 0..1};
+\end{tikzpicture}
+\end{enumerate}
+\end{Lsg}
diff --git a/Info/10/1/Aufgaben/modellierung_hoghwarts.tex b/Info/10/1/Aufgaben/modellierung_hoghwarts.tex
new file mode 100644
index 00000000..af0155da
--- /dev/null
+++ b/Info/10/1/Aufgaben/modellierung_hoghwarts.tex
@@ -0,0 +1,44 @@
+\begin{Aufg}[Modellierung]
+Die Internatsverwaltung möchte die Schüler nun für verschiedene Dienste einteilen, z.B. für Küchenarbeiten, Gartenarbeiten, etc.
+Ein Dienst nimmt einen Schüler jeweils vollständig in Anspruch.
+Dazu legt die Verwaltung in einer Datenbank die Tabellen \textit{„Schüler“} und \textit{„Dienst“} an.
+Ergänze die Beziehung und ihre Kardinalität, alle nötigen und sinnvollen Attribute (mindestens drei Attribute), und kennzeichne Fremd und Primärschlüssel wie üblich. \\[0.3cm]
+
+\begin{tikzpicture}
+\begin{class}[text width=4cm]{Schüler}{0,0}
+\attribute{\phantom{Mitglieds-Nr}}
+\attribute{\phantom{Name}}
+\attribute{\phantom{Vorname}}
+\attribute{\phantom{Dienst}}
+\end{class}
+
+\begin{class}[text width=4cm]{Dienst}{11,0}
+\attribute{\phantom{Name}}
+\attribute{\phantom{Ort}}
+\attribute{\phantom{Zeit}}
+\end{class}
+\end{tikzpicture}
+\end{Aufg}
+
+\begin{Lsg}
+\begin{tikzpicture}
+\begin{class}[text width=4cm]{Schüler}{0,0}
+\attribute{\underline{Schüler-Nr}}
+\attribute{Name}
+\attribute{Vorname}
+\attribute{\dashuline{Dienst}}
+\end{class}
+
+\begin{class}[text width=4cm]{Dienst}{11,0}
+\attribute{\underline{Name}}
+\attribute{Ort}
+\attribute{Zeit}
+\end{class}
+\association{Schüler}{m}{eingeteilt fuer > }{Dienst}{< Wird erledigt von}{1}
+\end{tikzpicture}
+Pro Klasse: 1 BE auf Attribute, 1 BE auf eindeutigen Primärschlüssel => \BE{4} insgesamt
+\BE{2} auf die Kardinalität,
+\BE{1} für Beziehungslinie, Bezeichnung und Leserichtung
+\BE{2} auf Fremdschlüssel an richtiger Position (auf n-Seite)
+Als Primärschlüssel bei Dienst ist auch Tätigkeit möglich, oder Tätigkeit und Ort
+\end{Lsg}
diff --git a/Info/10/1/Aufgaben/tabellenschema_sportverein_n_m.tex b/Info/10/1/Aufgaben/tabellenschema_sportverein_n_m.tex
new file mode 100644
index 00000000..b8731082
--- /dev/null
+++ b/Info/10/1/Aufgaben/tabellenschema_sportverein_n_m.tex
@@ -0,0 +1,44 @@
+\begin{Aufg}[Tabellenschema]
+In einem Sportverein soll nach folgendem Klassendiagramm eine relationale Datenbank erstellt werden: \\[0.1cm]
+
+\begin{tikzpicture}
+\begin{class}[text width=3cm]{Mitglied}{0,0}
+\attribute{Mitglieds-Nr}
+\attribute{Name}
+\attribute{Vorname}
+\end{class}
+
+\begin{class}[text width=3cm]{Sportart}{12,0}
+\attribute{Name}
+\attribute{Ort}
+\attribute{Zeit}
+\end{class}
+\association{Mitglied}{m}{betreibt > }{Sportart}{< Wird betrieben von}{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 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{Mitglied[\underline{MitgliedsNr: Zahl}, Name: Text, Vorname: Text]} \\
+ \texttt{Sportart[\underline{Name: Text}, Ort: Text, Zeit: Datum]} \\
+ \texttt{betreibt[\underline{\mydash{Mitglied: Zahl}, \mydash{Sportart: Text}}]} \\[0.3cm]
+ Zeit 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}