UNIT2
UNIT2
6- 1
Chapter 6
The Relational Algebra and Calculus
Chapter Outline
Relational Algebra
Unary Relational Operations
Relational Algebra Operations From Set Theory
Binary Relational Operations
Additional Relational Operations
Examples of Queries in Relational Algebra
Relational Calculus
Tuple Relational Calculus
Domain Relational Calculus
Example Database Application (COMPANY)
Overview of the QBE language (appendix D)
Relational Algebra Overview
Slide
6- 8
Unary Relational Operations:
SELECT
The SELECT operation (denoted by (sigma)) is used to select
a subset of the tuples from a relation based on a selection
condition.
The selection condition acts as a filter
Keeps only those tuples that satisfy the qualifying
condition
Tuples satisfying the condition are selected whereas
the other tuples are discarded (filtered out)
Examples:
Select the EMPLOYEE tuples whose department number is
4:
(EMPLOYEE)
DNO = 4
Select the employee tuples whose salary is greater than
$30,000:
SALARY > 30,000 (EMPLOYEE)
Unary Relational Operations:
SELECT
In
general, the select operation is
denoted by <selection condition>(R)
where
the symbol (sigma) is used to denote the select operator
the selection condition is a Boolean (conditional) expression
specified on the attributes of relation R
tuples that make the condition true are selected
appear in the result of the operation
tuples that make the condition false are filtered out
discarded from the result of the operation
Unary Relational Operations:
SELECT (contd.)
SELECT Operation Properties
The SELECT operation <selection condition>(R) produces a
relation S that has the same schema (same attributes) as R
SELECT is commutative:
<condition1>( < condition2> (R)) = <condition2> ( < condition1> (R))
Because of commutativity property, a cascade (sequence)
of SELECT operations may be applied in any order:
<cond1>(<cond2> (<cond3> (R)) = <cond2> (<cond3> (<cond1> ( R)))
A cascade of SELECT operations may be replaced by a
single selection with a conjunction of all the conditions:
<cond1>(< cond2> (<cond3>(R)) = <cond1> AND < cond2> AND < cond3>(R)))
The number of tuples in the result of a SELECT is less
than (or equal to) the number of tuples in the input
relation R
The following query results refer
to this database state
Unary Relational Operations:
PROJECT
PROJECT Operation is denoted by (pi)
This operation keeps certain columns (attributes) from a
relation and discards the other columns.
PROJECT creates a vertical partitioning
The list of specified columns (attributes) is kept in each tuple
The other attributes in each tuple are discarded
Example: To list each employee’s first and last name
and salary, the following is used:
LNAME, FNAME,SALARY(EMPLOYEE)
Unary Relational Operations:
PROJECT (cont.)
6- 14
Unary Relational Operations:
PROJECT (contd.)
Slide
6- 16
Relational Algebra
Expressions
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.
RESULT (DEP5_EMPS)
FNAME, LNAME, SALARY
Unary Relational Operations:
RENAME
UNION Operation
Binary operation, denoted by
The result of 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
The two operand relations R and S must
be “type compatible” (or UNION
compatible)
R and S must have same number of
attributes
Each pair of corresponding attributes
must be type compatible (have same or
compatible domains)
Relational Algebra Operations from
Set Theory: UNION
Example:
To retrieve the social security numbers of all
employees who either work in department 5
(RESULT1 below) or directly supervise an
employee who works in department 5 (RESULT2
below)
We can use the UNION operation as follows:
UNION Example
Relational Algebra Operations from
Set Theory
Slide
6- 27
Some properties of UNION,
INTERSECT, and DIFFERENCE
Notice that both union and intersection are
commutative operations; that is
R S = S R, and R S = S R
Both union and intersection can be treated as n-
ary operations applicable to any number of
relations as both are associative operations; that
is
R (S T) = (R S) T
(R S) T = R (S T)
The minus operation is not commutative; that is,
in general
R–S≠S–R
Relational Algebra Operations from
Set Theory: CARTESIAN PRODUCT
EMPNAMES (FEMALE_EMPS)
FNAME, LNAME, SSN
Slide
6- 37
Binary Relational Operations:
EQUIJOIN
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 an EQUIJOIN.
Slide
6- 38
Binary Relational Operations:
NATURAL JOIN Operation
NATURAL JOIN Operation
Another variation of JOIN called NATURAL JOIN
— denoted by * — was created to get rid of the
second (superfluous) attribute in an EQUIJOIN
condition.
because one of each pair of attributes with
identical values is superfluous
The standard definition of natural join requires
that the two join attributes, or each pair of
corresponding join attributes, have the same
name in both relations
If this is not the case, a renaming operation
is applied first.
Slide
6- 39
Binary Relational Operations
NATURAL JOIN (contd.)
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
Only attribute with the same name is DNUMBER
An implicit join condition is created based on this attribute:
DEPARTMENT.DNUMBER=DEPT_LOCATIONS.DNUMBER
Slide
6- 41
Complete Set of Relational
Operations
Slide
6- 42
Binary Relational Operations:
DIVISION
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.
Slide
6- 44
Recap of Relational Algebra
Operations
Slide
6- 45
Additional Relational Operations:
Aggregate Functions and Grouping
Slide
6- 49
Illustrating aggregate functions
and grouping
Slide
6- 50
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.
Slide
6- 52
Additional Relational Operations
(cont.)
Slide
6- 53
Additional Relational Operations
(cont.)
The OUTER JOIN Operation
In NATURAL JOIN and EQUIJOIN, 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.
Slide
6- 54
Additional Relational Operations
(cont.)
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.
Slide
6- 55
Additional Relational Operations
(cont.)
Slide
6- 56
Additional Relational Operations
(cont.)
OUTER UNION Operations
The outer union operation was developed to take the
union of tuples from two relations if the relations are not
type compatible.
This operation will take the union of tuples in two
relations R(X, Y) and S(X, Z) that are partially compatible,
meaning that only some of their attributes, say X, are type
compatible.
The attributes that are type compatible are represented
only once in the result, and those attributes that are not
type compatible from either relation are also kept in the
result relation T(X, Y, Z).
Slide
6- 57
Additional Relational Operations
(cont.)
Example: An outer union can be applied to
two relations whose schemas are
STUDENT(Name, SSN, Department, Advisor)
and INSTRUCTOR(Name, SSN, Department,
Rank).
Tuples from the two relations are matched based
on having the same combination of values of the
shared attributes— Name, SSN, Department.
If a student is also an instructor, both Advisor and
Rank will have a value; otherwise, one of these
two attributes will be null.
The result relation STUDENT_OR_INSTRUCTOR
will have the following attributes:
STUDENT_OR_INSTRUCTOR (Name, SSN,
Department, Advisor, Rank)
Slide
6- 58
Examples of Queries in Relational
Algebra
Q1: Retrieve the name and address of all employees who work for the
‘Research’ department.
RESEARCH_DEPT DNAME=’Research’ (DEPARTMENT)
RESEARCH_EMPS (RESEARCH_DEPT DNUMBER= DNOEMPLOYEE EMPLOYEE)
RESULT FNAME, LNAME, ADDRESS (RESEARCH_EMPS)
Slide
6- 59
Relational Calculus
Slide
6- 60
Relational Calculus
Slide
6- 61
Tuple Relational Calculus
Slide
6- 65
Example Query Using Existential
Quantifier
Retrieve the name and address of all employees who work for
the ‘Research’ department. The query can be expressed as :
{t.FNAME, t.LNAME, t.ADDRESS | EMPLOYEE(t) and d)
(DEPARTMENT(d) and d.DNAME=‘Research’ and
d.DNUMBER=t.DNO) }
The only free tuple variables in a relational calculus expression
should be those that appear to the left of the bar ( | ).
In above query, t is the only free variable; it is then bound
successively to each tuple.
If a tuple satisfies the conditions specified in the query, the
attributes FNAME, LNAME, and ADDRESS are retrieved for each
such tuple.
The conditions EMPLOYEE (t) and DEPARTMENT(d) specify
the range relations for t and d.
The condition d.DNAME = ‘Research’ is a selection
condition and corresponds to a SELECT operation in the
relational algebra, whereas the condition d.DNUMBER =
t.DNO is a JOIN condition.
Slide
6- 66
Example Query Using Universal
Quantifier
Find the names of employees who work on all the projects
controlled by department number 5. The query can be:
{e.LNAME, e.FNAME | EMPLOYEE(e) and x)(not(PROJECT(x)) or
not(x.DNUM=5)
OR w)(WORKS_ON(w) and w.ESSN=e.SSN and
x.PNUMBER=w.PNO))))}
Exclude from the universal quantification all tuples that we are not
interested in by making the condition true for all such tuples.
The first tuples to exclude (by making them evaluate automatically
to true) are those that are not in the relation R of interest.
In query above, using the expression not(PROJECT(x)) inside the
universally quantified formula evaluates to true all tuples x that
are not in the PROJECT relation.
Then we exclude the tuples we are not interested in from R itself.
The expression not(x.DNUM=5) evaluates to true all tuples x that
are in the project relation but are not controlled by department 5.
Finally, we specify a condition that must hold on all the remaining
tuples in R.
w)(WORKS_ON(w) and w.ESSN=e.SSN and x.PNUMBER=w.PNO)
Slide
6- 67
Languages Based on Tuple
Relational Calculus
The language SQL is based on tuple calculus. It
uses the basic block structure to express the
queries in tuple calculus:
SELECT <list of attributes>
FROM <list of relations>
WHERE <conditions>
SELECT clause mentions the attributes being
projected, the FROM clause mentions the relations
needed in the query, and the WHERE clause
mentions the selection as well as the join
conditions.
SQL syntax is expanded further to accommodate
other operations. (See Chapter 8).
Slide
6- 68
Languages Based on Tuple
Relational Calculus
Slide
6- 69
The Domain Relational Calculus
Slide
6- 70
The Domain Relational Calculus
Slide
6- 71
Example Query Using Domain
Calculus
Retrieve the birthdate and address of the employee whose
name is ‘John B. Smith’.
Query :
Slide
6- 72
QBE: A Query Language Based on
Domain Calculus (Appendix C)
This language is based on the idea of giving an
example of a query using example elements.
An example element stands for a domain
variable and is specified as an example value
preceded by the underscore character.
P. (called P dot) operator (for “print”) is
placed in those columns which are requested
for the result of the query.
A user may initially start giving actual values
as examples, but later can get used to
providing a minimum number of variables as
example elements.
Slide
6- 73
QBE: A Query Language Based on
Domain Calculus (Appendix C)
The language is very user-friendly, because it uses
minimal syntax.
QBE was fully developed further with facilities for
grouping, aggregation, updating etc. and is shown to be
equivalent to SQL.
The language is available under QMF (Query
Management Facility) of DB2 of IBM and has been used
in various ways by other products like ACCESS of
Microsoft, PARADOX.
For details, see Appendix C in the text.
Slide
6- 74
QBE Examples
Slide
6- 75
QBE Examples
Slide
6- 76
QBE Examples
Slide
6- 77
QBE Examples
Slide
6- 78
Chapter Summary
Relational Algebra
Unary Relational Operations
Relational Algebra Operations From Set Theory
Binary Relational Operations
Additional Relational Operations
Examples of Queries in Relational Algebra
Relational Calculus
Tuple Relational Calculus
Domain Relational Calculus
Overview of the QBE language (appendix C)
Slide
6- 79