\documentclass{article}

\begin{document}
\section{Aufgabe 1}
Antworte mit richtig oder falsch und Begruendung. [4P pro Aufgabe, es wurden aber immer nur 4 oder 0 vergeben und nur bei (dem Lehrstuhl nach) richtiger Begruendung]
\begin{itemize}
	\item \textbf{a)} Bei Verwendung von Magnetplatenlaufwerken zur Speicherung von Datenbanken ist es guenstig haeufig, zusammen gebrauchte Daten auf dem selben Zylinder abzulegen.
	\item \textbf{b)} Die von der Schicht der Speicherstruckturen angebotenen Adressierungseinheiten umfassen unter anderem Tupel, Relationen und Sichten.
	\item \textbf{c)} Bei direkter Seitenzuordnung genuegt es, die Blocknummer der ersten Seite eines Sgmentes zu kennen, um die Blocknummer einer beliebigen Seite dieses Segments ermitten zu koennen
	\item \textbf{d)} Das Problem der Seitenersetzungsstrategie LFU (Least frequently used) fuer den Datenbankpuffer ist, dass Seiten im Puffer nicht alt werden.
	\item \textbf{e)} Jede Seite, die aus dem Datenbankpuffer verdreangt wird, muss auf den persistenten Speicher geschrieben werden.
	\item \textbf{f)} Bei der Verschiebung eines Satzes in eine andere Seite aendert sich dessen TID, so dass sie die Nummer der neuen Seite enthaelt.
	\item \textbf{g)} Wenn in einer Anfrage ein Attribut auf Gleichheit mit einer Konstanten geprueft wird (z.B. alter = 42) und es existiert ein Index fuer dieses Attribut, dann ist der Zugriff ueber den Index grundsaetzlich schneller als ein Table-Scan. 
	\item \textbf{h)} Felder variabler Laenge koennen nicht als Schluessel in einem Index verwendet werden.
	\item \textbf{i)} Bei der Vergroesserung der Hashtabelle bei Linear Hashing, wird die Zahl der Buckets jedes mal verdoppelt.
	\item \textbf{j)} Bei der Suche nach einem Wert in einem B*-Baum muss immer bis zu einem Blattknoten abgestiegen werden.
	\item \textbf{k)} Ein B-Baum enthaelt Verweise auf Saetze, aber nie ganze Saetze.
	\item \textbf{l)} Bei der Suche in einem R-Baum nach Objekten in einem bestimmten rechteckigen Bereich muss an jedem Knoten in maximal einen Ast abgestiegen werden. 
	\item \textbf{m)} Materialisierte Sichten koennen die Ausfuehrung von Anfragen beschleunigen.
	\item \textbf{n)} Das C in den ACID-Eigenschaften von Transaktionen steht fuer Concurrency.
	\item \textbf{o)} Bei reiner Forward-Recovery duerfen Aenderungen einer Transaktion erst nach deren erfolgreichem Commit in den Datenbestand eingebracht werden.
\end{itemize}

\newpage
\section{Aufgabe 2 Datenbankpuffer}
\subsection{a) - 12 Punkte}
Fuer einen Puffer stehen drei Kacheln im Hauptspeicher zur Verfuegung. Die unten angegebene Referenzreihenfolge stellt einen Auszug aus dem Protokoll der Seitenzugriffe des Datenbanksystems dar. Vervollstaendigen Sie die Tablle: Geben Sie an, welche Seiten zu welchem Zeitpunkten in den Kacheln des Prozesses eingelagert sind, wenn das Datenbanksystem \textbf{Clock} als Seitenersetzungsstrategie verwendet. Notieren Sie auch die Kontrollzustaende fuer jede Belegung. \\


\begin{tabular}{|r|r|r|r|r|r|r|}\hline
Zeitpunkt		& ...	& n	& n+1 	& n+2 	& n+3 	& n+4 	\\\hline
Referenzfolge 	& ...	& 3 & 9 	& 3 	& 5 	& 2		\\\hline
				&		& 	& 		& 		&		&		\\
Hauptspeicher 	&		& 	& 		& 		&		&		\\\hline
Kachel A 		& ...	& 8	& 		& 		&		&		\\\hline
Kachel B 		& ...	& 3	& 		& 		&		&		\\\hline
Kachel C 		& ...	& 7	& 		& 		&		&		\\\hline
				&		& 	& 		& 		&		&		\\
Kontrollzustaende &		& 	& 		& 		&		&		\\\hline
Kachel A 		& ...	& 1	& 		& 		&		&		\\\hline
Kachel B 		& ...	& 1	& 		& 		&		&		\\\hline
Kachel C 		& ...	& 1	& 		& 		&		&		\\\hline
Auswahlzeiger auf Kachel & ...	& C	& 		& 		&	&	\\\hline
\end{tabular} 

