ENCh06 Rel Algebra
ENCh06 Rel Algebra
Chapter 6-2
Relational Algebra
The basic set of operations for the relational model is known
as the relational algebra. These operations enable a user to
specify basic retrieval requests.
Chapter 6-3
Unary Relational Operations
SELECT Operation
SELECT operation is used to select a subset of the tuples from a relation that
satisfy a selection condition. It is a filter that keeps only those tuples that
satisfy a qualifying condition – those satisfying the condition are selected
while others are discarded.
Example: To select the EMPLOYEE tuples whose department number is
four or those whose salary is greater than $30,000 the following notation is
used:
DNO = 4 (EMPLOYEE)
SALARY > 30,000 (EMPLOYEE)
In general, the select operation is denoted
Chapter 6-4
Unary Relational Operations
SELECT Operation Properties
– The SELECT operation <selection condition>(R) produces a relation S
that has the same schema as R
Chapter 6-5
Unary Relational Operations (cont.)
Chapter 6-6
Unary Relational Operations (cont.)
PROJECT Operation
This operation selects certain columns from the table and discards the other
columns. The PROJECT creates a vertical partitioning – one with the needed
columns (attributes) containing results of the operation and other containing
the discarded Columns.
Example: To list each employee’s first and last name and salary, the
following is used:
LNAME, FNAME,SALARY (EMPLOYEE)
The general form of the project operation is <attribute list>(R) where
(pi) is the symbol used to represent the project operation and <attribute list>
is the desired list of attributes from the attributes of relation R.
The project operation removes any duplicate tuples, so the result of the
project operation is a set of tuples and hence a valid relation.
Chapter 6-7
Unary Relational Operations (cont.)
PROJECT Operation Properties
–
The number of tuples in the result of projection <list> Ris
always less or equal to the number of tuples in R.
–
<list2> R)<list1> Ras long
<list1>
as<list2>contains theattributes in<list2>
Chapter 6-8
Unary Relational Operations (cont.)
Chapter 6-9
Unary Relational Operations (cont.)
Rename Operation
We may want to apply several relational algebra operations one after the other.
Either we can write the operations as a single relational algebra expression
by nesting the operations, or we can apply one operation at a time and create
intermediate result relations. In the latter case, we must give names to the
relations that hold the intermediate results.
Example: To retrieve the first name, last name, and salary of all employees
who work in department number 5, we must apply a select and a project
operation. We can write a single relational algebra expression as follows:
Chapter 6-10
Unary Relational Operations (cont.)
Rename Operation (cont.)
The rename operator is
S (B1, B2, …, Bn ) ( R) is a renamed relationS based on R with column names B1, B1,
…..Bn
S ( R) is a renamed relationS based on R (which does not specify column names).
(B1, B2, …, Bn ) ( R) is a renamed relationwith column names B1, B1, …..Bn which
Chapter 6-11
Unary Relational Operations (cont.)
Chapter 6-12
Relational Algebra Operations From
Set Theory
UNION Operation
The result of this operation, denoted by R S, is a relation that includes all
tuples that are either in R or in S or in both R and S. Duplicate tuples are
eliminated.
Example: To retrieve the social security numbers of all employees who either
work in department 5 or directly supervise an employee who works in
department 5, we can use the union operation as follows:
DEP5_EMPS DNO=5 (EMPLOYEE)
RESULT1 SSN(DEP5_EMPS)
RESULT2(SSN) SUPERSSN(DEP5_EMPS)
RESULT RESULT1 RESULT2
The union operation produces the tuples that are in either RESULT1 or
RESULT2 or both. The two operands must be “type compatible”.
Chapter 6-13
Relational Algebra Operations From
Set Theory
Type Compatibility
– The operand relations R1(A1, A2, ..., An) and R2(B1, B2, ..., Bn)
must have the same number of attributes, and the domains of
corresponding attributes must be compatible; that is,
dom(Ai)=dom(Bi) for i=1, 2, ..., n.
Chapter 6-14
Relational Algebra Operations From
Set Theory
UNION Example
STUDENTINSTRUCTOR
Chapter 6-15
Relational Algebra Operations From Set
Theory (cont.) – use Fig. 6.4
Chapter 6-16
Relational Algebra Operations From Set
Theory (cont.)
INTERSECTION OPERATION
The result of this operation, denoted by R S, is a relation that includes all
tuples that are in both R and S. The two operands must be "type compatible"
STUDENT INSTRUCTOR
Chapter 6-17
Relational Algebra Operations From Set
Theory (cont.)
Set Difference (or MINUS) Operation
The result of this operation, denoted by R - S, is a relation that includes all
tuples that are in R but not in S. The two operands must be "type compatible”.
Example: The figure shows the names of students who are not instructors,
and the names of instructors who are not students.
STUDENT-INSTRUCTOR
INSTRUCTOR-STUDENT
Chapter 6-18
Relational Algebra Operations From Set
Theory (cont.)
Notice that both union and intersection are commutative
operations; that is
R S = S R, and R S = S R
Chapter 6-19
Relational Algebra Operations From Set
Theory (cont.)
CARTESIAN (or cross product) Operation
– This operation is used to combine tuples from two relations in a
combinatorial fashion. In general, the result of R(A 1, A2, . . ., An) x S(B1,
B2, . . ., Bm) is a relation Q with degree n + m attributes Q(A1, A2, . . ., An,
B1, B2, . . ., Bm), in that order. The resulting relation Q has one tuple for
each combination of tuples—one from R and one from S.
– Hence, if R has nR tuples (denoted as |R| = nR ), and S has nS tuples, then
| R x S | will have nR * nS tuples.
– The two operands do NOT have to be "type compatible”
Example:
FEMALE_EMPS SEX=’F’(EMPLOYEE)
EMPNAMES FNAME, LNAME, SSN (FEMALE_EMPS)
Chapter 6-21
Binary Relational Operations
JOIN Operation
– The sequence of cartesian product followed by select is used
quite commonly to identify and select related tuples from two
relations, a special operation, called JOIN. It is denoted by a
– This operation is very important for any relational database
with more than a single relation, because it allows us to process
relationships among relations.
– The general form of a join operation on two relations R(A1,
A2, . . ., An) and S(B1, B2, . . ., Bm) is:
R <join condition> S
where R and S can be any relations that result from general
relational algebra expressions.
Chapter 6-22
Binary Relational Operations (cont.)
Example: Suppose that we want to retrieve the name of
the manager of each department. To get the manager’s
name, we need to combine each DEPARTMENT tuple
with the EMPLOYEE tuple whose SSN value matches
the MGRSSN value in the department tuple. We do this
by using the join operation.
DEPT_MGR DEPARTMENT MGRSSN=SSN
EMPLOYEE
Chapter 6-23
Binary Relational Operations (cont.)
EQUIJOIN Operation
The most common use of join involves join conditions with equality comparisons only.
Such a join, where the only comparison operator used is =, is called an EQUIJOIN. In
the result of an EQUIJOIN we always have one or more pairs of attributes (whose
names need not be identical) that have identical values in every tuple.
The JOIN seen in the previous example was EQUIJOIN.
Chapter 6-24
Binary Relational Operations (cont.)
Example: To apply a natural join on the DNUMBER attributes of
DEPARTMENT and DEPT_LOCATIONS, it is sufficient to write:
DEPT_LOCS DEPARTMENT * DEPT_LOCATIONS
Chapter 6-25
Binary Relational Operations (cont.)
DIVISION Operation
– The division operation is applied to two relations
R(Z) S(X), where X subset Z. Let Y = Z - X (and hence Z
= X Y); that is, let Y be the set of attributes of R that are
not attributes of S.
– The result of DIVISION is a relation T(Y) that includes a
tuple t if tuples tR appear in R with tR [Y] = t, and with
tR [X] = ts for every tuple ts in S.
Chapter 6-27
Recap of Relational Algebra Operations
Chapter 6-28
Additional Relational Operations
Chapter 6-29
Additional Relational Operations (cont.)
Chapter 6-30
Additional Relational Operations (cont.)
Chapter 6-31
Additional Relational Operations (cont.)
Recursive Closure Operations
– Another type of operation that, in general, cannot be specified in the
basic original relational algebra is recursive closure. This operation is
applied to a recursive relationship.
– An example of a recursive operation is to retrieve all SUPERVISEES of
an EMPLOYEE e at all levels—that is, all EMPLOYEE e’ directly
supervised by e; all employees e’’ directly supervised by each employee
e’; all employees e’’’ directly supervised by each employee e’’; and so
on .
– Although it is possible to retrieve employees at each level and then take
their union, we cannot, in general, specify a query such as “retrieve the
supervisees of ‘James Borg’ at all levels” without utilizing a looping
mechanism.
– The SQL3 standard includes syntax for recursive closure.
Chapter 6-32
Additional Relational Operations (cont.)
Chapter 6-33
Additional Relational Operations (cont.)
The OUTER JOIN Operation
– In NATURAL JOIN tuples without a matching (or related) tuple are eliminated
from the join result. Tuples with null in the join attributes are also eliminated.
This amounts to loss of information.
– A set of operations, called outer joins, can be used when we want to keep all the
tuples in R, or all those in S, or all those in both relations in the result of the
join, regardless of whether or not they have matching tuples in the other
relation.
– The left outer join operation keeps every tuple in the first or left relation R in
R S; if no matching tuple is found in S, then the attributes of S in the join
result are filled or “padded” with null values.
– A similar operation, right outer join, keeps every tuple in the second or right
relation S in the result of R S.
– A third operation, full outer join, denoted by keeps all tuples in both the
left and the right relations when no matching tuples are found, padding them
with null values as needed.
Chapter 6-34