Relational Algebra Examples

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

Relational Algebra

Archana Gupta
CS 157
What is Relational Algebra?
Relational Algebra is formal description of
how relational database operates.
It is a procedural query language, i.e. user
must define both “how” and “what” to
retrieve.
It consists of a set of operators that
consume either one or two relations as
input. An operator produces one relation
as its output.
Introduction to Relational Algebra

Introduced by E. F.
Codd in 1970.

Codd proposed such


an algebra as a basis
for database query
languages.
Terminology

Relation - a set of tuples.


Tuple - a collection of attributes which
describe some real world entity.
Attribute - a real world role played by
a named domain.
Domain - a set of atomic values.
Set - a mathematical definition for a
collection of objects which contains
no duplicates.
Algebra Operations

Unary Operations
- operate on one
relation. These
include select,
project and
rename
operators.
Binary Operations
- operate on pairs
of relations.
Select Operator
The Select operator selects
tuples that satisfies a
predicate; e.g. retrieve the
employees whose salary is
30,000
б Salary = 30,000 (Employee)

Conditions in Selection:
Simple Condition: (attribute)
(comparison)(attribute)
(attribute)
(comparison)
(constant)
Comparison: =,≠,≤,≥,<,>
Select Operator Example
Person бAge≥34(Person)
Name Age Weight
Name Age Weight
Harry 34 80
Harry 34 80 Helena 54 54
Sally 28 64 Peter 34 80
George 29 70

Helena 54 54 бAge=Weight(Person)
Peter 34 80 Name Age Weight
Helena 54 54
Project Operator
Project (∏) retrieves a column. Duplication
is not permitted.

e.g., name of employees:


∏ name(Employee)
e.g., name of employees earning more
than 80,000:
∏ name(бSalary>80,000(Employee))
Project Operator Example
Employee
∏ name(Employee)
Name Age Salary

Harry 34 80,000 Name


Sally 28 90,000 Harry
George 29 70,000 Sally

Helena 54 54,280 George


Helena
Peter 34 40,000
Peter
Project Operator Example
Employee бSalary>80,000(Employee)

Name Age Salary Name Age Salary

Harry 34 80,000 Sally 28 90,000

Sally 28 90,000
George 29 70,000 ∏ name(бSalary>80,000(Employee))
Helena 54 54,280
Name
Peter 34 40,000
Sally
Cartesian Product
In mathematics, it is a set of all pairs of
elements (x, y) that can be constructed
from given sets, X and Y, such that x
belongs to X and y to Y.

It defines a relation that is the


concatenation of every tuple of relation R
with every tuple of relation S.
Cartesian Product Example
Person City
City
Name Age Weight
San Jose
Harry 34 80
Austin
Sally 28 64
Person X City
George 29 70
Name Age Weight City
Harry 34 80 San Jose
Sally 28 64 San Jose
George 29 70 San Jose
Harry 34 80 Austin
Sally 28 64 Austin
George 29 70 Austin
Rename Operator
In relational algebra, a rename is a unary
operation written as ρ a / b (R) where:
a and b are attribute names
R is a relation
The result is identical to R except that the b field in
all tuples is renamed to an a field.
Example, rename operator changes the name of
its input table to its subscript,
ρemployee(Emp)
Changes the name of Emp table to employee
Rename Operator Example
Employee ρ EmployeeName / Name (Employee)

Name Salary EmployeeName Salary

Harry 80,000 Harry 80,000

Sally 90,000 Sally 90,000


George 70,000 George 70,000
Helena 54,280 Helena 54,280

Peter 40,000 Peter 40,000


Union Operator
The union operation is denoted U as in set
theory. It returns the union (set union) of
two compatible relations.
For a union operation r U s to be legal, we
require that, Person X City
Person X City
r and s must have the same number of
attributes.
The domains of the corresponding
attributes must be the same.
As in all set operations, duplicates are
eliminated.
Union Operator Example
Professor
FN LN
John Smith
Student Ricardo Brown
Susan Yao
Francis Johnson
Ramesh Shah
FN LN
Susan Yao
Student U Professor
FN LN
Ramesh Shah Susan Yao
Barbara Jones Ramesh Shah

Amy Ford Barbara Jones


Amy Ford
Jimmy Wang
Jimmy Wang
John Smith
Ricardo Brown
Francis Johnson
Intersection Operator
Denoted as  . For relations R and S, intersection
is 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)
Intersection Operator Example
Professor
Student FN LN
FN LN John Smith
Susan Yao Ricardo Brown
Ramesh Shah Susan Yao
Francis Johnson
Barbara Jones
Ramesh Shah
Amy Ford
Jimmy Wang

Student  Professor
FN LN
Susan Yao
Ramesh Shah
Set Difference Operator
For relations R and S,

Set difference R - S, defines a relation


consisting of the tuples that are in relation
R, but not in S.

Set difference S – R, defines a relation


consisting of the tuples that are in relation
S, but not in R.
Set Difference Operator Example
Student Professor
FN LN
FN LN
John Smith
Susan Yao
Ricardo Brown
Ramesh Shah
Susan Yao
Barbara Jones
Amy Ford Francis Johnson

Jimmy Wang Ramesh Shah

