uni/gdb/G62B2_Dittrich-Lindemann-Ma...

111 lines
8.5 KiB
TeX

\documentclass[ngerman]{gdb-aufgabenblatt}
\usepackage{tikz-er2}
\renewcommand{\Aufgabenblatt}{2}
\renewcommand{\Ausgabedatum}{Mi. 30.10.2013}
\renewcommand{\Abgabedatum}{Do. 14.11.2013}
\renewcommand{\Gruppe}{Tim Dittrich, Sebastian Lindemann, Jim Martens}
% define how the sections are rendered
\def\thesection{Aufgabe \arabic{section}:}
\def\thesubsection{\alph{subsection})}
\def\thesubsubsection{(\roman{subsubsection})}
\usetikzlibrary{positioning}
\usetikzlibrary{shadows}
\tikzstyle{every entity} = [top color=white, bottom color=blue!30,
draw=blue!70, drop shadow]
\tikzstyle{every weak entity} = [drop shadow={shadow xshift=.7ex,
shadow yshift=-.7ex}]
\tikzstyle{every attribute} = [top color=white, bottom color=blue!30,
draw=blue!70, node distance=1cm, drop shadow]
\tikzstyle{every relationship} = [top color=white, bottom color=blue!30,
draw=blue!70, drop shadow]
\tikzstyle{every isa} = [top color=white, bottom color=orange!50,
draw=orange!70, drop shadow]
\begin{document}
\section{Informationsmodellierung: Erstellung eines ER-Modells}
\subsection{} %a
\begin{tikzpicture}[node distance=1.31cm, every edge/.style={link}]
\node[entity] (film) {Film};
\node[attribute] (filmName) [above left=of film] {\key{Titel}} edge (film);
\node[attribute] (filmStart) [left=of film] {ersterDrehtag} edge (film);
\node[attribute] (filmEnde) [below left=of film] {letzterDrehtag} edge (film);
\node[relationship] (relFilmStud) [right=of film] {produziert} edge node [above left=0 and 0.2] {1} (film);
\node[entity] (studio) [right=of relFilmStud] {Studio} edge node [above right=0 and 0.2] {n} (relFilmStud);
\node[attribute] (studName) [above=of studio] {\key{Name}} edge (studio);
\node[relationship] (relPersStud) [right=of studio] {leitet} edge node [above left=0 and 0.2] {n} (studio);
\node[entity] (pers) [below left=3cm and 2cm of relPersStud] {Person} edge node [below left=1 and 1.2] {1} (relPersStud);
\node[attribute] (persName) [above right=of pers] {\key{Name}} edge (pers);
\node[attribute] (persVName) [right=of pers] {\key{Vorname}} edge (pers);
\node[attribute] (persGebDat) [below right=of pers] {Geb.Datum} edge (pers);
\node[isa] (isaPers) [below=of pers] {Is-a} edge[->] (pers);
\node[entity] (regi) [left=of isaPers] {Regisseur} edge[->] (isaPers);
\node[entity] (schau) [below right=of isaPers] {Schauspieler} edge[->] (isaPers);
\node[relationship] (relMarkSchau) [below=of schau] {hat} edge node [above right=0.2 and 0] {n} (schau);
\node[entity] (marken) [below=of relMarkSchau] {Markenzeichen} edge node [below right=0.3cm and 0.05cm] {m} (relMarkSchau);
\node[relationship] (relSchauFilmChar) [left=of relMarkSchau] {spielt} edge node [above right=0.4 and 0.9] {n} (schau) edge[bend left] node [above left=5.4 and 1.1] {m} (film);
\node[entity] (char) [below=of relSchauFilmChar] {Charakter} edge node [below left=0.2 and 0] {1} (relSchauFilmChar);
\node[attribute] (charID) [below=of char] {\key{Char.ID}} edge (char);
\node[attribute] (charName) [below right=of char] {Name} edge (char);
\node[relationship] (relFilmGenre) [below=of filmEnde] {gehört zu} edge node [above right=1.2 and 1] {4} (film);
\node[entity] (genre) [below=of relFilmGenre] {Genre} edge node [below left=0.3 and 0] {n} (relFilmGenre);
\node[attribute] (genreName) [below=of genre] {\key{Name}} edge (genre);
\node[relationship] (relRegFilm) [left=of pers] {führt Regie} edge node [below left=0 and 0] {n} (regi) edge node [above left=0.8 and 0.4] {1} (film);
\node[relationship] (relRegiGenre) [right=of genre] {präferiert} edge node [above left=0 and 0.2] {n} (genre) edge node [above right=0.2 and 0.2] {1} (regi);
\node[entity] (verh) [left=of char] {Verhandlung};
\node[attribute] (verhDatum) [above left=of verh] {Datum} edge (verh);
\node[attribute] (verhBudget) [left=of verh] {Budget} edge (verh);
\node[relationship] (relRegiStud) [left=of relSchauFilmChar] {nimmt teil} edge node [below left=0.1 and 0.1] {1} (verh) edge node [above right=1 and 0.2] {n} (regi) edge node [above right=4.4 and 1.7] {m} (studio);
\end{tikzpicture}
\subsection{} %b
Ein Schauspieler kann nicht an Filmen mitwirken, deren Drehzeiten sich vor seiner Geburt befinden.
Ein Regisseur kann nicht bei Filmen Regie führen, deren Drehzeiten vor seiner Geburt liegen.
\section{Informationsmodellierung: Beschreibung von ER-Modellen}
\subsection{} %a
\begin{itemize}
\item Ein Student hat eine Matrikelnummer und einen Namen.
\item Die Matrikelnummer ist der primäre Schlüssel von Studenten.
\item Ein Student ist in genau einem Studiengang immatrikuliert.
\item Ein Studiengang hat einen Namen, der auch primärer Schlüssel ist.
\item Es können beliebig viele Studenten in einem Studiengang immatrikuliert sein.
\end{itemize}
\subsection{} %b
\begin{itemize}
\item Eine Universität hat einen Namen, der auch primärer Schlüssel ist.
\item Zu einer Universität gehören mindestens ein bis beliebig viele Hörsäle.
\item Die Universität ist ein starker Entitytyp. Der Hörsaal ist ein schwacher Entitytyp.
\item Ein Hörsaal besteht aus einem Sekundärschlüssel (Name) und der Anzahl seiner Plätze (\#Plaetze).
\item Ein Hörsaal gehört zu genau einer Universität und ist existenzabhängig von dieser.
\end{itemize}
\subsection{} %c
\begin{itemize}
\item Ein Auftrag besteht aus einer Auftragsnummer und einem Datum. Die Auftragsnummer (ANR) ist der primäre Schlüssel.
\item Ein Ersatzteil besteht aus einem Namen, einem Automodell und einem Preis.
\item Die Kombination Name und Automodell ist der primäre Schlüssel.
\item Ein Reparaturtyp besteht aus einer Art und einem Festpreis. Die Art ist der primäre Schlüssel.
\item Zu jedem Auftrag kann es beliebig viele Ersatzteile und Reparaturtypen geben.
\item Zu jedem Ersatzteil kann ess beliebig viele Aufträge und Reparaturtypen geben.
\item Zu jedem Reparaturtyp kann es beliebig viele Ersatzteile und Aufträge geben.
\item Die Beziehung (Relationship) Reparatur hat eine Uhrzeit und ein Datum.
\end{itemize}
\subsection{} %d
\begin{itemize}
\item Die drei Entity-Typen besitzen keine Attribute und somit auch keinen Primärschlüssel.
\item Sie werden durch die Relationship "`Fußballspiel"' in Verbindung gesetzt.
\item Der Entity-Typ Mannschaft zeichnet sich durch eine reflexive Relationship aus. Daher können Mannschaften auch untereinander in Beziehung gesetzt werden.
\item Eine Mannschaft kann in keinem oder beliebig vielen Fußballspielen teilnehmen.
\item Ein Schiedsrichter kann in keinem oder beliebig vielen Fußballspielen teilnehmen.
\item In einem Stadion können keine oder beliebig viele Fußballspiele stattfinden.
\item An einem Fußballspiel können keine oder beliebig viele Mannschaften teilnehmen.
\end{itemize}
\section{Schlüsselkandidaten}
\subsection{} %a
Ein Schlüsselkandidat muss eindeutig sein. Das bedeutet, dass über den Schlüsselkandidat eine Entität eindeutig identifizierbar sein muss. Im gegebenen Beispiel kommen demnach nur das 2. Fach, Telefonnummer und PLZ in Frage. Außerdem muss er minimal sein. Das bedeutet, dass es keinen anderen Schlüsselkandidaten mit weniger Attributen geben darf. Demnach käme die PLZ und das 2. Fach in Betracht.
Die Attributkombination Vorname und Hausnummer ist kein Schlüsselkandidat, da es eine Frida Weiß mit Hausnummer 8 und eine Frida Müller mit Hausnummer 8 gibt. Damit gibt es zwei Entitäten mit den gleichen Werten für Vorname und Hausnummer.
\subsection{} %b
Bei einer unspezifischen Menge an Studenten kann sich jede der Attribute wiederholen. Daher eignet sich keines der Attribute als eindeutiger Schlüsselkandidat. Mögliche Beispiele sind 20 Studenten, die alle aus Fbach kommen, in der gleichen Straße wohnen und die gleiche Fächerkombi studieren. Damit haben sie die gleiche PLZ und die gleiche Vorwahl. Damit bleiben nur Vor- und Nachname, Geburtsdatum, Hausnummer und der restliche Teil der Telefonnummer als Schlüssel. Allerdings gibt es gleichzeitig zwei Geschwister aus Bheim, die außer dem Vornamen keinen Unterschied aufweisen. Schließlich gibt es einen Peter aus Aheim und einen Peter aus Cfeld. Somit ist keines der vorliegenden Attribute eindeutig als Schlüssel.
Eine Lösungsmöglichkeit besteht in einer ID, die fortlaufend erhöht wird. Keine ID wird doppelt vergeben und einmal vergebene IDs werden nie mehr vergeben. Solch eine ID wäre immer eindeutig als Schlüssel verwendbar.
\end{document}