Lecture 2
Lecture 2
Relational Model
Objectives
● Meaning of the term relational completeness.
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
● Five basic operations in relational algebra:
Selection, Projection, Cartesian product,
Union, and Set Difference.
5
Relational Algebra Operations
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.
σsalary > 10000 (Staff)
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.
ΠstaffNo, fName, lName, salary(Staff)
11
Union
● R∪S
– 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.
12
Example - Union
● List all cities where there is either a branch office
or a property for rent.
Π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
● R∩S
– 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 - Intersection
● 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
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))
19
Example - Cartesian product and Selection
● Use selection operation to extract those tuples where
Client.clientNo = Viewing.clientNo.
σClient.clientNo = Viewing.clientNo((∏clientNo, fName, lName(Client)) Χ
(∏clientNo, propertyNo, comment(Viewing)))
21
Join Operations
● Various forms of join operation
– Theta join
– Equijoin (a particular type of Theta join)
– Natural join
– Outer join
– Semijoin
22
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 (<, ≤, >, ≥, =, ≠).
23
Theta join (θ-join)
● Can rewrite Theta join using basic Selection and
Cartesian product operations.
R F
S = σF(R Χ S)
24
Example - Equijoin
25
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.
26
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))
27
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.
28
Example - Left Outer join
29
Semijoin
● R FS
– 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)
30
Example - Semijoin
● List complete details of all staff who work at the
branch in Glasgow.
Staff Staff.branchNo=Branch.branchNo
(σcity=‘Glasgow’(Branch))
31
Division
● R÷S
– Defines a relation over the attributes C that consists of
set of tuples from R that match combination of every
tuple in S.
32
Example - Division
33
Aggregate Operations
● ℑAL(R)
– Applies aggregate function list, AL, to R to
define a relation over the aggregate list.
– AL contains one or more
(<aggregate_function>, <attribute>) pairs .
● Main aggregate functions are: COUNT, SUM,
AVG, MIN, and MAX.
34
Example – Aggregate Operations
● How many properties cost more than £350 per month
to rent?
ρR(myCount) ℑCOUNT propertyNo (σrent > 350
(PropertyForRent))
35
Grouping Operation
● GAℑAL(R)
– Groups tuples of R by grouping attributes, GA,
and then applies aggregate function list, AL, to
define a new relation.
– AL contains one or more
(<aggregate_function>, <attribute>) pairs.
– Resulting relation contains the grouping
attributes, GA, along with results of each of the
aggregate functions.
36
Example – Grouping Operation
● Find the number of staff working in each branch and
the sum of their salaries.
ρR(branchNo, myCount, mySum)
branchNo
ℑ COUNT staffNo, SUM salary (Staff)
37