Chapter2-Part 3 (New)
Chapter2-Part 3 (New)
Slide 3- 2
Relational Algebra Operations from Set
Theory: CARTESIAN PRODUCT
CARTESIAN (or CROSS) PRODUCT Operation
This operation is used to combine tuples from two
relations in a combinatorial fashion.
Denoted by R(A1, A2, . . ., An) x S(B1, B2, . . ., Bm)
Result is a relation Q with degree n + m attributes:
○ Q(A1, A2, . . ., An, B1, B2, . . ., Bm), in that order.
The resulting relation state 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”
Slide 3- 3
Relational Algebra Operations from Set
Theory: CARTESIAN PRODUCT (cont.)
Generally, CROSS PRODUCT is not a
meaningful operation
Can become meaningful when followed by
other operations
Example (not meaningful):
FEMALE_EMPS SEX=’F’(EMPLOYEE)
EMPNAMES FNAME, LNAME, SSN (FEMALE_EMPS)
EMP_DEPENDENTS EMPNAMES x
DEPENDENT
EMP_DEPENDENTS will contain every
combination of EMPNAMES and DEPENDENT
whether or not they are actually related
Slide 3- 4
Relational Algebra Operations from Set
Theory: CARTESIAN PRODUCT (cont.)
To keep only combinations where the
DEPENDENT is related to the
EMPLOYEE, we add a SELECT operation
as follows
Example (meaningful):
FEMALE_EMPS SEX=’F’(EMPLOYEE)
EMPNAMES FNAME, LNAME, SSN (FEMALE_EMPS)
EMP_DEPENDENTS EMPNAMES x DEPENDENT
ACTUAL_DEPS SSN=ESSN(EMP_DEPENDENTS)
RESULT FNAME, LNAME, DEPENDENT_NAME (ACTUAL_DEPS)
RESULT will now contain the name of female
employees and their dependents
Slide 3- 5
Example of applying CARTESIAN
PRODUCT
Slide 3- 6
Binary Relational Operations:
JOIN
JOIN Operation (denoted by )
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 combines this
sequence into a single operation
This operation is very important for any relational
database with more than a single relation, because it
allows us combine related tuples from various
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.
Slide 3- 7
Binary Relational Operations: JOIN (cont.)
Slide 3- 8
Example of applying the JOIN operation
Slide 3- 9
Some properties of JOIN
Consider the following JOIN operation:
R(A1, A2, . . ., An) S(B1, B2, . . ., Bm)
R.Ai=S.Bj
Result is a relation Q with degree n + m attributes:
○ Q(A1, A2, . . ., An, B1, B2, . . ., Bm), in that order.
The resulting relation state has one tuple for each
combination of tuples—r from R and s from S, but
only if they satisfy the join condition r[Ai]=s[Bj]
Hence, if R has nR tuples, and S has nS tuples, then
the join result will generally have less than nR * nS
tuples.
Only related tuples (based on the join condition) will
appear in the result
Slide 3- 10
Some properties of JOIN
The general case of JOIN operation is
called a Theta-join: R S
theta
The join condition is called theta
Theta can be any general boolean
expression on the attributes of R and S; for
example:
R.Ai<S.Bj AND (R.Ak=S.Bl OR R.Ap<S.Bq)
Most join conditions involve one or more
equality conditions “AND”ed together; for
example:
R.Ai=S.Bj AND R.Ak=S.Bl AND R.Ap=S.Bq
Slide 3- 11
Binary Relational Operations: EQUIJOIN
Slide 3- 12
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 3- 13
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 3- 14
Example of NATURAL JOIN operation
Slide 3- 15
Complete Set of Relational Operations
Slide 3- 16
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.
R S
(Right) outer join is join in which tuples
from S that do not have matching values in
common columns of R are also included in
result relation.
Slide 3- 20
Slide 3- 21