Materialized Views

This commit is contained in:
Oliver Kennedy 2021-04-03 13:52:51 -04:00
parent 675865ff2f
commit 5543e26330
Signed by: okennedy
GPG key ID: 3E5F9B3ABD3FDB60
6 changed files with 1920 additions and 1 deletions

View file

@ -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"

View file

@ -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>

View file

@ -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 views 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 &amp; 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">&nbsp;</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>

View file

@ -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

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 234 KiB