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]
\item\textbf{a)} Bei Verwendung von Magnetplatenlaufwerken zur Speicherung von Datenbanken ist es guenstig haeufig, zusammen gebrauchte Daten auf dem selben Zylinder abzulegen. \\
\solution{
Ja, weil ist schneller.
}
\item\textbf{b)} Die von der Schicht der Speicherstrukturen angebotenen Adressierungseinheiten umfassen unter anderem Tupel, Relationen und Sichten.\\
\solution{
Nein, das waere die Schicht der logischen Datenstruckturen
}
\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\\
\solution{
Ja, denn alle Seiten sind gleich groß und liegen hintereinander im Speicher.
}
\item\textbf{d)} Das Problem der Seitenersetzungsstrategie LFU (Least frequently used) fuer den Datenbankpuffer ist, dass Seiten im Puffer nicht alt werden.\\
\solution{
Ja, denn die Puffereffizients kann dadurch beeintraechtigt werden, dass es sehr lange dauert bis eine, zeitweise stark aber dann ie wieder genutzte Seite aus dem Puffer verdraengt wird.
}
\item\textbf{e)} Jede Seite, die aus dem Datenbankpuffer verdreangt wird, muss auf den persistenten Speicher geschrieben werden.\\
\solution{
Nein, mitunter wurde sie nicht veraendert oder es gibt andere Gruende warum man sie nicht auf die Platte schreiben moechte (rollback aus hoeherer Ebene?).
}
\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.\\
\solution{
Nein, denn die TID wird mitunter bereits woanders verwendet und darf deshalb nichtmehr geaendert werden.
}
\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. \\
\solution{
Nein, bei genau einem Eintrag nicht.
}
\item\textbf{h)} Felder variabler Laenge koennen nicht als Schluessel in einem Index verwendet werden.\\
\solution{
Nein, (also doch) denn es gibt Indexstrukturen die das ermoeglichen.
}
\item\textbf{i)} Bei der Vergroesserung der Hashtabelle bei Linear Hashing, wird die Zahl der Buckets jedes mal verdoppelt.\\
\solution{
Nein, sie wird jedes mal um eins erhoeht.
}
\item\textbf{j)} Bei der Suche nach einem Wert in einem B*-Baum muss immer bis zu einem Blattknoten abgestiegen werden.\\
\solution{
Ja, denn nur in den Blattknoten werden Daten gespeichert.
}
\item\textbf{k)} Ein B-Baum enthaelt Verweise auf Saetze, aber nie ganze Saetze.\\
\solution{
Nein, ein B-Baum kann im Allgemeinen beliebige Daten und Datenmengen enthalten, also auch 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. \\
\solution{
Swag.
}
\item\textbf{m)} Materialisierte Sichten koennen die Ausfuehrung von Anfragen beschleunigen.\\
\solution{
Ja, weil materialisierte Sichten, tatsaechlich im Speicher liegen.
}
\item\textbf{n)} Das C in den ACID-Eigenschaften von Transaktionen steht fuer Concurrency.\\
\solution{
Nein, fuer Consitency.
}
\item\textbf{o)} Bei reiner Forward-Recovery duerfen Aenderungen einer Transaktion erst nach deren erfolgreichem Commit in den Datenbestand eingebracht werden.\\
\solution{
Ja, denn wuerde man den commit Einbringen haette man evt. einen Inkonsitenten Zustand auf der Platte den man nicht rueckgaengig machen kann weil man nur Forward-Recovery hat.
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. \\
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. \\\\
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. \\
\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.\\\\
\textbf{a)} Fuegen sie in einen anfangs leeren \textbf{B*-Baum} mit $k_{inner}=2$ und $k_{leaf}=1$ die Tupel
\textbf{\hspace{1cm}(7,B)\hspace{1cm}(42,A)\hspace{1cm}(2,X) \hspace{1cm}} in dieser Reihenfolge ein. Die gegebenen Tupel sind nach dem Schema \textbf{(Schluessel,Wert)} aufgebaut. Zeichnen sie den entstandenen Baum nach dem Einfuegen aller Tupel. \\\\
\textbf{b)} Loeschen sie aus dem gegebenen B-Baum den Schluessel 36. Zeichnen sie den entstandenen Baum nach dem komplett ausgefuehrten Loesungsweg.\\\\
Um die Suche nach Zimmern mit bestimmten Eigenschaften (z.B. Zimmer im Erdgeschoss mit Kueche und Bad) zu beschleunigen sollen ueber die Attribute \textbf{Etage, MitKueche, MitBad und GehirngeschaedigteVollspassten} Indizies angelegt werden. Kreuzen sie an, welche der folgenden Indexarten sich hierfuer am Besten eignet.
\subsection*{b) Real World Actions muessen mindestens eine von zwei Eigenschaften erfuellen, damit sie im Rahmen einer Transaktion ausgefuehrt werden koennen. Nennen sie diese beiden Eigenschaften.}
rN(x) bedeutet, Transaktion N liest Element x. wN(x) bedeutet, Transaktion N schreiben Element x.
\begin{itemize}
\item r2(a)
\item r3(b)
\item r3(c)
\item r1(a)
\item r3(a)
\item w2(a)
\item w3(b)
\item r1(b)
\item w1(c)
\item w2(b)
\end{itemize}
Zeichnen sie den vollstaendigen Abhaengigkeitsgraphen und notieren sie an den kanten alle Datenobjekte, aufgrund derer die jeweiligen Abhaengigkeit besteht.\\\vspace{1cm}
\subsection*{e) Ein Programm in einer Supermarktkasse hat den im Folgenden beschriebenen Ablauf. Das eingesetzte Datenbanksystem garantiert die ACID-Eigenschaft von Transaktionen.}
\begin{enumerate}
\item Falls einer der folgenden Schritte scheitert, gib eine Fehlermeldung aus und springe zurueck zu \textbf{1.}
Erklaeren sie in ein zwei bis drei Saetzen das Problem, das in Bezug auf Transaktionen (unter Vernachlaessigung etwaiger Real World Actions) bei diesem Ablauf auftreten kann. \\\vspace{1cm}
\subsection*{f) Erklaeren sie in ein zwei bis drei Saetzen eine Moeglichkeit, den Programmablauf aus Aufgabe e) zu aendern, um das dort auftretende Problem zu vermeiden}\vspace{1cm}
\subsection{Ankreuzehuehueriono}
Gegeben ist ein Datenbanksystem, das sowohl ein Redo- also auch ein Undo-Log einsetzt und Action Consisten Checkpoints (d.h. es sind keine Aenderungsoperationen zum Sicherungspunkt aktiv) verwendet.
\subsubsection*{Kreuzen sie and, bis zu welcher Stelle das Undo-Log waehrend des Undo-Laufs gelesen werden muss. Beachten sie die Leserichtung.}
\begin{itemize}
\item BOT-Eintrag der aeltesten Gewinner-Transaktion
\item BOT-Eintrag der aeltesten Verlierer-Transaktion
\item BOT-Eintrag der juengsten Gewinner-Transaktion
\item BOT-Eintrag der juengsten Verlierer-Transaktion
\item Beginn des Logs
\item Ende des Logs
\item Sicherungspunkt
\end{itemize}
\subsubsection*{Kreuzen sie an, beginnend ab welcher Stelle das Redo-Log waehrend des Redo-Laufs gelesen werden muss. Beachten sie die Leserichtung.}
\begin{itemize}
\item BOT-Eintrag der aeltesten Gewinner-Transaktion
\item BOT-Eintrag der aeltesten Verlierer-Transaktion
\item BOT-Eintrag der juengsten Gewinner-Transaktion
\item BOT-Eintrag der juengsten Verlierer-Transaktion
\section{Aufgabe 6 Anfragenverarbeitung - Punkte 18}
\subsubsection*{a) Gegeben ist die folgende SQL-Anfrage. Zeichnen sie den nicht-optimierten Operatorengraphen.}
\begin{lstlisting}[language=SQL]
SELECT *
FROM (
SELECT R.a, R.b, S.c
FROM R JOIN S on R.p = S.p
WHERE S.d = 42
UNION
SELECT T.a, T.b, T.c
FROM T
) X
WHERE X.b > 10;
\end{lstlisting}
\subsubsection*{b) Gegeben sind zwei Relationen R und S, die beide ueber die gleichen Attribute verfuegen. E sei eine echte Teilmenge der Attributmenge von R bzw. S. Begruenden sie, warum die folgende Behauptung gilt oder nicht gilt.}
\begin{lstlisting}[language=SQL]
PROJ( R - S , E ) = PROJ( R , E) - PROJ( S , E)
\end{lstlisting}
Umgangssprachlich: Duerfen Mengendifferenz und Projektion vertauscht werden? \\\\