Relational Algebra and Relational Calculus Transparencies
Relational Algebra and Relational Calculus Transparencies
Relational Algebra and Relational Calculus Transparencies
2
Introduction
• Relational algebra and relational calculus are
formal languages associated with the relational
model.
• Informally, relational algebra is a (high-level)
procedural language and relational calculus a
non-procedural language.
• However, formally both are equivalent to one
another.
• A language that produces a relation that can be
derived using relational calculus is relationally
complete.
3
Relational Algebra
• Relational algebra operations work on one or
more relations to define another relation
without changing the original relations.
4
Relational Algebra
• 5 basic operations in relational algebra:
Selection, Projection, Cartesian product,
Union, and Set Difference.
6
Relational Algebra Operations
7
Selection (or Restriction)
• predicate (R)
– Works on a single relation R and defines a
relation that contains only those tuples
(rows) of R that satisfy the specified
condition (predicate).
8
Example - Selection (or
Restriction)
• List all staff with a salary greater than
£10,000.
9
Projection
• col1, . . . , coln(R)
– Works on a single relation R and defines a
relation that contains a vertical subset of
R, extracting the values of specified
attributes and eliminating duplicates.
10
Example - Projection
• Produce a list of salaries for all staff,
showing only staffNo, fName, lName,
and salary details.
11
Union
• RS
– Union of two relations R and S defines a
relation that contains all the tuples of R, or
S, or both R and S, duplicate tuples being
eliminated.
– R and S must be union-compatible.
city(Branch) city(PropertyForRent)
13
Set Difference
• R–S
– Defines a relation consisting of the tuples
that are in relation R, but not in S.
– R and S must be union-compatible.
14
Example - Set Difference
• List all cities where there is a branch
office but no properties for rent.
city(Branch) – city(PropertyForRent)
15
Intersection
• RS
– Defines a relation consisting of the set
of all tuples that are in both R and S.
– R and S must be union-compatible.
16
Example – Intersection1
• List all cities where there is both a
branch office and at least one property
for rent.
city(Branch) city(PropertyForRent)
17
Cartesian product
• RXS
– Defines a relation that is the concatenation
of every tuple of relation R with every tuple
of relation S.
18
Client Viewing
clientNo fname lname V.ClientNo propNo comment
19
Example - Cartesian Product
• List the names and comments of all clients
who have viewed a property for rent.
(clientNo, fName, lName(Client)) X (clientNo, propertyNo,comment
(Viewing))
20
Example - Cartesian Product
and Selection
• Use selection operation to extract those tuples
where Client.clientNo = Viewing.clientNo.
sClient.clientNo = viewing.clientNo((ÕclientNo,fName,lName(Client))
(ÕclientNo,propertyNo,comment(Viewing)))
23
Theta join (-join)
• R FS
– Defines a relation that contains tuples
satisfying the predicate F from the
Cartesian product of R and S.
– The predicate F is of the form R.ai S.bi
where may be one of the comparison
operators (<, , >, , =, ).
24
Theta join (-join)
• Can rewrite Theta join using basic
Selection and Cartesian product
operations.
R FS = F(R S)
Degree of a Theta join is sum of degrees of the
operand relations R and S. If predicate F contains
only equality (=), the term Equijoin is used.
25
Example - Equijoin
• List the names and comments of all
clients who have viewed a property for
rent.
(clientNo,fName,lName(Client)) Client.clientNo =
Viewing.clientNo clientNo,propertyNo,comment(Viewing))
26
Natural Join
• R S
– An Equijoin of the two relations R and S
over all common attributes x. One
occurrence of each common attribute is
eliminated from the result.
27
Example - Natural Join
• List the names and comments of all
clients who have viewed a property for
rent.
(clientNo,fName,lName(Client))
(clientNo,propertyNo,comment(Viewing))
28
Outer join
• To display rows in the result that do not
have matching values in the join column,
use Outer join.
• R S
– (Left) outer join is join in which tuples
from R that do not have matching
values in common columns of S are
also included in result relation.
29
Example - Left Outer join
• Produce a status report on property
viewings.
propertyNo,street,city(PropertyForRent)
Viewing
30
Semijoin
• R F S
– Defines a relation that contains the tuples of
R that participate in the join of R with S.
R FS = A(R F S)
31
Example - Semijoin
• List complete details of all staff who work
at the branch in Glasgow.
32
Division
• RS
– Defines a relation over the attributes C that
consists of set of tuples from R that match
combination of every tuple in S.
(clientNo,propertyNo(Viewing)) (propertyNo(rooms = 3
(PropertyForRent)))
34
Relational Calculus
• Relational calculus query specifies
what is to be retrieved rather than how
to retrieve it.
– No description of how to evaluate a query.
means conjunction
Ú means disjunction
~ means negation
38
Tuple Relational Calculus
• Can use two quantifiers to tell how many
instances the predicate applies to:
– Existential quantifier $ (‘there exists’)
– Universal quantifier " (‘for all’)
39
Tuple Relational Calculus
• Existential quantifier used in formulae
that must be true for at least one
instance, such as:
41
Tuple Relational Calculus
• Formulae should be unambiguous and make
sense.
• A (well-formed) formula is made out of
atoms:
• R(Si), where Si is a tuple variable and R is a
relation
• Si.a1 q Sj.a2
• Si.a1 q c
42
Tuple Relational Calculus
• Can recursively build up formulae from
atoms:
• An atom is a formula
• If F1 and F2 are formulae, so are their
conjunction, F1 Ù F2; disjunction, F1 Ú F2;
and negation, ~F1
• If F is a formula with free variable X, then
($X)(F) and ("X)(F) are also formulae.
43
Example - Tuple Relational
Calculus
a) List the names of all managers who earn
more than £25,000.
46
Tuple Relational Calculus
• Expressions can generate an infinite set.
For example:
{S | ~Staff(S)}
47
Domain Relational Calculus
• Uses variables that take values from
domains instead of tuples of relations.
49
Example - Domain Relational
Calculus
b) List the staff who manage properties for
rent in Glasgow.
50
Example - Domain Relational
Calculus
c) List the names of staff who currently do
not manage any properties for rent.
{fN, lN | ($sN)
(Staff(sN, fN, lN, posn, sex, DOB, sal, bN)
(~($sN1) (PropertyForRent(pN, st, cty, pc, typ,
rms, rnt,oN, sN1, bN1) Ù (sN =
sN1))))}
51
Example - Domain Relational
Calculus
d) List the names of clients who have
viewed a property for rent in Glasgow.
52
Domain Relational Calculus
• When restricted to safe expressions, domain
relational calculus is equivalent to tuple
relational calculus restricted to safe expressions,
which is equivalent to relational algebra.
53
Other Languages
• Transform-oriented languages are non-
procedural languages that use relations
to transform input data into required
outputs (e.g. SQL).