Chapter 6-Relearional Algebra and Calcules (Autosaved)
Chapter 6-Relearional Algebra and Calcules (Autosaved)
Chapter 6-Relearional Algebra and Calcules (Autosaved)
06/22/2024 3
Preliminaries
A query is applied to relation instances, and the result of a query is
also a relation instance.
Schemas of input relations for a query are fixed (but query will run
regardless of instance!)
The schema for the result of a given query is also fixed! Determined by
definition of query language constructs.
5 06/22/2024
Relational Algebra
Basic operations:
Selection ( ) Selects a subset of rows from relation.
Projection ( ) Deletes unwanted columns from relation.
Cross-product ( ) Allows us to combine two relations.
Set-difference
( ) Tuples in reln. 1, but not in reln. 2.
Union ( ) Tuples in reln. 1 and in reln. 2.
Additional operations:
Intersection, join, division, renaming: Not essential, but (very!)
useful.
Since each operation returns a relation, operations can be
composed! (Algebra is “closed”.)
06/22/2024 6
What is an “Algebra”
Set of operands and operations that they are “closed” under all
compositions.
Examples
Boolean algebra - operands are the logical values True and
False, and operations include AND(), OR(), NOT(), etc.
Integer algebra - operands are the set of integers, operands
include ADD(), SUB(), MUL(), NEG(), etc. many of which have
special in-fix operator symbols (+,-,*,-)
In our case operands are relations, what are the operators?
06/22/2024 7
Projection
Deletes attributes that are not
sname rating
in projection list.
Schema of result contains yuppy 9
exactly the fields in the lubber 8
projection list, with the same guppy 5
names that they had in the rusty 10
(only) input relation. sname,rating(S2)
Projection operator has to
eliminate duplicates! (Why??) age
Note: real systems typically 35.0
don’t do duplicate elimination 55.5
unless the user explicitly asks
for it. (Why not?) age(S2)
8 06/22/2024
Selection
Selects rows that satisfy
selection condition. sid sname rating age
No duplicates in result! 28 yuppy 9 35.0
(Why?) 58 rusty 10 35.0
Schema of result identical to rating 8(S2)
schema of (only) input sname rating
relation. yuppy 9
Result relation can be the rusty 10
input for another relational
algebra operation! (Operator sname,rating( rating 8(S2))
composition.)
9 06/22/2024
Union, Intersection, Set-Difference
All of these operations take sid sname rating age
two input relations, which 22 dustin 7 45.0
must be union-compatible: 31 lubber 8 55.5
Same number of fields. 58 rusty 10 35.0
`Corresponding’ fields have 44 guppy 5 35.0
the same type. 28 yuppy 9 35.0
What is the schema of result?
S1 S2
sid sname rating age
sid sname rating age
22 dustin 7 45.0
31 lubber 8 55.5
S1 S2 58 rusty 10 35.0
10 06/22/2024
Cross-Product
Each row of S1 is paired with each row of R1.
Result schema has one field per field of S1 and R1, with
field names `inherited’ if possible.
Conflict: Both S1 and R1 have a field called Sid.
(sid) sname rating age (sid) bid day
22 dustin 7 45.0 22 101 10/10/96
22 dustin 7 45.0 58 103 11/12/96
31 lubber 8 55.5 22 101 10/10/96
31 lubber 8 55.5 58 103 11/12/96
58 rusty 10 35.0 22 101 10/10/96
58 rusty 10 35.0 58 103 11/12/96
06/22/2024 12
Joins
Equi-Join: A special case of condition join where the
condition c contains only equalities and ^.
sid sname rating age bid day
22 dustin 7 45.0 101 10/10/96
58 rusty 10 35.0 103 11/12/96
06/22/2024 13
Find names of sailors who’ve reserved boat #103
06/22/2024 14
Find names of sailors who’ve reserved a
red boat
Information about boat color only available in Boats; So, need
an extra join:
06/22/2024 15
Find sailors who’ve reserved a red or a
green boat
Can identify all red or green boats, then find sailors
who’ve reserved one of these boats:
(Tempboats, ( Boats))
color ' red ' color ' green '
sname(Tempboats Re serves Sailors)
06/22/2024 16
Find sailors who’ve reserved a red and a green boat
Previous approach won’t work! Must identify sailors who’ve
reserved red boats, sailors who’ve reserved green boats, then find
the intersection (note that sid is a key for Sailors):
06/22/2024 17
Relational Calculus
Comes in two flavors: Tuple relational calculus (TRC) and Domain
relational calculus (DRC).
Calculus has variables, constants, comparison ops, logical connectives,
and quantifiers.
TRC: Variables range over (i.e., get bound to) tuples.
DRC: Variables range over domain elements (= field values).
Both TRC and DRC are simple subsets of first-order logic.
Expressions in the calculus are called formulas. An answer tuple is
essentially an assignment of constants to variables that make the formula
evaluate to true.
06/22/2024 18
Tuple Relational Calculus
Query has the form: { T | p(T)}.
Answer includes all tuples T that make the formula p(T) be
true.
Formula is recursively defined, starting with simple atomic
formulas (getting tuples from relations or making comparisons
of values), and building bigger and better formulas using the
logical connectives.
06/22/2024 19
TRC Formulas
Atomic formula:
R Rel, or R.a op S.b, or R.a op constant
op is one of , , , , ,
Formula:
an atomic formula, or
p, p q, p q
, where p and q are formulas, or
X ( p( X )) , where variable X is free in p(X), or
X ( p( X )) , where variable X is free in p(X)
06/22/2024 20
Free and Bound Variables
The use of quantifiers X and X in a formula is said
to bind X.
A variable that is not bound is free.
06/22/2024 21
Find all sailors with a rating above 7
{S | S Sailors ^ S.rating > 7}
Query is evaluated on an instance of Sailors
Tuple variable S is instantiated to each tuple of this
instance in turn, and the condition “S.rating > 7” is
applied to each such tuple.
Answer contains all instances of S (which are tuples of
Sailors) satisfying the condition.
06/22/2024 22
Find sailors rated > 7 who’ve reserved boat #103
{S | (S Sailors) ^ (S.rating > 7) ^ ( R Reserves
(R.sid = S.sid ^ R.bid = 103))}
Note the use of to find a tuple in Reserves that `joins
with’ the Sailors tuple under consideration.
R is bound, S is not.
06/22/2024 23
Unsafe Queries, Expressive Power
It is possible to write syntactically correct calculus
queries that have an infinite number of answers! Such
queries are called unsafe.
-E.g S | S Sailors
06/22/2024 24
Summary
The relational model has rigorously defined query languages
that are simple and powerful.
Relational algebra is more operational; useful as internal
representation for query evaluation plans.
Relational calculus is non-operational, and users define
queries in terms of what they want, not in terms of how to
compute it. (Declarativeness.)
Several ways of expressing a given query; a query optimizer
should choose the most efficient version.
Algebra and safe calculus have same expressive power,
leading to the notion of relational completeness.
06/22/2024 25
Nested Relations
Attributes can be scalar (as before) or relation-valued
Definition is recursive
Example:
create table Book (title: string, author: string,
06/22/2024 26
Nested Relational Algebra
A spectrum of algebras can be defined
At one end:
Relational algebra plus nest () and unnest ():
If B =
06/22/2024 27
Nesting and Unnesting
06/22/2024 29
Nested Relations Summary
An early step on the way to OODBMS
No products, only prototypes, but:
Many ideas from NF2 relations have survived
Collection types in SQL3 (nesting, unnesting)
Algebra ideas useful for Object Database QP
Can provide a more natural model of data
Are a straightforward extension of relations:
many solutions are thus also straightforward
formal foundation of relational model remains
06/22/2024 30
.
Thank You!
06/22/2024 31