mirror of
https://gitlab.cs.fau.de/ik15ydit/latexandmore.git
synced 2024-12-23 08:36:06 +01:00
done
This commit is contained in:
parent
b1137cdf72
commit
f7330e9ade
@ -1,5 +1,5 @@
|
||||
\documentclass{article}
|
||||
|
||||
\usepackage{listings}
|
||||
\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]
|
||||
@ -20,7 +20,8 @@ Antworte mit richtig oder falsch und Begruendung. [4P pro Aufgabe, es wurden abe
|
||||
\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}
|
||||
\vspace{5cm}
|
||||
|
||||
|
||||
\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. \\
|
||||
@ -42,7 +43,6 @@ 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. \\ \\
|
||||
|
||||
@ -172,8 +172,6 @@ F & F & F & F \\\hline
|
||||
|
||||
\end{itemize}
|
||||
|
||||
|
||||
\newpage
|
||||
\section{Aufgabe 4 Indexstrukturen - 26 Punkte}
|
||||
\subsection{Ankreuzerino}
|
||||
\subsubsection*{Kreuzen sie an wie viele Primaerorganisationen es fuer eine Satzmenge ohne Redundanz maximal geben kann}
|
||||
@ -206,13 +204,14 @@ Um die Suche nach Zimmern mit bestimmten Eigenschaften (z.B. Zimmer im Erdgescho
|
||||
\item Hash-Index
|
||||
\item Bitmap-Index
|
||||
\end{itemize}
|
||||
\newpage
|
||||
|
||||
|
||||
\section{Aufgabe 5 Transaktionen - Punkte 32}
|
||||
\subsubsection{Nennen sie die Eigenschaft, die eine Real World Action erfuellen muss, damit sie als solche bezeichnet wird.}
|
||||
\subsection*{a) Nennen sie die Eigenschaft, die eine Real World Action erfuellen muss, damit sie als solche bezeichnet wird.}
|
||||
\vspace{1cm}
|
||||
\subsubsection{Real World Actions muessen mindestens eine von zwei Eigenschaften erfuellen, damit sie im Rahmen einer Transaktion ausgefuehrt werden koennen. Nennen sie diese beiden Eigenschaften.}
|
||||
\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.}
|
||||
\vspace{1cm}
|
||||
\subsubsection{Gegeben ist der folgende Ablauf dreier Transaktionen T1, T2, T3:}
|
||||
\subsection*{c) Gegeben ist der folgende Ablauf dreier Transaktionen T1, T2, T3:}
|
||||
rN(x) bedeutet, Transaktion N liest Element x. wN(x) bedeutet, Transaktion N schreiben Element x.
|
||||
\begin{itemize}
|
||||
\item r2(a)
|
||||
@ -227,9 +226,71 @@ rN(x) bedeutet, Transaktion N liest Element x. wN(x) bedeutet, Transaktion N sch
|
||||
\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}
|
||||
\subsubsection{Begruenden sie in einem Satz warum der in teilaufgabe c) gegebene Ablauf serialisierbar oder nicht serialisierbar ist.}
|
||||
\subsection*{d) Begruenden sie in einem Satz warum der in Teilaufgabe-C gegebene Ablauf serialisierbar oder nicht serialisierbar ist.}
|
||||
\newpage
|
||||
\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.}
|
||||
\item BD-Transaktion starten
|
||||
\item Lokale Variable Gesamtpreis auf 0 setzen
|
||||
\item Wiederhole bis Ende-Taste gedrueckt
|
||||
\begin{enumerate}
|
||||
\item Artikelnummer von Kassierer Abfragen
|
||||
\item Artikel in der Datenbanktabelle aller Artikel ueber die Artikelnummer suchen
|
||||
\item Variable Gesamtpreis um Artikelpreis erhoehen
|
||||
\item Attribut Bestand des Artikels in der Datenbanktabelle aller Artikel um 1 verringern
|
||||
\end{enumerate}
|
||||
\item Gesamtpreis anzeigen
|
||||
\item Neuen Eintrag mit dem Gesamtpreis zur tabelle Umsaetze in der Datenbank hinzufuegen
|
||||
\item Transaktion mit Commit beenden und Erfold oder MIsserfolg des Commit dem Kassierer anzeigen
|
||||
\end{enumerate}
|
||||
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
|
||||
\item Beginn des Logs
|
||||
\item Ende des Logs
|
||||
\item Sicherungspunkt
|
||||
\end{itemize}
|
||||
|
||||
\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? \\\\
|
||||
|
||||
|
||||
\section{Aufgabe 7 Programmschnittstelle - Punkte 10}
|
||||
\subsubsection*{a) Geben sie in ein bis zwei Saetzen an, warum das unten dargestellte Programm anfaellig fuer SQL-Injections ist.}
|
||||
[ Sinngemaess stand hier ein Programm bei dem der Nutzer einen String in einem nicht-escape'ten String kontrollieren konnte ]\\\\
|
||||
\subsection*{b) Wie kann man sich generell gegen SQL-Injections schuetzen?}
|
||||
\end{document}
|
Loading…
Reference in New Issue
Block a user