Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Lecture 2 Relational Algebra

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 37

Relational Algebra

Relational Model
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.

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.

 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.

4
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.

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.

 If R and S have I and J tuples, respectively, union


is obtained by concatenating them into one relation
with a maximum of (I + J) tuples.

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.

 Expressed using basic operations:


R  S = R – (R – S)

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.
sClient.clientNo = Viewing.clientNo((ÕclientNo, fName, lName(Client))  (ÕclientNo,
propertyNo, comment(Viewing)))

 Cartesian product and Selection can be reduced to a single


operation called a Join.
20
Join Operations
 Join is a derivative of Cartesian product.

 Equivalent to performing a Selection, using join


predicate as selection formula, over Cartesian
product of the two operand relations.

 One of the most difficult operations to implement


efficiently in an RDBMS and one reason why
RDBMSs have intrinsic performance problems.

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 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 (<, , >, , =, ).

23
Theta join (-join)
 Can rewrite Theta join using basic Selection and
Cartesian product operations.

R F S = 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.

24
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))

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
 Produce a status report on property viewings.

propertyNo, street, city(PropertyForRent)


Viewing

29
Semijoin
 R FS
– Defines a relation that contains the tuples of R that
participate in the join of R with S.

 Can rewrite Semijoin using Projection and Join:

R F S = A(R F S)

30
Example - Semijoin
 List complete details of all staff who work at the
branch in Glasgow.

Staff (city=‘Glasgow’(Branch))
Staff.branchNo=Branch.branchNo

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.

 Expressed using basic operations:


T1  C(R)
T2  C((S X T1) – R)
T  T1 – T2

32
Example - Division
 Identify all clients who have viewed all properties
with three rooms.

(clientNo, propertyNo(Viewing)) 
(propertyNo(rooms = 3 (PropertyForRent)))

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
 AL(R)
GA
– 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

You might also like