diff --git a/semester4/dmdb/data-modelling-databases-summary.pdf b/semester4/dmdb/data-modelling-databases-summary.pdf index 94c3a01..ddb3b06 100644 Binary files a/semester4/dmdb/data-modelling-databases-summary.pdf and b/semester4/dmdb/data-modelling-databases-summary.pdf differ diff --git a/semester4/dmdb/parts/02_theory-background/01_normal-forms/00_intro.tex b/semester4/dmdb/parts/02_theory-background/01_normal-forms/00_intro.tex index 49270a5..04016db 100644 --- a/semester4/dmdb/parts/02_theory-background/01_normal-forms/00_intro.tex +++ b/semester4/dmdb/parts/02_theory-background/01_normal-forms/00_intro.tex @@ -1,5 +1,6 @@ \newpage \subsection{Normal Forms} +\label{sec:normal-forms} \inlinedefinition[Normal forms] describe the properties of concrete schemas based on functional dependencies in terms of data redundancy and data integrity. For each of the normal forms, we need to be able to decide (for $R$ the relation and $F$ the functional dependencies of it): diff --git a/semester4/dmdb/parts/03_systems/00_query-optimization/01_search-space/01_rewriting-rules.tex b/semester4/dmdb/parts/03_systems/00_query-optimization/01_search-space/01_rewriting-rules.tex index afafc6f..3a21668 100644 --- a/semester4/dmdb/parts/03_systems/00_query-optimization/01_search-space/01_rewriting-rules.tex +++ b/semester4/dmdb/parts/03_systems/00_query-optimization/01_search-space/01_rewriting-rules.tex @@ -1,4 +1,5 @@ \paragraph{Rewriting Rules} +\label{sec:rewriting-rules} Given a logical plan as above, there are multiple ways in which we can construct a physical plan. We can use different join orders, decide when selection happens and specific implementations of operators. diff --git a/semester4/dmdb/parts/04_query-processing/main.tex b/semester4/dmdb/parts/04_query-processing/main.tex index 6a00f85..8532b37 100644 --- a/semester4/dmdb/parts/04_query-processing/main.tex +++ b/semester4/dmdb/parts/04_query-processing/main.tex @@ -1,4 +1,5 @@ \newcommand\cost[1]{\shade{orange}{#1}} +\label{sec:query-processing} \section{Query Processing} In this section, knowing the time complexities by heart is very important for the exam. They are highlighted \cost{like this}. diff --git a/semester4/dmdb/parts/05_concurrency-control-recovery/06_recovery.tex b/semester4/dmdb/parts/05_concurrency-control-recovery/06_recovery.tex index c7472ae..639b3d0 100644 --- a/semester4/dmdb/parts/05_concurrency-control-recovery/06_recovery.tex +++ b/semester4/dmdb/parts/05_concurrency-control-recovery/06_recovery.tex @@ -30,6 +30,7 @@ Databases typically log transactions by keeping before and after images of their \subsubsection{Recovery on histories} +\label{sec:recovery-of-histories} \begin{examdetails} They like to ask about these, so be sure to understand this properly. Same goes for Conflict Serializability for histories (see \ref{sec:tm-history}) \end{examdetails} diff --git a/semester4/dmdb/parts/05_concurrency-control-recovery/07_recovery-procedures.tex b/semester4/dmdb/parts/05_concurrency-control-recovery/07_recovery-procedures.tex index 87a7574..d193aef 100644 --- a/semester4/dmdb/parts/05_concurrency-control-recovery/07_recovery-procedures.tex +++ b/semester4/dmdb/parts/05_concurrency-control-recovery/07_recovery-procedures.tex @@ -8,7 +8,7 @@ It may or may not require both, one or none of UNDO and REDO. \item \bi{Steal Policy}: An uncommitted transaction is allowed to overwrite the changes of a committed transaction in persistent storage. This logically means that we need to be able to undo transactions. \item \bi{Force Policy}: All changes made by a transaction must be in persistent storage before the transaction commits. - This requires flushing all blocks with updates from the transaction and if not in-place, it will require being able to redo the transaction. + This requires flushing all blocks with updates from the transaction and if not in-place (called \bi{No-Force}), it will require being able to redo the transaction. \item \bi{Steal/No-Force}: UNDO/REDO, is the most common approach \end{itemize} If for updates tuples are locked, blocks may still be updatable. diff --git a/semester4/dmdb/parts/06_vector-search/main.tex b/semester4/dmdb/parts/06_vector-search/main.tex index e83a4a7..7ef9f18 100644 --- a/semester4/dmdb/parts/06_vector-search/main.tex +++ b/semester4/dmdb/parts/06_vector-search/main.tex @@ -1,4 +1,5 @@ \section{Vector Search} +\label{sec:vector-search} \input{parts/06_vector-search/00_intro-trees-clustering.tex} \input{parts/06_vector-search/01_hsnw-index.tex} \input{parts/06_vector-search/02_hash-index.tex} diff --git a/semester4/dmdb/parts/08_quick-overview/04_checklist.tex b/semester4/dmdb/parts/08_quick-overview/04_checklist.tex index fd94b80..75a2a1d 100644 --- a/semester4/dmdb/parts/08_quick-overview/04_checklist.tex +++ b/semester4/dmdb/parts/08_quick-overview/04_checklist.tex @@ -1,15 +1,15 @@ \subsection{Checklist} The following things are typically important to know very well (not exhaustive) \begin{todolist} - \item SQL (syntax, some concepts, such as using \texttt{WITH} statements often to make the task more approachable) - \item Functional Dependencies (including Candidate Keys, Super Keys, Closures and minimal covers) - \item Normal Forms (and their Decomposition / Synthesis Algorithms) - \item Time complexities, I/Os and sorted runs for Query Processing - \item Concepts behind the query processing operators - \item Conflict Serializability - \item Core concepts of Vector Search - \item Recoverability (both the normal techniques, plus Snapshot Isolation and 2-Phase Locking (and strict variant thereof)) - \item Rewriting rules + \item SQL (syntax, some concepts, such as using \texttt{WITH} statements often to make the task more approachable), see Section~\ref{sec:sql-basic-ops} + \item Functional Dependencies (including Candidate Keys, Super Keys, Closures and minimal covers), see Section~\ref{sec:functional-dependency} + \item Normal Forms (and their Decomposition / Synthesis Algorithms), see Section~\ref{sec:normal-forms} + \item Time complexities, I/Os and sorted runs for Query Processing, see summarized above, or Section~\ref{sec:query-processing} + \item Concepts behind the query processing operators, see Section~\ref{sec:query-processing} + \item Conflict Serializability, see Section~\ref{sec:tm-history} + \item Core concepts of Vector Search, see Section~\ref{sec:vector-search} + \item Recoverability (both the normal techniques, plus Snapshot Isolation and 2-Phase Locking (and strict variant thereof)), see Section~\ref{sec:recovery-of-histories} + \item Rewriting rules, see Section~\ref{sec:rewriting-rules} \end{todolist} Note that since this course is taught (quite) poorly, there may be wrong questions or possibly even questions that are somewhat outside the scope of this course