Relational Algebra#
Relational Calculus#
Relational calculus is a declarative representation of queries with operation description which we see in relational algebra (Codd’s Theorem).
Operators#
Unary : Operators of a single relation
Projection (\(\pi\)): Retains only desired columns
SELECT
$\( \pi_\texttt{col_expr} \)$Cascade property: $\( \pi_{c1} \equiv \pi_{c1}(\pi_{c1 \land c2}) \)$
Selection (\(\sigma\)): Select a subset of rows
WHERE
$\(\sigma_\texttt{pred}\)$Cascade property: $\( \sigma_{c1 \land c2} \equiv \sigma_{c1}\sigma_{c2} \)$
Commutative property: $\( \sigma_{c1}\sigma_{c2} \equiv \sigma_{c2}\sigma_{c1} \)$
Renaming (\(\rho\)): Rename attributes and relations
AS
$\(\rho(\texttt{rename}, \texttt{relational_expr})\)$
Binary : Operators of a pair relations
Union (\(\cup\))
UNION [ALL]
Think of it as concatenation
Requires the pairs to be union compatible (same number of field in the same order)
Difference (\(-\))
EXCEPT [ALL]
Cross Product (\(\times\))
JOIN
Compound : A combination of operators
Intersection (\(\cap\))
INTERSECT
$\( A \cap B \equiv A - (A-B) \)$
Join (\(\Join\))
Theta join $\( \Join_\texttt{ON} \)\( \)\( A \Join B \equiv \sigma_\texttt{pred}(A \times B) \)$
Natural join $\( A \Join B \equiv \pi_\texttt{col_expr} \sigma_\texttt{pred}(A \times B) \)$
Where \(\texttt{pred}\) is common columns.
Other : Some academics use the following as useful macros
* Group by, aggregation, and having
$$ \gamma_\texttt{groupby, aggregate, having} $$