Chapter 4 - Relational Algebra
Chapter 4 - Relational Algebra
SI13013
2
Chapter 4
Relational Algebra
3
Chapter 4 - Objectives
• Meaning of the term relational completeness.
• How to form queries in relational algebra.
• How to form queries in tuple relational calculus.
• How to form queries in domain relational calculus.
• Categories of relational DML.
4
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.
5
Relational Algebra
• Relational algebra operations work on one or more relations to
define another relation without changing the original relations.
• Both operands and results are relations, so output from one
operation can become input to another operation.
• Allows expressions to be nested, just as in arithmetic. This
property is called closure.
6
Relational Algebra
• Five basic operations in relational algebra: Selection, Projection,
Cartesian product, Union, and Set Difference.
• These perform most of the data retrieval operations needed.
• Also have Join, Intersection, and Division operations, which can
be expressed in terms of 5 basic operations.
7
Relational Algebra Operations
8
Relational Algebra Operations
9
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).
10
Example - Selection (or Restriction)
• List all staff with a salary greater than £10,000.
11
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.
12
Example - Projection
• Produce a list of salaries for all staff, showing only staffNo, fName,
lName, and salary details.
13
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.
14
Example - Union
• List all cities where there is either a branch office or a property for
rent.
city(Branch) city(PropertyForRent)
15
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.
16
Example - Set Difference
• List all cities where there is a branch office but no properties for rent.
city(Branch) – city(PropertyForRent)
17
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.
18
Example - Intersection
• List all cities where there is both a branch office and at least one
property for rent.
city(Branch) city(PropertyForRent)
19
Cartesian product
• RXS
• Defines a relation that is the concatenation of every tuple of relation R with
every tuple of relation S.
• 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
21
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)))
22
Join Operations
• Join is a derivative of Cartesian product.
23
Join Operations
• Various forms of join operation
• Theta join
• Equijoin (a particular type of Theta join)
• Natural join
• Outer join
• Semijoin
24
Theta join (-join)
•R F S
• 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 (<, , >, , =, ).
25
Theta join (-join)
• Can rewrite Theta join using basic Selection and Cartesian product
operations.
R S = F(R S)
F
26
Example - Equijoin Kondisi yg hrs
Dipenuhi
• 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))
27
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.
28
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))
29
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.
30
Example - Left Outer join
• Produce a status report on property viewings.
31
Semijoin
•R F S
• Defines a relation that contains the tuples of R that participate in the join of R
with S.
R F S = A(R F S)
32
Example - Semijoin
• List complete details of all staff who work at the branch in Glasgow.
33
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.
34
Example - Division
• Identify all clients who have viewed all properties with three rooms.
35
Exercises
Thank You
Reference: Database Systems A Practical Approach to Design, Implementation, and Management Fourth Edition.
Thomas M. Connolly and Carolyn E. Begg