Materialized Views
This commit is contained in:
parent
675865ff2f
commit
5543e26330
|
@ -96,10 +96,12 @@ schedule:
|
|||
slides: slide/2021-03-30-StreamingQueries.html
|
||||
- date: "Apr. 1"
|
||||
topic: "Data Updates + Incremental View Maintenance"
|
||||
due: "Checkpoint 2"
|
||||
materials:
|
||||
slides: slide/2021-04-01-MaterializedViews.html
|
||||
- date: "Apr. 6"
|
||||
topic: "Aggregation + Checkpoint 3"
|
||||
- date: "Apr. 8"
|
||||
due: "Checkpoint 2"
|
||||
topic: "Transactions: Intro + Concepts"
|
||||
- date: "Apr. 13"
|
||||
topic: "Transactions: Pessimistic"
|
||||
|
|
|
@ -5,6 +5,22 @@ date: March 30, 2021
|
|||
textbook:
|
||||
---
|
||||
|
||||
<!-- 2021 by OK
|
||||
The ending could use a bit of polish. The Aggregate examples in particular are VERY
|
||||
dry and required a bunch of whiteboard work
|
||||
-->
|
||||
|
||||
|
||||
<section>
|
||||
<section>
|
||||
<h2>Checkpoint 2</h2>
|
||||
<ul>
|
||||
<li>Deadline moved to April 7</li>
|
||||
<li>Extra office hours Wed April 7</li>
|
||||
</ul>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<section>
|
||||
<h3>Sequential Data</h3>
|
||||
|
|
|
@ -0,0 +1,483 @@
|
|||
---
|
||||
template: templates/cse4562_2021_slides.erb
|
||||
title: Materialized Views
|
||||
date: April 1, 1921
|
||||
textbook: Ch. 8.5
|
||||
---
|
||||
|
||||
<!-- 2019 by OK
|
||||
This ran waaaaay short.
|
||||
- Bring back stuff from earlier years
|
||||
- Bring back Group theory
|
||||
- Add more examples
|
||||
- Use the time to introduce SQL DDL / Transactions
|
||||
Also, there are a bunch of formatting glitches. Avoid \hspace
|
||||
-->
|
||||
|
||||
<section>
|
||||
<section>
|
||||
<pre><code class="sql">
|
||||
CREATE VIEW salesSinceLastMonth AS
|
||||
SELECT l.*
|
||||
FROM lineitem l, orders o
|
||||
WHERE l.orderkey = o.orderkey
|
||||
AND o.orderdate > DATE(NOW() - '1 Month')
|
||||
</code></pre>
|
||||
<div class="fragment" style="font-size: 70%;">
|
||||
<pre><code class="sql">
|
||||
SELECT partkey FROM salesSinceLastMonth
|
||||
ORDER BY shipdate DESC LIMIT 10;
|
||||
</code></pre>
|
||||
<pre><code class="sql">
|
||||
SELECT suppkey, COUNT(*)
|
||||
FROM salesSinceLastMonth
|
||||
GROUP BY suppkey;
|
||||
</code></pre>
|
||||
<pre><code class="sql">
|
||||
SELECT partkey, COUNT(*)
|
||||
FROM salesSinceLastMonth
|
||||
GROUP BY partkey;
|
||||
</code></pre>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<p><b>Opportunity:</b> Views exist to be queried frequently</p>
|
||||
<p class="fragment"><b>Idea: </b> Pre-compute and save the view’s contents!<br/>
|
||||
(like an index)</p>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<section>
|
||||
<svg data-src="2021-04-01/DBToQ.svg" />
|
||||
<attribution>openclipart.org</attribution>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<p>When the base data changes, <br/>the view needs to be updated too!</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<div style="font-size: 200%;">
|
||||
$$\texttt{VIEW} \leftarrow Q(\mathcal D)$$
|
||||
</div>
|
||||
<p style="margin-top: 100px;">Our view starts off initialized</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<p style="margin-top: 100px;"><b>Idea:</b> Recompute the view from scratch when data changes.</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<div style="font-size: 200%;">
|
||||
$$\texttt{WHEN } \mathcal D \leftarrow \mathcal D+\Delta\mathcal D \texttt{ DO: }\\
|
||||
\texttt{VIEW} \leftarrow Q(\mathcal{D}+\Delta\mathcal{D})$$
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<p>Not quite facepalm-worthy, but not ideal.</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<div style="font-size: 200%;">
|
||||
$$\texttt{WHEN } \mathcal D \leftarrow \mathcal{D}+\Delta\mathcal D \texttt{ DO: }\\
|
||||
\texttt{VIEW} \leftarrow \texttt{VIEW} + \Delta Q(\mathcal D,\Delta\mathcal D)$$
|
||||
</div>
|
||||
<table style="margin-top: 50px;">
|
||||
<tr class="fragment">
|
||||
<td style="font-size: 150%;">$\Delta Q$</td>
|
||||
<td>(ideally) Small & fast query</td>
|
||||
</tr>
|
||||
<tr class="fragment">
|
||||
<td style="font-size: 150%;">$+$</td>
|
||||
<td>(ideally) Fast "merge" operation</td>
|
||||
</tr>
|
||||
</table>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<section>
|
||||
<h3>Intuition</h3>
|
||||
<div>
|
||||
$$\mathcal{D} = \{\ 1,\ 2,\ 3,\ 4\ \} \hspace{1in} \Delta\mathcal{D} = \{\ 5\ \}$$
|
||||
$$Q(\mathcal D) = \texttt{SUM}(\mathcal D)$$
|
||||
</div>
|
||||
<div style="margin-top: 50px;">
|
||||
<div class="fragment">$$ 1 + 2 + 3 + 4 + 5 $$</div>
|
||||
<div class="fragment">$$Q(\mathcal D+\Delta\mathcal D) \sim O(|\mathcal D| + |\Delta\mathcal D|)$$</div>
|
||||
</div>
|
||||
<div style="margin-top: 50px;">
|
||||
<div class="fragment">$$ 10 + 5 $$</div>
|
||||
<div class="fragment">$$\texttt{VIEW} + SUM(\Delta\mathcal D) \sim O(|\Delta\mathcal D|)$$</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>Intuition</h3>
|
||||
<div>
|
||||
$$\mathcal{R} = \{\ \textbf{A, B, C}\ \},\ \mathcal S = \{\ \textbf{X, Y}\ \} \hspace{1in} \Delta\mathcal{R} = \{\ \textbf{D}\ \}$$
|
||||
$$Q(\mathcal R, \mathcal S) = \texttt{COUNT}(\mathcal R \times \mathcal S)$$
|
||||
</div>
|
||||
<div style="margin-top: 50px;">
|
||||
<div class="fragment">$$ \texttt{COUNT}(\textbf{AX, AY, BX, BY, CX, CY, }\underline{\textbf{DX, DY}}) $$</div>
|
||||
<div class="fragment">$$Q(\mathcal R+\Delta\mathcal R, \mathcal S) \sim O( (|\mathcal R| + |\Delta\mathcal D|) \cdot |\mathcal S|)$$</div>
|
||||
</div>
|
||||
<div style="margin-top: 50px;">
|
||||
<div class="fragment">$$ 6 + \texttt{COUNT}(\underline{\textbf{DX, DY}}) $$</div>
|
||||
<div class="fragment">$$\texttt{VIEW} + \texttt{COUNT}(\Delta\mathcal R \times \mathcal S) \sim O(|\Delta\mathcal R| \cdot |\mathcal S|)$$</div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<section>
|
||||
<p>$+$ is like $\uplus$</p>
|
||||
<p>$\bowtie$ is like $\times$</p>
|
||||
|
||||
<p style="margin-top: 100px;" class="fragment">Are these types of patterns common?</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>Rings/Semirings</h3>
|
||||
|
||||
<p><b>Semiring: </b> $\left< \mathbb S, +, \times, \mathbb 0, \mathbb 1\right>$</p>
|
||||
|
||||
<p>Any set of 'things' $\mathbb S$ such that...</p>
|
||||
<table>
|
||||
<tr>
|
||||
<td style="vertical-align: middle">
|
||||
<p class="fragment">"Closed"</p>
|
||||
$$S_i + S_j = S_k$$
|
||||
$$S_i \times S_j = S_k$$
|
||||
</td>
|
||||
<td>
|
||||
<p class="fragment">Additive, Multiplicative Identities</p>
|
||||
$$S_i + 0 = S_i$$
|
||||
$$S_i \times 1 = S_i$$
|
||||
$$S_i \times 0 = 0$$
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
$$S_i \times (S_j + S_k) = (S_i \times S_j) + (S_j \times S_k)$$
|
||||
<p class="fragment">Addition distributes over multiplication</p>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>Rings/Semirings</h3>
|
||||
|
||||
<p><b>Ring: </b> $\left< \mathbb S, +, \times, \mathbb 0, \mathbb 1, -\right>$</p>
|
||||
|
||||
<p>Any semiring with an additive inverse....</p>
|
||||
|
||||
$$S_i + (-S_i) = 0$$
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<img src="2021-04-01/morbo.png" height="500px">
|
||||
|
||||
<h3>THIS TANGENT ENDS NOW</h3>
|
||||
<attribution>Futurama is © 20th Century Fox Television</attribution>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<section>
|
||||
<div style="font-size: 150%;">
|
||||
$$\texttt{WHEN } \mathcal D \leftarrow \mathcal{D}+\Delta\mathcal D \texttt{ DO: }\\
|
||||
\texttt{VIEW} \leftarrow \texttt{VIEW} + \Delta Q(\mathcal D,\Delta\mathcal D)$$
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>Basic Questions</h3>
|
||||
<ul>
|
||||
<li>What does $\Delta \mathcal R$ mean?</li>
|
||||
<li>What is $\mathcal R + \Delta \mathcal R$?</li>
|
||||
<li>How do we derive $\Delta Q$?</li>
|
||||
</ul>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<section>
|
||||
<h3>What is $\Delta \mathcal R$?</h3>
|
||||
<div class="fragment" data-fragment-index="1">
|
||||
<p style="margin-top: 50px;" class="fragment highlight-blue" data-fragment-index="2">Insertions</p>
|
||||
<p style="margin-top: 50px;" class="fragment highlight-blue" data-fragment-index="2">Deletions</p>
|
||||
<p style="margin-top: 50px;" class="fragment highlight-grey" data-fragment-index="2">Updates</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>What is $\Delta \mathcal R$?</h3>
|
||||
<p style="margin-top: 50px;">A Set/Bag of Insertions</p>
|
||||
<p style="margin-top: 10px;">+</p>
|
||||
<p style="margin-top: 10px;">A Set/Bag of Deletions</p>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<section>
|
||||
<h3>What is $\Delta \mathcal R$?</h3>
|
||||
<table>
|
||||
<tr style="font-size: 150%;">
|
||||
<th>$\mathcal R$</th>
|
||||
<th>$+$</th>
|
||||
<th>$\Delta \mathcal R$</th>
|
||||
</tr>
|
||||
<tr class="fragment">
|
||||
<td style="vertical-align: middle">A Set/Bag</td>
|
||||
<td style="vertical-align: middle">"+"</td>
|
||||
<td>A Set/Bag of Insertions<br/>
|
||||
A Set/Bag of Deletions</td>
|
||||
</tr>
|
||||
<tr class="fragment">
|
||||
<td style="vertical-align: middle; text-align: right;">$\mathcal R$</td>
|
||||
<td><div class="fragment">$\cup$/$\uplus$</div>
|
||||
<div class="fragment">$-$</div></td>
|
||||
<td style="text-align: left">
|
||||
<div>$\Delta \mathcal R_{ins}$</div>
|
||||
<div>$\Delta \mathcal R_{del}$</div></td>
|
||||
</tr>
|
||||
</table>
|
||||
<p class="fragment">... this feels a bit wrong</p>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<section>
|
||||
<p>
|
||||
$\texttt{VIEW} \leftarrow \texttt{VIEW} + $<span class="fragment highlight-red">$\Delta Q(\mathcal D, \Delta \mathcal D)$</span>
|
||||
</p>
|
||||
<div class="fragment">
|
||||
<p style="margin-top: 100px;">Given $Q(\mathcal R, \mathcal S, \ldots)$</p>
|
||||
<p style="margin-top: 10px;">Construct $\Delta Q(\mathcal R, \Delta \mathcal R, \mathcal S, \Delta \mathcal S, \ldots)$</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<p>$\sigma(\mathcal R) \rightarrow \sigma(\mathcal R \uplus \Delta \mathcal R)$</p>
|
||||
<p class="fragment" data-fragment-index="1">
|
||||
$ \equiv $
|
||||
<span class="fragment highlight-red" data-fragment-index="2">$\sigma(\mathcal R)$</span>
|
||||
$ \uplus $
|
||||
<span class="fragment highlight-blue" data-fragment-index="3">$\sigma(\Delta \mathcal R)$</span>
|
||||
</p>
|
||||
<div style="margin-top: 50px; font-size: 80%;">
|
||||
<p class="fragment" data-fragment-index="2" style="color: red;">$Q(\mathcal D) = \sigma(\mathcal R)$</p>
|
||||
<p class="fragment" data-fragment-index="3" style="color: #1b91ff;">$\Delta Q(\mathcal D, \Delta \mathcal D) = \sigma(\Delta \mathcal R)$</p>
|
||||
</div>
|
||||
<p class="fragment" data-fragment-index="4">Set/Bag difference also commutes through selection</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<p>$\pi(\mathcal R) \rightarrow \pi(\mathcal R \uplus \Delta \mathcal R)$</p>
|
||||
<p class="fragment" data-fragment-index="1">
|
||||
$ \equiv $
|
||||
<span class="fragment highlight-red" data-fragment-index="2">$\pi(\mathcal R)$</span>
|
||||
$ \uplus $
|
||||
<span class="fragment highlight-blue" data-fragment-index="3">$\pi(\Delta \mathcal R)$</span>
|
||||
</p>
|
||||
<div style="margin-top: 50px; font-size: 80%;">
|
||||
<p class="fragment" data-fragment-index="2" style="color: red;">$Q(\mathcal D) = \pi(\mathcal R)$</p>
|
||||
<p class="fragment" data-fragment-index="3" style="color: #1b91ff;">$\Delta Q(\mathcal D, \Delta \mathcal D) = \pi(\Delta \mathcal R)$</p>
|
||||
</div>
|
||||
<p class="fragment" data-fragment-index="4">Does this work under set semantics?</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<p>$\mathcal R_1 \uplus \mathcal R_2 \rightarrow \mathcal R_1 \uplus \Delta \mathcal R_1 \uplus \mathcal R_2 \uplus \Delta \mathcal R_2$</p>
|
||||
<p class="fragment" data-fragment-index="1">
|
||||
$ \equiv $
|
||||
<span class="fragment highlight-red" data-fragment-index="2">$\mathcal R_1 \uplus \mathcal R_2$</span>
|
||||
$ \uplus $
|
||||
<span class="fragment highlight-blue" data-fragment-index="3">$\Delta \mathcal R_1 \uplus \Delta \mathcal R_2$</span>
|
||||
</p>
|
||||
<div style="margin-top: 50px; font-size: 80%;">
|
||||
<p class="fragment" data-fragment-index="2" style="color: red;">$Q(\mathcal D) = \mathcal R_1 \uplus \mathcal R_2$</p>
|
||||
<p class="fragment" data-fragment-index="3" style="color: #1b91ff;">$\Delta Q(\mathcal D, \Delta \mathcal D) = \Delta \mathcal R_1 \uplus \Delta \mathcal R_2$</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>How do we derive $\Delta Q$?</h3>
|
||||
<p style="margin-top: 50px;"><b>So far:</b>
|
||||
$$\Delta Q_{ins}(\mathcal D, \Delta \mathcal D) = Q(\Delta \mathcal Q_{ins})$$
|
||||
$$\Delta Q_{del}(\mathcal D, \Delta \mathcal D) = Q(\Delta \mathcal Q_{del})$$
|
||||
</p>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<section>
|
||||
$$\mathcal R \times \mathcal S\ \rightarrow\ (\mathcal R \uplus \Delta \mathcal R) \times \mathcal S$$
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<div>
|
||||
$$\mathcal{R} = \{\ \textbf{A, B, C}\ \},\ \mathcal S = \{\ \textbf{X, Y}\ \}$$
|
||||
$$Q(\mathcal R, \mathcal S) = \texttt{COUNT}(\mathcal R \times \mathcal S)$$
|
||||
</div>
|
||||
<div style="margin-top: 30px;" class="fragment">
|
||||
$$\mathcal R \times \mathcal S = \{\ \textbf{AX, AY, BX, BY, CX, CY}\ \}$$
|
||||
</div>
|
||||
<div style="margin-top: 60px;" class="fragment">
|
||||
$$\Delta\mathcal{R} = \{\ \textbf{D}\ \}$$
|
||||
</div>
|
||||
<div style="margin-top: 30px;" class="fragment">
|
||||
$$(\mathcal R \uplus \Delta\mathcal R) \times \mathcal S =\\ \{\ \textbf{AX, AY, BX, BY, CX, CY, }\underline{\textbf{DX, DY}}\ \}$$
|
||||
<div class="fragment">$\equiv $
|
||||
<span class="fragment highlight-red">$\mathcal R \times \mathcal S$</span>
|
||||
$\uplus$
|
||||
<span class="fragment highlight-blue">$\Delta \mathcal R \times \mathcal S$</span>
|
||||
</div>
|
||||
<p class="fragment">... but what if $\mathcal R$ and $\mathcal S$ <b>both</b> change</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<div>
|
||||
$$(\mathcal R_1 \uplus \Delta \mathcal R_1) \times (\mathcal R_2 \uplus \Delta \mathcal R_2)$$
|
||||
</div>
|
||||
<div style="margin-top: 50px;" class="fragment">
|
||||
$$\left(\mathcal R_1 \times (\mathcal R_2 \uplus \Delta \mathcal R_2)\right) \uplus \left(\Delta \mathcal R_1 \times (\mathcal R_2 \uplus \Delta \mathcal R_2)\right)$$
|
||||
</div>
|
||||
<div style="margin-top: 50px;" class="fragment">
|
||||
$$\left(\mathcal R_1 \times \mathcal R_2\right) \uplus \left(\mathcal R_1 \times \Delta \mathcal R_2\right) \uplus \left(\Delta \mathcal R_1 \times (\mathcal R_2 \uplus \Delta \mathcal R_2)\right)$$
|
||||
</div>
|
||||
<div style="margin-top: 50px;" class="fragment">
|
||||
<span class="fragment highlight-red">$\left(\mathcal R_1 \times \mathcal R_2\right)$</span> $\uplus$ <span style="width: 200px"> </span>
|
||||
<span class="fragment highlight-blue">$\left(\mathcal R_1 \times \Delta \mathcal R_2\right) \uplus \left(\Delta \mathcal R_1 \times \mathcal R_2\right) \uplus \left(\Delta \mathcal R_1 \times \Delta \mathcal R_2\right)$</span>
|
||||
</div>
|
||||
<div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<section>
|
||||
<svg data-src="2021-04-01/CustomerOrderLineitemExample.svg">
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<section>
|
||||
<h3>Multisets</h3>
|
||||
<p>$$\{1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 4, 4, 4, 4, 4, 4, 5\}$$</p>
|
||||
<p class="fragment" data-fragment-index="1">(not compact)</p>
|
||||
|
||||
<p class="fragment" data-fragment-index="2" style="margin-top: 100px;">
|
||||
$$\{1 \rightarrow \times 3; 2 \rightarrow \times 5; 3 \rightarrow \times 2; 4 \rightarrow \times 6; 5 \rightarrow \times 1\}$$
|
||||
</p>
|
||||
<p class="fragment" data-fragment-index="3">Multiset representation: Tuple $\rightarrow$ <span class="fragment highlight-grey strike" data-fragment-index="4"># of occurrences</span></p>
|
||||
<p style="width: 90%; text-align: right;" class="fragment" data-fragment-index="4">multiplicity</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>Multiset Deltas</h3>
|
||||
|
||||
<p class="fragment">Insertions = Positive Multiplicity</p>
|
||||
<p class="fragment">Deletions = Negative Multiplicity</p>
|
||||
<p class="fragment">+ = Bag/Multiset Union</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>Multiset Deltas</h3>
|
||||
|
||||
<h4 style="margin-top: 50px;">What does Union Do?</h4>
|
||||
<p>
|
||||
$\{ A \rightarrow 1, B \rightarrow 2 \} \uplus \{ B \rightarrow 2, C \rightarrow 4 \} = $
|
||||
</p>
|
||||
<p class="fragment">
|
||||
$=\{$
|
||||
<span class="fragment">$A \rightarrow 1,$</span>
|
||||
<span class="fragment">$B \rightarrow 5,$</span>
|
||||
<span class="fragment">$C \rightarrow 4$</span>
|
||||
$\}$
|
||||
</p>
|
||||
<p class="fragment" style="margin-top: 50px;">
|
||||
$\{ A \rightarrow 1 \} \uplus \{ A \rightarrow -1 \}$
|
||||
<span class="fragment">$= \{A \rightarrow 0\}$</span>
|
||||
<span class="fragment">$ = \{\}$</span>
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>Multiset Deltas</h3>
|
||||
|
||||
<h4 style="margin-top: 50px;">What does Cross-Product Do?</h4>
|
||||
<p>
|
||||
$\{ A \rightarrow 1, B \rightarrow 3 \} \times \{ C \rightarrow 4 \} $
|
||||
</p>
|
||||
<p class="fragment">
|
||||
</span>
|
||||
$= \{ \left< A,C \right> \rightarrow$
|
||||
<span class="fragment">$4$</span>
|
||||
$\left< B,C \right> \rightarrow$
|
||||
<span class="fragment">$12$</span>
|
||||
$\}$
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>Multiset Deltas</h3>
|
||||
|
||||
<h4 style="margin-top: 50px;">What does Projection Do?</h4>
|
||||
<p>
|
||||
$\pi_{\text{1st attr}}\{
|
||||
\left< A,X \right> \rightarrow 1,
|
||||
\left< A,Y \right> \rightarrow 2,
|
||||
\left< B,Z \right> \rightarrow 5,
|
||||
\}$
|
||||
</p>
|
||||
<p class="fragment">
|
||||
$= \{$
|
||||
<span class="fragment highlight-red">$A \rightarrow 1, A \rightarrow 2,$</span>
|
||||
$B \rightarrow 5\}$
|
||||
</p>
|
||||
<p class="fragment">
|
||||
$= \{A \rightarrow 3, B \rightarrow 5\}$
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
$$\bowtie\; \equiv \times$$
|
||||
$$\pi, \uplus \equiv +$$
|
||||
|
||||
<b class="fragment">Rings strike again!</b>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>Multiset Deltas</h3>
|
||||
|
||||
<h4 style="margin-top: 50px;">What does Selection Do?</h4>
|
||||
<p>
|
||||
$\sigma_{A}\{
|
||||
A \rightarrow 1,
|
||||
B \rightarrow 5,
|
||||
C \rightarrow 3
|
||||
\}$
|
||||
</p>
|
||||
<p class="fragment">
|
||||
$= \{
|
||||
A \rightarrow 1,
|
||||
B \rightarrow 0,
|
||||
C \rightarrow 0 \}$
|
||||
</p>
|
||||
<p class="fragment">
|
||||
$= \{ A \rightarrow 1\}$
|
||||
</p>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<b>Next class: Updates</b>
|
||||
</section>
|
|
@ -0,0 +1,394 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="220.08746mm"
|
||||
height="135.59749mm"
|
||||
viewBox="0 0 220.08746 135.59749"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"
|
||||
sodipodi:docname="CustomerOrderLineitemExample.svg">
|
||||
<defs
|
||||
id="defs2" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.7"
|
||||
inkscape:cx="478.32708"
|
||||
inkscape:cy="442.33661"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer2"
|
||||
inkscape:document-rotation="0"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1053"
|
||||
inkscape:window-x="960"
|
||||
inkscape:window-y="398"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(12.199492,-26.674965)">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="1.9336443"
|
||||
y="140.42586"
|
||||
id="text835"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan833"
|
||||
x="1.9336443"
|
||||
y="140.42586"
|
||||
style="stroke-width:0.264583">CUSTOMER</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="79.71537"
|
||||
y="140.42586"
|
||||
id="text839"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan837"
|
||||
x="79.71537"
|
||||
y="140.42586"
|
||||
style="stroke-width:0.264583">ORDERS</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="155.59869"
|
||||
y="106.88624"
|
||||
id="text843"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan841"
|
||||
x="155.59869"
|
||||
y="106.88624"
|
||||
style="stroke-width:0.264583">LINEITEM</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="6.6472955"
|
||||
y="104.14868"
|
||||
id="text847"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan845"
|
||||
x="6.6472955"
|
||||
y="104.14868"
|
||||
style="stroke-width:0.264583">σ<tspan
|
||||
style="font-size:65%;baseline-shift:sub"
|
||||
id="tspan849">mktsegment</tspan></tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="81.683975"
|
||||
y="104.81544"
|
||||
id="text855"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan853"
|
||||
x="81.683975"
|
||||
y="104.81544"
|
||||
style="stroke-width:0.264583">σ<tspan
|
||||
style="font-size:65%;baseline-shift:sub"
|
||||
id="tspan851">orderdate</tspan></tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="162.5451"
|
||||
y="68.476845"
|
||||
id="text861"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan859"
|
||||
x="162.5451"
|
||||
y="68.476845"
|
||||
style="stroke-width:0.264583">σ<tspan
|
||||
style="font-size:65%;baseline-shift:sub"
|
||||
id="tspan857">shipdate</tspan></tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="61.740154"
|
||||
y="70.674377"
|
||||
id="text865"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan863"
|
||||
x="61.740154"
|
||||
y="70.674377"
|
||||
style="stroke-width:0.264583">⋈</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="116.2443"
|
||||
y="38.39521"
|
||||
id="text869"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan867"
|
||||
x="116.2443"
|
||||
y="38.39521"
|
||||
style="stroke-width:0.264583">⋈</tspan></text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 31.988562,111.17864 v 17.86318"
|
||||
id="path871" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 102.01368,111.17864 v 17.86318"
|
||||
id="path873" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 180.87455,76.253633 V 94.116804"
|
||||
id="path875" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 67.103629,76.253633 31.75,17.863171"
|
||||
id="path877"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 66.57446,76.253633 -31.75,17.863171"
|
||||
id="path879"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 121.07861,44.503631 68.16196,62.366802"
|
||||
id="path881"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 121.60781,44.503631 52.91667,17.863171"
|
||||
id="path883"
|
||||
sodipodi:nodetypes="cc" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer2"
|
||||
inkscape:label="Frame 1"
|
||||
style="display:inline"
|
||||
transform="translate(14.727414,4.7646198)"
|
||||
class="fragment fade-in-then-out">
|
||||
<rect
|
||||
style="fill:none;stroke:#800000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="rect904"
|
||||
width="205.79594"
|
||||
height="116.97931"
|
||||
x="-1.4828367"
|
||||
y="-4.2646198"
|
||||
ry="4.327816" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#800000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="-14.810096"
|
||||
y="56.536854"
|
||||
id="text908"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan906"
|
||||
x="-14.810096"
|
||||
y="56.536854"
|
||||
style="fill:#800000;stroke-width:0.264583">Δ</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="36.018818"
|
||||
y="129.43761"
|
||||
id="text912"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan910"
|
||||
x="36.018818"
|
||||
y="129.43761"
|
||||
style="stroke-width:0.264583">Δ[ (σ(C) ⋈ σ(O)) ⋈ σ(L) ]</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="g924"
|
||||
inkscape:label="Frame 2"
|
||||
style="display:inline"
|
||||
transform="translate(14.727414,4.7646198)"
|
||||
class="fragment fade-in-then-out">
|
||||
<rect
|
||||
style="fill:none;stroke:#800000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="rect914"
|
||||
width="128.68332"
|
||||
height="86.517647"
|
||||
x="-1.4828367"
|
||||
y="26.197044"
|
||||
ry="4.327816" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#800000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="-14.810096"
|
||||
y="56.536854"
|
||||
id="text918"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan916"
|
||||
x="-14.810096"
|
||||
y="56.536854"
|
||||
style="fill:#800000;stroke-width:0.264583">Δ</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="36.018818"
|
||||
y="129.43761"
|
||||
id="text922"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan920"
|
||||
x="36.018818"
|
||||
y="129.43761"
|
||||
style="stroke-width:0.264583">Δ[ (σ(C) ⋈ σ(O)) ] ⋈ σ(L) </tspan></text>
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="g984"
|
||||
inkscape:label="Frame 2b"
|
||||
style="display:inline"
|
||||
transform="translate(14.727414,4.7646198)"
|
||||
class="fragment fade-in-then-out">
|
||||
<rect
|
||||
style="fill:none;stroke:#800000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="rect966"
|
||||
width="128.68332"
|
||||
height="86.517647"
|
||||
x="-1.4828367"
|
||||
y="26.197044"
|
||||
ry="4.327816" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#800000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="-14.810096"
|
||||
y="56.536854"
|
||||
id="text970"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan968"
|
||||
x="-14.810096"
|
||||
y="56.536854"
|
||||
style="fill:#800000;stroke-width:0.264583">Δ</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="36.018818"
|
||||
y="129.43761"
|
||||
id="text974"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan972"
|
||||
x="36.018818"
|
||||
y="129.43761"
|
||||
style="stroke-width:0.264583">Δ[ (σ(C) ⋈ σ(O)) ] ⋈ σ(L) </tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="134.82114"
|
||||
y="104.74139"
|
||||
id="text978"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan976"
|
||||
x="134.82114"
|
||||
y="104.74139"
|
||||
style="fill:#800000;stroke-width:0.264583">= ∅</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="171.48553"
|
||||
y="129.43761"
|
||||
id="text982"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan980"
|
||||
x="171.48553"
|
||||
y="129.43761"
|
||||
style="stroke-width:0.264583">= ∅</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="g952"
|
||||
inkscape:label="Frame 3"
|
||||
style="display:inline"
|
||||
transform="translate(14.727414,4.7646198)"
|
||||
class="fragment fade-in-then-out">
|
||||
<rect
|
||||
style="fill:none;stroke:#800000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="rect934"
|
||||
width="56.05949"
|
||||
height="56.842133"
|
||||
x="148.80055"
|
||||
y="26.197044"
|
||||
ry="4.327816" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#800000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="135.47325"
|
||||
y="56.536854"
|
||||
id="text938"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan936"
|
||||
x="135.47325"
|
||||
y="56.536854"
|
||||
style="fill:#800000;stroke-width:0.264583">Δ</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="36.018818"
|
||||
y="129.43761"
|
||||
id="text942"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan940"
|
||||
x="36.018818"
|
||||
y="129.43761"
|
||||
style="stroke-width:0.264583">(σ(C) ⋈ σ(O)) ⋈ Δ[ σ(L) ]</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="g964"
|
||||
inkscape:label="Frame 4"
|
||||
style="display:inline"
|
||||
transform="translate(14.727414,4.7646198)"
|
||||
class="fragment fade-in-then-out">
|
||||
<rect
|
||||
style="fill:none;stroke:#800000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="rect954"
|
||||
width="56.059494"
|
||||
height="20.227676"
|
||||
x="148.80055"
|
||||
y="61.122051"
|
||||
ry="4.327816" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#800000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="135.47325"
|
||||
y="72.41185"
|
||||
id="text958"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan956"
|
||||
x="135.47325"
|
||||
y="72.41185"
|
||||
style="fill:#800000;stroke-width:0.264583">Δ</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="36.018818"
|
||||
y="129.43761"
|
||||
id="text962"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan960"
|
||||
x="36.018818"
|
||||
y="129.43761"
|
||||
style="stroke-width:0.264583">(σ(C) ⋈ σ(O)) ⋈ σ( Δ[L] )</tspan></text>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 20 KiB |
1024
src/teaching/cse-562/2021sp/slide/2021-04-01/DBToQ.svg
Normal file
1024
src/teaching/cse-562/2021sp/slide/2021-04-01/DBToQ.svg
Normal file
File diff suppressed because it is too large
Load diff
After Width: | Height: | Size: 68 KiB |
BIN
src/teaching/cse-562/2021sp/slide/2021-04-01/morbo.png
Normal file
BIN
src/teaching/cse-562/2021sp/slide/2021-04-01/morbo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 234 KiB |
Loading…
Reference in a new issue