Part3 Ch8 Relational Algebra
Part3 Ch8 Relational Algebra
Part3 Ch8 Relational Algebra
Outline:
8.1 Introduction
8.2 Unary Relational Operations.
Select Operator (σ)
Project Operator (π)
Rename Operator (ρ)
Assignment Operator (←)
1
8.1 Introduction
The relational algebra is used as a basis for implementing and optimizing queries
in the query processing and optimization modules that are integral parts of
relational database management systems (RDBMSs)
Relational algebra is the basic set of operations for the relational model
These operations enable a user to specify basic retrieval requests (or queries)
The result of an operation is a new relation, which may have been formed from
one or more input relations
o This property makes the algebra “closed” (all objects in relational algebra
are relations)
The algebra operations produce new relations
o These can be further manipulated using operations of the same algebra
A sequence of relational algebra operations forms a relational algebra expression
o The result of a relational algebra expression is also a relation that
represents the result of a database query (or retrieval request)
The fundamental operations in the relational algebra are select, project, union, set
difference, cartesian product, and rename.
2
8.2 Unary Relational Operations
A B C D
X X 1 8
Y Y 3 3
Y Y 12 10
A B C D
X X 1 8
X Y 5 7
Y Y 12 10
A B C D
X X 1 8
Y Y 12 10
3
Example: Retrieve the Id, Name, Address of students who live in Amman.
Student Id Name Address
1108 Ali Amman
1453 Ahmad Salt
1002 Omar Amman
2603 Anas Zarqa
Id Name Address
1108 Ali Amman
1002 Omar Amman
Example: Retrieve the Id, Name, Address of student who’s name is Ahmad or
students who live in Amman.
name=’Ahmad’ ᵛ ddress=’Amman’ (Student) =
Select * from Student where name = ’Ahmad’ or address = ‘Amman’;
Id Name Address
1108 Ali Amman
1453 Ahmad Salt
1002 Omar Amman
4
Example: Consider the following relation r.
r A B C D
X X 1 8
X Y 5 7
Y Y 3 3
Y Y 12 10
A B
X X
X Y
Y Y
B
Y
We may want to apply several relational algebra operations one after 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:
r1 ← C>=3 (r)
π B (r1)
B
Y
5
Rename Operator (ρ)
Allows us to refer to a relation by more than one name.
Syntax:
1. x (R)
Returns the expression R under the name X
2. x (A1, A2, .. ,An) (R)
If a relational-algebra expression R has arity n, then returns the
result of expression R under the name X, and with the attributes
renamed to A1 , A2 , …., An .
3. (A1, A2, .. ,An) (R)
Rename the attributes names without changing the relation name
Set Operators
Relation is a set of tuples, so set operations should apply: , , (set difference)
Result of combining two relations with a set operator is a relation (all its elements
must be tuples having same structure).
1. Union Operator ( )
o The result of this operation, denoted by R S, is a relation that includes all
rows that are either in R or in S or in both R and S. Duplicate rows are
eliminated.
o Example:
R S
=
6
o Example:
r
A B
X 1
X 2
Y 1
s
A B
X 2
Y 3
A B
X 1
X 2
Y 1
Y 3
o Example: retrieve the SSNs of all employees who either work in department
5 or directly supervise an employee who works in department 5.
o Example: Retrieve the SSNs and names of all employees who work in
department 10 and have a salary > 1000. (Use set operator instead of and
operator).
R S
∩ =
7
o R ∩S is equivalent to “Select * From R Intersect Select * From S;”
o Example:
r A B
X 1
X 2
Y 1
s
A B
X 2
Y 3
R S
=
-
s
A B
X 2
Y 3
A B
X 1
Y 1
8
s-r
A B
Y 3
If R and S are two relations, R S is the set of all concatenated rows <x,y>,
where x is a row in R and y is a row in S
o R and S need not be type compatible
R S is expensive to compute:
o Factor of two in the size of each row
o Quadratic in the number of rows
If R has nR rows (denoted as |R| = nR ), and S has nS rows, then R x S will have
nR * nS rows.
R S is equivalent to “Select * From R, S;”
o Example:
r A B
X 1
Y 2
s
C D E
X 10 E1
Y 10 E1
Y 20 E2
Z 10 E2
9
r × s = Select * from r,s;
A B C D E
X 1 X 10 E1
X 1 Y 10 E1
X 1 Y 20 E2
X 1 Z 10 E2
Y 2 X 10 E1
Y 2 Y 10 E1
Y 2 Y 20 E2
Y 2 Z 10 E2
A=C (r × s) = select * from r,s where A=C;
A B C D E
X 1 X 10 E1
Y 2 Y 10 E1
Y 2 Y 20 E2
Female_Emps Gender=’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)
o Result will now contain the name of female employees and their
dependents
10
Example: Display employees names for employees who work in accounting
department
Example: find the names of all customers who live on the same street and in the
same city as smith
π Balance ( Account ) –
π Account.Balance ( account.balance < d.balance ( Account × (ρd ( Account ) ) ) )
Join Operator
The JOIN operation is used to combine related rows from two relations into a
single row.
11
o Example: R
A B C D
a 1 x 4
b 2 y 5
c 4 z 4
d 8 x 5
e 1 y 4
S E F G
5 a x
4 b y
3 c y
2 a x
A B C D E F G
c 4 z 4 5 a x
e 1 y 4 5 a x
R B=E S (Equi_Join)
A B C D E F G
b 2 y 5 2 a x
c 4 z 4 4 b y
o Example: Display the names of all employees who earn more than their
managers.
12
o r s = π Attribute_List ( Join_Condition (r s))
where
Attribute_List = attributes (r) attributes (s)
(duplicates are eliminated) and Join-Condition has the form:
A1 = A1 AND … AND An = An
where {A1 … An} = attributes(r) attributes(s)
o Note: let r(R) and s(S) be relations without any attributes in common; that
is,
R ∩ S = ᴓ. Then r s = r s.
o Example: R
A B C D
a 1 x 4
b 2 y 5
c 4 z 4
d 8 x 5
e 1 y 4
S E F G
5 a x
4 b y
3 c y
2 a x
A B C D F G
b 2 y 5 a x
c 4 z 4 b y
o Example: R
A B C D
x 1 x a
y 2 z a
z 4 y b
x 1 z a
w 2 y b
S B D E
1 a x
3 a y
1 a z
2 b w
3 b e
13
R S = π R.A, R.B, R.C, R.D, S.E ( R.B = S.B ^ R.D = S.D (R S))
A B C D E
x 1 x a x
x 1 x a z
x 1 z a x
x 1 z a z
w 2 y b w
Relation Loan
Relation Borrower
14
Complete Set of Relational Operations
o R ∩ S = (R S ) – ((R - S) (S - R))
o R ∩ S = R – ( R – S)
o R Condition S = Condition (R S)
15
8.4 Examples of Queries in Relational Algebra
Banking Example:
Branch (branch_name, branch_city)
Customer (customer_name, customer_city, customer_street)
Account (account_number, branch_name, balance)
Loan (loan_number, branch_name, amount)
Depositor (customer_name, account_number)
Borrower (customer_name, loan_number)
Q2: Find the loan number for each loan of an amount greater than $1200.
Q3: Find the names of all customers who have a loan, an account, or both from the bank.
Q4: Find the names of all customers who have a loan and an account at bank.
Q5: Find the names of all customers who have a loan at the Perryridge branch.
Q6: Find the names of all customers who have a loan at the Perryridge branch but do not
have an account at any branch of the bank.
Q7: Find the names of all branches with customers who have an account in the bank and
who live in Harrison.
Q8: Find all customers who have an account from at least the “Downtown” and the
“uptown” branches.
16
Company Example:
Employee (fname, minit, lname, SSN, address, sex, salary, superSSN, DNo)
Department (Dname, Dnumber, MGRSSN, MGRStartDate)
Dept_Locations (DNumber, DLocation)
Project (PName, PNumber, PLocation, DNum)
Works_On (ESSN, PNo, Hours)
Dependent (ESSN, Dependent_Name, Sex, BDate,Relationship)
Q1: Retrieve the name and address of all employees who work for the ‘Research’
department.
Q2: for every project located in ‘Stafford’, list the project number, the controlling
department number, and the department manager’s last name, address, and birthdate.
Q3: make a list of project numbers for projects that involve an employee whose last
name is ‘smith’, either as a worker or as a manager of the department that controls the
project.
Q5: List the names of managers who have at least one dependent.
17