Professor - Student
Student - Professor
FN LN
FN LN
John Smith
Barbara Jones
Ricardo Brown
Amy Ford
Francis Johnson
Jimmy Wang
Division Operator
The division operator takes as input two
relations, called the dividend relation (r on
scheme R) and the divisor relation (s on
scheme S) such that all the attributes in S also
appear in R and S is not empty. The output of
the division operation is a relation on scheme R
with all the attributes common with S.
Division Operator Example
Completed DBProject
Student Task Task
Fred Database1 Database1
Fred Database2
Database2
Fred Compiler1
Eugene Database1
Sara Database1
Sara Database2
Eugene Compiler1
Completed / DBProject
Student
Fred
Sara
Natural Join Operator
Natural join is a dyadic operator that is written
as R lXl S where R and S are relations. The
result of the natural join is the set of all
combinations of tuples in R and S that are
equal on their common attribute names.
Natural Join Example
For an example, consider the tables Employee and Dept and their
natural join:
Employee
Name EmpID DeptName
Harry 3415 Finance
Sally 2241 Sales
George 3401 Finance
Harriet 2202 Sales

Dept Employee lXl Dept


DeptName Mgr Name EmpID DeptName Mgr
Finance George Harry 3415 Finance George
Sales Harriet Sally 2241 Sales Harriet
Production Charles
George 3401 Finance George
Harriet 2202 Sales Harriet
Semijoin Operator
The semijoin is joining similar to the natural join
and written as R ⋉ S where R and S are
relations. The result of the semijoin is only the
set of all tuples in R for which there is a tuple in
S that is equal on their common attribute
names.
Semijoin Example
For an example consider the tables Employee and Dept and their semi join:

Employee
Name EmpID DeptName
Harry 3415 Finance
Sally 2241 Sales
George 3401 Finance
Harriet 2202 Sales
Employee ⋉ Dept
Dept Name EmpID DeptName
DeptName Mgr
Sally 2241 Sales
Sales Harriet
Harriet 2202 Sales
Production Charles
Outerjoin Operator
Left outer join
The left outer join is written as R =X S where R
and S are relations. The result of the left outer
join is the set of all combinations of tuples in R
and S that are equal on their common attribute
names, in addition to tuples in R that have no
matching tuples in S.
Right outer join
The right outer join is written as R X= S where
R and S are relations. The result of the right
outer join is the set of all combinations of tuples
in R and S that are equal on their common
attribute names, in addition to tuples in S that
have no matching tuples in R.
Left Outerjoin Example
For an example consider the tables Employee and Dept and their left outer
join:
Employee
Name EmpID DeptName
Harry 3415 Finance
Sally 2241 Sales
George 3401 Finance Employee =X Dept
Harriet 2202 Sales Name EmpID DeptName Mgr

Harry 3415 Finance ω


Dept Sally 2241 Sales Harriet
DeptName Mgr
George 3401 Finance ω
Sales Harriet
Harriet 2202 Sales Harriet
Right Outerjoin Example
For an example consider the tables Employee and Dept and their right outer
join:
Employee
Name EmpID DeptName
Harry 3415 Finance
Sally 2241 Sales
George 3401 Finance Employee X= Dept
Harriet 2202 Sales Name EmpID DeptName Mgr

Sally 2241 Sales Harriet


Dept Harriet 2202 Sales Harriet
DeptName Mgr
ω ω Production Charles
Sales Harriet
Production Charles
Full Outer join Example
The outer join or full outer join in effect combines the results of the left
and right outer joins.
For an example consider the tables Employee and Dept and their full outer
join:

Employee
Name EmpID DeptName
Harry 3415 Finance
Employee =X= Dept
Sally 2241 Sales
Name EmpID DeptName Mgr
George 3401 Finance
Harriet 2202 Sales Harry 3415 Finance ω
Sally 2241 Sales Harriet
Dept George 3401 Finance ω
DeptName Mgr
Harriet 2202 Sales Harriet
Sales Harriet
ω ω Production Charles
Production Charles
Division

Not supported as a primitive operator, but


useful for expressing queries like:

Find sailors who have reserved all boats.


Precondition: in A/B, the attributes in B must
be included in the schema for A. Also, the
result has attributes A-B.
SALES(supId, prodId);
PRODUCTS(prodId);
Relations SALES and PRODUCTS must be built
Examples of Division A/B

sno pno pno pno pno


s1 p1 p2 p2 p1
s1 p2 p4 p2
s1 p3 B1 p4
s1 p4 B2
s2 p1 sno B3
s2 p2 s1
s3 p2 s2 sno
s4 p2 s3 s1 sno
s4 p4 s4 s4 s1

A A/B1 A/B2 A/B3


Expressing A/B Using Basic
Operators
Division is not essential op; just a useful
shorthand.
(Also true of joins, but joins are so common that
systems implement joins specially. Division is
NOT implemented in SQL).
Idea: For SALES/PRODUCTS, compute all
products such that there exists at least one
supplier not supplying it.
Ais disqualified
x value (( (Sales if )Pr
by oducts)
attaching y Sales
value) from
sid sid
B, we obtain an xy tuple that is not in A.
The answer is sid(Sales) - A

You might also like