0% found this document useful (0 votes)
11 views

Part3 Ch8 Relational Algebra

Uploaded by

a8831952
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views

Part3 Ch8 Relational Algebra

Uploaded by

a8831952
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 17

Part3: The Relational Data Model and SQL

Chapter 8: Relational Algebra

Outline:

8.1 Introduction
8.2 Unary Relational Operations.
 Select Operator (σ)
 Project Operator (π)
 Rename Operator (ρ)
 Assignment Operator (←)

8.3 Binary Relational Operations.


 Set Operators
o Union Operator (  )
o Intersection Operator (∩)
o Set Difference or Minus Operator (-)
 Cartesian Product Operator (×)
 Join Operator
o Theta Join ( ϴ)
o Natural Join ( ) or (*)
o Outer Join

8.4 Examples of Queries in Relational Algebra.

Prepared by: Eng. Randa Al_Dallah and Sawsan Abu_Taleb

1
8.1 Introduction

Relational Query Languages

 Languages for describing queries on a relational database


o Structured Query Language (SQL)
 Declarative (Nonprocedural)
o Relational Algebra
 Intermediate language used within DBMS
 Procedural
 Procedural: Relational expression specifies query by describing an algorithm (the
sequence in which operators are applied) for determining the result of an
expression

 The relational algebra was developed before the SQL language.

 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.

Prepared by: Eng. Randa Al_Dallah and Sawsan Abu_Taleb

2
8.2 Unary Relational Operations

Select Operator (σ)

 Select a subset of rows from a relation that satisfying a condition.


Syntax:
condition (R)

o The symbol  (sigma) is used to denote the select operator.


o The selection condition is a Boolean expression specified on the attributes
of relation R.
 condition (R) is equivalent to “Select * from R where <condition>;”

 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

1. A=B (r) = Select * from r where A=B;

A B C D
X X 1 8
Y Y 3 3
Y Y 12 10

2. D>5 (r) = Select * from r where D>5;

A B C D
X X 1 8
X Y 5 7
Y Y 12 10

 We can combine several conditions into a larger condition by using the


connectives ^ (and), ᵛ (or), and ¬ (not).
 Example:
A=B ^ D>5 (r) = Select * from r where A=B and D>5;

A B C D
X X 1 8
Y Y 12 10

Prepared by: Eng. Randa Al_Dallah and Sawsan Abu_Taleb

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

address=’Amman’ (Student) = Select * from Student where address=’Amman’;

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

 Select Operation Properties:


condition1 (condition2 (R)) = condition2 (condition1 (R)) = condition1^ condition2 (R)

Project Operator (π)

 Selecting a subset of the attributes of a relation by specifying the name of the


required attributes.
 The Project creates a vertical partitioning.
Syntax:
π <Attribute list> (R)

o The symbol π (pi) is used to denote the project operator.


o <Attribute list> is the desired list of attributes from the attributes of
relation R.
o π <Attribute list> (R) is equivalent to “Select Distinct Attribute_List from R;”
 The project operation removes any duplicate rows.

Prepared by: Eng. Randa Al_Dallah and Sawsan Abu_Taleb

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 (r) = Select Distinct A, B From r;

A B
X X
X Y
Y Y

 Project operation properties:


o π list1 (π list2 (r)) = π list1(r) , where list2 contains the attributes of list1
o The number of rows in the result of projection π list (r) is always less or
equal to the number of rows in r.
o If the list of attributes includes a key of r, the number of rows is equal to
the number of rows in r.

 Composition of Relational Operations (Expression)


o Relational algebra operations can be composed together into a relational
algebra expression.
o Example:
π B (C >= 3 (r)) = Select Distinct B From r Where C >= 3;

B
Y

Assignment Operator (←)

 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

Prepared by: Eng. Randa Al_Dallah and Sawsan Abu_Taleb

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

8.3 Binary Relational Operations

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

 =

o For R S to be valid. (The two operands must be “type compatible”)


1. R, S must have the same arity (same number of attributes).
2. The attribute domains must be compatible (example: 2nd column of
R deals with the same type of values as does the 2nd column of S)

o R S is equivalent to “Select * From R Union Select * From S;”


o Example:
Tables:
Person (SSN, Name, Address, Hobby)
Professor (Id, Name, Office, Phone)
are not union compatible.
But
 Name (Person) and  Name (Professor)
are union compatible so
 Name (Person)   Name (Professor)
makes sense.

Prepared by: Eng. Randa Al_Dallah and Sawsan Abu_Taleb

6
o Example:
r
A B
X 1
X 2
Y 1

s
A B
X 2
Y 3

rs = Select * From r Union Select * from s;

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.

Employee SSN EName Sal SuperSSN DNo

Dep5_Emps ← DNo=5 (Employee)


Result1 ← πSSN (Dep5_Emps)
Result2 ← πSuperSSN (Dep5_Emps)
Result ← Result1 Result2

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).

πSSN, Ename ((DNo=10 (Employee)) ∩ (sal>1000 (Employee)))

2. Intersection Operator (∩)


o The result of this operation, denoted by R ∩S, is a relation that includes all
rows that are in both R and S. the two operands must be “type compatible”.
o Example:

R S

∩ =

