From 72378555eb1f252b52b55250a1c7b06eaab347ae Mon Sep 17 00:00:00 2001 From: Janis Hutz Date: Sat, 15 Aug 2026 14:24:25 +0200 Subject: [PATCH] [DMDB] Fix more errors --- .../dmdb/data-modelling-databases-summary.pdf | Bin 1387557 -> 1387600 bytes .../01_search-space/01_rewriting-rules.tex | 2 +- .../03_systems/02_indexing/06_art-trees.tex | 2 +- .../dmdb/parts/08_quick-overview/03_qp.tex | 2 +- .../parts/08_quick-overview/04_checklist.tex | 1 + 5 files changed, 4 insertions(+), 3 deletions(-) diff --git a/semester4/dmdb/data-modelling-databases-summary.pdf b/semester4/dmdb/data-modelling-databases-summary.pdf index eb5aa933fb2e55fab68858564daf9a8fe4ba340f..94c3a01847dc95692b612cba873cbe848bfcfe5e 100644 GIT binary patch delta 16737 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 JB_%~qMhaOmGZ_E? delta 16730 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 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 e7aed86..afafc6f 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 @@ -33,7 +33,7 @@ The following rules were discussed in the lectures: \item Natural join operations are associative, so are theta joins (with restrictions) \[ (E_1 \bowtie E_2) \bowtie E_3 = E_1 \bowtie (E_2 \bowtie E_3) - \qquad (E_1 \bowtie_{\theta_1} E_2) \bowtie_{\theta_2 \land \theta_3} = E_1 \bowtie_{\theta_1 \land \theta_3} (E_2 \bowtie_{\theta_2} E_3) + \qquad (E_1 \bowtie_{\theta_1} E_2) \bowtie_{\theta_2 \land \theta_3} E_3 = E_1 \bowtie_{\theta_1 \land \theta_3} (E_2 \bowtie_{\theta_2} E_3) \] This allows for joins to be performed in different orders, allowing us to do the most selective first (fewer rows) \item Pushdown selection: diff --git a/semester4/dmdb/parts/03_systems/02_indexing/06_art-trees.tex b/semester4/dmdb/parts/03_systems/02_indexing/06_art-trees.tex index 924a6f3..57c91ee 100644 --- a/semester4/dmdb/parts/03_systems/02_indexing/06_art-trees.tex +++ b/semester4/dmdb/parts/03_systems/02_indexing/06_art-trees.tex @@ -1,4 +1,4 @@ -Adaptive Radix Trees (ARTs) are mainly used to ensure primary key constraints and to speed up point and highly selective queries (selectivity <0.1\%). +Adaptive Radix Trees (ARTs) are mainly used to ensure primary key constraints and to speed up point and highly selective queries (selectivity $<0.1\%$). It can also be manually created using \texttt{CREATE INDEX} and are automatically created for columns with a \texttt{UNIQUE} or \texttt{PRIMARY KEY} constraint. The above applies to DuckDB, which is often similar to Postgres. diff --git a/semester4/dmdb/parts/08_quick-overview/03_qp.tex b/semester4/dmdb/parts/08_quick-overview/03_qp.tex index 870eaf5..508a7cf 100644 --- a/semester4/dmdb/parts/08_quick-overview/03_qp.tex +++ b/semester4/dmdb/parts/08_quick-overview/03_qp.tex @@ -1,6 +1,6 @@ \subsection{Query Processing} \subsubsection{Sorting} -Given $B$ frames of memory and $N$ records, we ahve +Given $B$ frames of memory and $N$ records, we have (typically I/Os in pages to be read) \begin{itemize} \item \bi{Merge Sort}: $2N \cdot P$, with $P = (1 + \ceil{\log_{B - 1}\ceil{N \div B}})$ the number of passes. After the first pass, $\ceil{N \div B}$ number of sorted runs were created (typically) diff --git a/semester4/dmdb/parts/08_quick-overview/04_checklist.tex b/semester4/dmdb/parts/08_quick-overview/04_checklist.tex index 0b2d47a..fd94b80 100644 --- a/semester4/dmdb/parts/08_quick-overview/04_checklist.tex +++ b/semester4/dmdb/parts/08_quick-overview/04_checklist.tex @@ -9,6 +9,7 @@ The following things are typically important to know very well (not exhaustive) \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 \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