mirror of
https://gitlab.cs.fau.de/ik15ydit/latexandmore.git
synced 2024-11-26 05:35:03 +01:00
Kap 10: Anfrageverarbeitung fertig
This commit is contained in:
parent
15f224941b
commit
e89c3b4f28
86
Anfrageverarbeitung.tex
Normal file
86
Anfrageverarbeitung.tex
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
\section{Anfrageverarbeitung}
|
||||||
|
|
||||||
|
\subsection{Allgemein}
|
||||||
|
Eine SQL Anfrage ist ein mengenorientierter Zugriff.
|
||||||
|
D.h. diese mengenorientierten Operatoren müssen auf satzorientierte
|
||||||
|
Operatoren abgebildet werden.
|
||||||
|
\subsubsection{Phasen}
|
||||||
|
\textbf{Verarbeitungsschritte}:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Syntax überprüfen
|
||||||
|
\item Rechte und Integritätsbedingungen (Formate) prüfen
|
||||||
|
\item \textbf{Anfrageoptimierung} um effizient Query zu bearbeiten
|
||||||
|
\item Code Generieung
|
||||||
|
\end{itemize}
|
||||||
|
\begin{figure}[H]
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[scale=0.7]{pics/anfrageverarbeitung.png}
|
||||||
|
\caption{Phasen der Anfrageverarbeitung}
|
||||||
|
\end{center}
|
||||||
|
\end{figure}
|
||||||
|
\textbf{Ziel}:\\
|
||||||
|
Umsetzung deskriptiver Anfragen in eine \glqq optimale\grqq Folge
|
||||||
|
interner DBS-Operationen
|
||||||
|
\subsection{Interndarstellung}
|
||||||
|
\subsubsection{Relationale Algebra}
|
||||||
|
Definition von relationalen \textbf{logischen Operatoren}:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Selektion: Auswahl von \glqq Zeilen \grqq (\textbf{where}-Klausel)
|
||||||
|
\item Projektion Auswahl von \glqq Spalten \grqq (\textbf{select}-Klausel)
|
||||||
|
\item Kreuzprodukt: Konkatenation derjenigen Tupel aus zwei Relationen(\textbf{from})
|
||||||
|
\item Verbund: Konkatenation derjenigen Tupel aus zwei Relationen
|
||||||
|
die eine Bedingung erfüllen(\textbf{from-where})
|
||||||
|
\item Mengenoperationen auf zwei Relationen:
|
||||||
|
\begin{itemize}
|
||||||
|
\item $R \cup S$ bzw \textbf{UNION(R,S)}
|
||||||
|
\item $R \cap S$ bzw \textbf{INTERSECT(R,S)}
|
||||||
|
\item $R \setminus S$ bzw \textbf{EXCEPT(R,S)}
|
||||||
|
\end{itemize}
|
||||||
|
\end{itemize}
|
||||||
|
\subsubsection{Operatorbaum}
|
||||||
|
Beispiel:
|
||||||
|
\begin{lstlisting}
|
||||||
|
select Name, Beruf
|
||||||
|
from Abt a, Pers p,
|
||||||
|
PM pm , Projekt pj
|
||||||
|
where a.ANr = p.ANr
|
||||||
|
and a.AOrt = "Erlangen"
|
||||||
|
and p.PNr = pm.PNr
|
||||||
|
and pm.JNr = pj.JNr
|
||||||
|
and pj.POrt = "Erlangen"
|
||||||
|
\end{lstlisting}
|
||||||
|
|
||||||
|
\begin{figure}[H]
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[scale=0.7]{pics/operatorbaum.png}
|
||||||
|
\caption{Operatorbaum}
|
||||||
|
\end{center}
|
||||||
|
\end{figure}
|
||||||
|
Blattknoten: Relationen\\
|
||||||
|
Gerichtete Kanten: Datenfluss\\
|
||||||
|
Knoten: Operatoren der Relationalen Algebra
|
||||||
|
\subsection{Restrukturierung}
|
||||||
|
Regeln:
|
||||||
|
\begin{enumerate}
|
||||||
|
\item Ein n-facher Verbund kann durch eine Folge von binären Verbunden ersetzt und werden und umgekehrt
|
||||||
|
\item Verbund ist kommutativ
|
||||||
|
\item Verbund ist assoziativ
|
||||||
|
\item Selektionen können zusammengefasst werden
|
||||||
|
\item Projektionen können zusammengefasst werden
|
||||||
|
\item Selektionen und Projektionen dürfen vertauscht werden
|
||||||
|
\item Selektionen und Verbund dürfen vertauscht werden
|
||||||
|
\item Selektion darf mit Vereinigung und Differenz vertauscht werden
|
||||||
|
\item Selektion und Kreuzprodukt können zu Verbund zusammengefasst weren
|
||||||
|
\end{enumerate}
|
||||||
|
\subsubsection{Algorithmus}
|
||||||
|
\textbf{Ziel}: Kreuzprodukt vermeiden
|
||||||
|
Heuristik:
|
||||||
|
\begin{itemize}
|
||||||
|
\item komplexe Verbundoperationen zerlegen in binäre Verbunde (Regel 1)
|
||||||
|
\item Selektionen mit mehreren Prädikat Termen separieren in Selektionen mit jeweils einem Prädikat Term (Regel 4)
|
||||||
|
\item Selektionen so früh wie möglich ausführen (Regel 7 und 8)
|
||||||
|
\item Selektionen und Kreuzprodukt zu Verbund zusammenfassen, wenn
|
||||||
|
das Selektioinsprädikat Attribute aus den beiden Relationen verwendet (Regel 9)
|
||||||
|
\item Projektionen so früh wie möglich ausführen
|
||||||
|
|
||||||
|
\end{itemize}
|
3
IDB.tex
3
IDB.tex
@ -30,7 +30,7 @@
|
|||||||
commentstyle=\color{dkgreen}, % comment style
|
commentstyle=\color{dkgreen}, % comment style
|
||||||
frame=single, % adds a frame around the code
|
frame=single, % adds a frame around the code
|
||||||
keywordstyle=\color{blue}, % keyword style
|
keywordstyle=\color{blue}, % keyword style
|
||||||
language=C++, % the language of the code
|
language=sql, % the language of the code
|
||||||
mathescape=true,
|
mathescape=true,
|
||||||
autogobble,
|
autogobble,
|
||||||
numbers=left % where to put the line-numbers; possible values are (none, left, right)
|
numbers=left % where to put the line-numbers; possible values are (none, left, right)
|
||||||
@ -63,5 +63,6 @@
|
|||||||
\listoffigures
|
\listoffigures
|
||||||
\newpage
|
\newpage
|
||||||
\include{./Speicherung}
|
\include{./Speicherung}
|
||||||
|
\include{./Anfrageverarbeitung}
|
||||||
\include{./Transaktionen}
|
\include{./Transaktionen}
|
||||||
\end{document}
|
\end{document}
|
||||||
|
BIN
pics/anfrageverarbeitung.png
Normal file
BIN
pics/anfrageverarbeitung.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 39 KiB |
BIN
pics/operatorbaum.png
Normal file
BIN
pics/operatorbaum.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 24 KiB |
Loading…
Reference in New Issue
Block a user