\newpage
\subsection{b) - 8 Punkte}
Ergaenzen sie die folgende Tabelle um alle Funktionen mit ihren Parametern und ihrem Rueckgabewert, die ein Datenbankpuffer an seiner Schnittstelle zur verfuegung stellen muss. Beschreiben sie jede Funktion kurz, so dass eindeutitg erkennbar ist, was sie tut und welche Bedeutung die Parameter haben. Moeglicherweise benoetigen sie nicht alle Zeilen der Tabelle. \\ \\

\begin{tabular}{|r|r|r|r|}
\textbf{Funktion} & \textbf{Parameter} & \textbf{Rueckgabewert} & \textbf{Beschreibung} \\\hline \\ \\
& & & \\\hline \\ \\ \\
& & & \\\hline \\ \\ \\
& & & \\\hline \\ \\ \\
& & & \\\hline \\ \\ \\
& & & \\\hline
\end{tabular}

\newpage
\section{Aufgabe 3 TID-Adressierung}
Ergaenzen sie in den folgenden Teilaufgaben die Skizzen so, dass sie den Zustand nach der jeweils angegebenen Operation darstellen. Geben sie ausserdem die TIDs der Saetze mit den angegebenen Laengen nach der Ausfuerung der Operation an.\\ \\
Die Saetze werden ueber TIDs adressiert. Eine TID benoetigt 2 Beyte und ein Indexeintrag 1 Byte Speicherplatz. Jeder Block hat eine Groesse von 16 Bytes. ein Byte ist jeweils durch ein Kaestchen repraesentiert. Die Frespeicherverwaltung durchsucht die Seiten in der Reihenfolge 0,1,2 nach freiem Platz. Freier Speicher innerhalb einer Seite befindet sich immer nur am Seitenende. \\ \\
Es muss keine Laengen- oder Headerinformtion zu den Saetzen gespeichert werden. Diese sei dem System bekannt. Saetze werden nur fragmenteirt, wenn es notwendig ist. Verweise zwischen Fragmenten und bei Verschiebungen sind einzutragen, in der Form \textbf{TID(3,2)}. Die ersten Fragmente eines fragmentierten Satzes belegen immer ganze Bloecke. Nur das letze Fragment kann in einem schon teilwese belegten Block abgelegt werden. \\ \\
Die Teilaufgaben sind voneinander unabhaengig. Ein F steht fuer bereits voll. \\

\begin{itemize}
	\item \textbf{a)} Die Seiten enthalten zum Ausgangszeitpunkt einen Satz der Laenge 5 mit TID(0,0). Fuegen sie einen Satz mit Laenge 10 ein.\\  \\
\begin{tabular}{c|c|c|c}
F &  F & F  & F  \\\hline
F &   &   &   \\\hline
 &   &   &   \\\hline
 &   &   & 0
\end{tabular}
\hspace{10mm}
%\textbf{Seite 1}
\begin{tabular}{c|c|c|c}
 &   &   &   \\\hline
 &   &   &   \\\hline
 &   &   &   \\\hline
 &   &   & 0 
\end{tabular}
%\textbf{Seite 2}
\hspace{10mm}
\begin{tabular}{c|c|c|c}
 &   &   &   \\\hline
 &   &   &   \\\hline
 &   &   &   \\\hline
 &   &   & 0 
\end{tabular}\\\\
-\hspace{8mm} Seite 0 \hspace{2cm} Seite 1 \hspace{2cm} Seite 2 \hspace{2cm} -\\\\
	\item \textbf{b)} Die Seiten enthalten zum Ausgangszeitpunkt zwei Saetze mit TID(0,0), Laenge 12 und TID(1,0), Laenge 6. Fuegen sie einen Satz mit Laenge 20 ein.\\ \\
	\begin{tabular}{c|c|c|c}
F &  F & F  & F  \\\hline
F &  F & F  & F  \\\hline
F &  F & F  & F  \\\hline
 &   &   & 0
\end{tabular}
\hspace{10mm}
%\textbf{Seite 1}
\begin{tabular}{c|c|c|c}
F & F  & F  & F  \\\hline
F & F  &   &   \\\hline
 &   &   &   \\\hline
 &   &   & 0 
\end{tabular}
%\textbf{Seite 2}
\hspace{10mm}
\begin{tabular}{c|c|c|c}
 &   &   &   \\\hline
 &   &   &   \\\hline
 &   &   &   \\\hline
 &   &   & 0 
\end{tabular}\\\\
- \hspace{8mm} Seite 0 \hspace{2cm} Seite 1 \hspace{2cm} Seite 2 \hspace{2cm} -\\\\ %dont ask and dont try yo remove the -
\end{itemize}

\end{document}