Prepared by: Eng. Randa Al_Dallah and Sawsan Abu_Taleb

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 = Select * from r Intersect Select * from s;


A B
X 2

3. Set Difference Operator (-)


o The result of this operation, denoted by R -S, is a relation that includes all
rows that are in R but not in S. the two operands must be “type compatible”.
o Example:

R S

=
-

o R -S is equivalent to “Select * From R Minus Select * From S;”


o Example:
r
A B
X 1
X 2
Y 1

s
A B
X 2
Y 3

r – s = Select * from r Minus Select * from s;

A B
X 1
Y 1

Prepared by: Eng. Randa Al_Dallah and Sawsan Abu_Taleb

8
s-r
A B
Y 3

 Set Operators Properties:


o The union and the intersection are commutative operations
R S = S R, and R ∩S = S ∩R

o The union and the intersection are associative operations


R S T R  S)  T, and R ∩S ∩T R ∩ S) ∩ T

o The set difference operation is not commutative operation


R – S ≠ S – R and (R – S) – T ≠ R – (S – T)

 Example: consider the following relations


R1={X, Y, Z, W}
R2={X, A, B, C}
R3={X, Y, A, S, D}
Proof that (R – S) – T ≠ R – (S – T)

Cartesian (or Cross Product) Operator (×)

 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

Prepared by: Eng. Randa Al_Dallah and Sawsan Abu_Taleb

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

 Generally, CROSS PRODUCT is not a meaningful operation


o Can become meaningful when followed by other operations
o Example (not meaningful):

Employee SSN FName LName Gender SuperSSN DNo

Dependent ESSN Dependent_Name Gender BDate Relationship

Female_Emps   Gender=’F’(Employee)
EmpNames  π FNAME, LNAME, SSN (Female_Emps)
Emp_Dependents  EmpNames x Dependent

o Emp_Dependents will contain every combination of EmpNames and


Dependent
o whether or not they are actually related
o To keep only combinations where the Dependent is related to the
Employee, we add a SELECT operation as follows

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

Prepared by: Eng. Randa Al_Dallah and Sawsan Abu_Taleb

10
 Example: Display employees names for employees who work in accounting
department

Employee SSN Ename Sal Gender SuperSSN DNo

Department DNo DName Location

π ENAME ( employee.dno=department.dno( dname=’Accounting’ (Employee × Department))) =

Select Ename from Employee, Department


where employee.dno = department.dno and dname = ‘Accounting’;

 Example: find the names of all customers who live on the same street and in the
same city as smith

Customer SSN Cname City Street

π CName ( street = s ^ city = c (


Customer × (ρsmith_add(s,c) (π street, city (  CName = ‘Smith’ (Customer))))) =

Select c1.CName from customer c1, customer c2


where c2.CName=’Smith’ and c1.city = c2.city and c1.street = c2.street;

 Example: find the largest account balance in the bank

Account AccNo Balance Date

π 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.

1. Theta Join Operator ( ϴ)

o The Theta-Join is a specialized product containing only pairs that match on


a supplied condition called join-condition.
o A theta join of R and S is the expression
R ϴS
where ϴ is a conjunction of terms: Ai oper Bi
in which Ai is an attribute of R; Bi is an attribute of S; and oper is one of =,
<, >,  <>, .

o R ϴ S =  ϴ (R  S) = Select * from R,S where ϴ;

Prepared by: Eng. Randa Al_Dallah and Sawsan Abu_Taleb

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

R A<> ‘a’ ^ D < E S

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.

Employee ID Ename Salary MgrId

 e.EName (ρe (Employee) e.MgrId=m.Id ^ e.Salary>m.Salary ρm (Employee))

2. Natural Join Operator ( )


o Special case of Equi_Join.
o 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.
o Natural join removes duplicate attributes.

Prepared by: Eng. Randa Al_Dallah and Sawsan Abu_Taleb

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

R ρ (B, F, G) (S) = Select R.*, F, G from R, S where B=E;

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

Prepared by: Eng. Randa Al_Dallah and Sawsan Abu_Taleb

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

3. Outer Join Operator


o An extension of the join operation that avoids loss of information.
o Computes the join and then adds tuples form one relation that does not
match tuples in the other relation to the result of the join.
o Outer join types:
 Left outer join
 Right outer join
 Full outer join
o Example:

Relation Loan

Relation Borrower

Prepared by: Eng. Randa Al_Dallah and Sawsan Abu_Taleb

14
Complete Set of Relational Operations

 The set of operations including π (Projection), σ (Selection), – (Difference), ρ


(Rename), (Union) and  (Cartesian Product) is called a complete set, because
any other relational algebra expression can be expressed by combination of these
five operations.

o R ∩ S = (R  S ) – ((R - S)  (S - R))

o R ∩ S = R – ( R – S)

o R Condition S =  Condition (R  S)

Prepared by: Eng. Randa Al_Dallah and Sawsan Abu_Taleb

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)

Q1: Find all loans of over $1200.

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.

Prepared by: Eng. Randa Al_Dallah and Sawsan Abu_Taleb

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.

Q4: Retrieve the names of employees who have no dependents.

Q5: List the names of managers who have at least one dependent.

Prepared by: Eng. Randa Al_Dallah and Sawsan Abu_Taleb

17

You might also like