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

Relational Algebra

The document discusses relational algebra and its basic operations including select, project, union, set difference, Cartesian product, and rename. The select operation selects tuples that satisfy a given predicate, while the project operation returns a relation with certain attributes removed.
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)
28 views

Relational Algebra

The document discusses relational algebra and its basic operations including select, project, union, set difference, Cartesian product, and rename. The select operation selects tuples that satisfy a given predicate, while the project operation returns a relation with certain attributes removed.
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/ 66

Database Concepts

Relational Algebra
Database System Concepts, 7th Ed.
©Silberschatz, Korth and Sudarshan
See www.db-book.com for conditions on re-use
Relational Algebra

▪ A procedural language consisting of a set of operations that


take one or two relations as input and produce a new relation
as their result.

▪ Six basic operators


• select: 
• project: 
• union: 
• set difference: –
• Cartesian product: x
• rename: 

Database System Concepts - 7th Edition 2.2 ©Silberschatz, Korth and Sudarshan
Relational Algebra

Database System Concepts - 7th Edition 2.3 ©Silberschatz, Korth and Sudarshan
Select Operation

▪ The select operation selects tuples that satisfy a given predicate.

▪ Notation:  p (r)

▪ p is called the selection predicate

▪ Works on a single relation r and defines a relation that contains only


those tuples (rows) of r that satisfy the specified condition (predicate).

Database System Concepts - 7th Edition 2.4 ©Silberschatz, Korth and Sudarshan
Select Operation
▪ The select operation selects tuples that satisfy a given predicate.
▪ Notation:  p (r)
▪ p is called the selection predicate
▪ Example: select those tuples of the instructor relation where the instructor
is in the “Physics” department.
• Query
 dept_name=“Physics” (instructor)

• Result?

Database System Concepts - 7th Edition 2.5 ©Silberschatz, Korth and Sudarshan
Select Operation
▪ The select operation selects tuples that satisfy a given predicate.
▪ Notation:  p (r)
▪ p is called the selection predicate
▪ Example: select those tuples of the instructor relation where the instructor
is in the “Physics” department.
• Query
 dept_name=“Physics” (instructor)

• Result

Database System Concepts - 7th Edition 2.6 ©Silberschatz, Korth and Sudarshan
Practice
▪ Notation:  p (r)
▪ select those tuples of the instructor relation where the name Wu
• Query?

Database System Concepts - 7th Edition 2.7 ©Silberschatz, Korth and Sudarshan
Practice
▪ Notation:  p (r)
▪ select those tuples of the instructor relation where the name Wu
• Query
 name=“Wu” (instructor)

• Result

Database System Concepts - 7th Edition 2.8 ©Silberschatz, Korth and Sudarshan
Practice
▪ Notation:  p (r)
▪ select those tuples of the instructor relation where the name Wu
• Query
 name=“Wu” (instructor)

• Result

Database System Concepts - 7th Edition 2.9 ©Silberschatz, Korth and Sudarshan
Practice
▪ select those tuples of the instructor relation where the salary is 80000
• Query?

Database System Concepts - 7th Edition 2.10 ©Silberschatz, Korth and Sudarshan
Practice
▪ select those tuples of the instructor relation where the salary is 80000
• Query
 salary=“80000” (instructor)?
•  salary=80000 (instructor)?

• Result

Database System Concepts - 7th Edition 2.11 ©Silberschatz, Korth and Sudarshan
Practice
▪ select those tuples of the instructor relation where the salary is 80000
• Query
 salary=80000 (instructor)

• Result

Database System Concepts - 7th Edition 2.12 ©Silberschatz, Korth and Sudarshan
Select Operation (Cont.)

We allow comparisons using:


▪ _____=_____
▪ ___________
▪ ___________
▪ ___________
▪ ___________
▪ ___________
in the selection predicate.

Database System Concepts - 7th Edition 2.13 ©Silberschatz, Korth and Sudarshan
Select Operation (Cont.)

We allow comparisons using:


• =,
• ,
• >,
• .
• <.
• 
in the selection predicate.

Database System Concepts - 7th Edition 2.14 ©Silberschatz, Korth and Sudarshan
Select Operation

▪ List all staff with a salary greater than $10,000.


(relation name: staff)

Query?

Database System Concepts - 7th Edition 2.15 ©Silberschatz, Korth and Sudarshan
Select Operation

▪ List all staff with a salary greater than $10,000.

Query: salary > 10000 (Staff)

Database System Concepts - 7th Edition 2.16 ©Silberschatz, Korth and Sudarshan
Select Operation (Cont.)
▪ We can combine several predicates into a larger predicate by using the
connectives:
_____________
_____________
_____________

Database System Concepts - 7th Edition 2.17 ©Silberschatz, Korth and Sudarshan
Select Operation (Cont.)
▪ We can combine several predicates into a larger predicate by using the
connectives:
 (and),
 (or),
 (not)
▪ Example: Find the instructors in Physics with a salary greater $90,000.

Query?

Database System Concepts - 7th Edition 2.18 ©Silberschatz, Korth and Sudarshan
Select Operation (Cont.)
▪ We can combine several predicates into a larger predicate by using the
connectives:
 (and),
 (or),
 (not)
▪ Example: Find the instructors in Physics with a salary greater $90,000,

 dept_name=“Physics”  salary > 90,000 (instructor)

Database System Concepts - 7th Edition 2.19 ©Silberschatz, Korth and Sudarshan
Select Operation (Cont.)
The select predicate may include comparisons between two attributes.
• Example, find all departments whose name is the same as their
building name:
• Query?

Database System Concepts - 7th Edition 2.20 ©Silberschatz, Korth and Sudarshan
Select Operation (Cont.)
The select predicate may include comparisons between two attributes.
• Example, find all departments whose name is the same as their
building name:
• Query:  dept_name=building (department)

Database System Concepts - 7th Edition 2.21 ©Silberschatz, Korth and Sudarshan
Select Operation (Cont.)
▪ We allow comparisons using
=, , >, . <. 
in the selection predicate.
▪ We can combine several predicates into a larger predicate by using the
connectives:
 (and),  (or),  (not)
▪ Example: Find the instructors in Physics with a salary greater $90,000,
we write:

 dept_name=“Physics”  salary > 90,000 (instructor)

▪ The select predicate may include comparisons between two attributes.


• Example, find all departments whose name is the same as their
building name:
•  dept_name=building (department)

Database System Concepts - 7th Edition 2.22 ©Silberschatz, Korth and Sudarshan
Project Operation

▪ A __________ operation that returns its argument relation, with certain


attributes left out.
▪ Notation:
 A1,A2,A3 ….Ak (r)
where A1, A2, …, Ak are attribute names and r is a relation name.

▪ The result is defined as the relation of k columns obtained by erasing


the columns that are not listed
▪ Duplicate rows removed from result, since relations are sets

Database System Concepts - 7th Edition 2.23 ©Silberschatz, Korth and Sudarshan
Project Operation

▪ A unary operation that returns its argument relation, with certain


attributes left out.
▪ Notation:
 A1,A2,A3 ….Ak (r)
where A1, A2, …, Ak are attribute names and r is a relation name.

Recall Selection operation:


▪ Notation:  p (r), p is called the selection predicate
▪ Example:  dept_name=“Physics” (instructor)

Database System Concepts - 7th Edition 2.24 ©Silberschatz, Korth and Sudarshan
Project Operation Example

▪ Example: eliminate the dept_name attribute of instructor


▪ Query?

Database System Concepts - 7th Edition 2.25 ©Silberschatz, Korth and Sudarshan
Project Operation Example

▪ Example: eliminate the dept_name attribute of instructor


▪ Query:
ID, name, salary (instructor)

▪ Result ?

Database System Concepts - 7th Edition 2.26 ©Silberschatz, Korth and Sudarshan
Project Operation Example

▪ Example: eliminate the dept_name attribute of instructor


▪ Query:
ID, name, salary (instructor)

▪ Result:

Database System Concepts - 7th Edition 2.27 ©Silberschatz, Korth and Sudarshan
Project Operation

▪ A unary operation that returns its argument relation, with certain


attributes left out.
▪ Notation:
 A1,A2,A3 ….Ak (r)
where A1, A2, …, Ak are attribute names and r is a relation name.

▪ The result is defined as the relation of k columns obtained by erasing


the columns that are not listed

▪ Duplicate rows removed from result, since relations are sets

Database System Concepts - 7th Edition 2.28 ©Silberschatz, Korth and Sudarshan
Project Operation

Produce a list of salaries for all staff, showing only staffNo, fName,
lName, and salary details.
Query?

Database System Concepts - 7th Edition 2.29 ©Silberschatz, Korth and Sudarshan
Project Operation

Produce a list of salaries for all staff, showing only staffNo, fName,
lName, and salary details.
staffNo, fName, lName, salary(Staff)

Database System Concepts - 7th Edition 2.30 ©Silberschatz, Korth and Sudarshan
Composition of Relational Operations

▪ The result of a relational-algebra operation is relation and therefore of


relational-algebra operations can be composed together into a
relational-algebra expression.

▪ Consider the query -- Find the names of all instructors in the Physics
department.

Query?

Database System Concepts - 7th Edition 2.31 ©Silberschatz, Korth and Sudarshan
Composition of Relational Operations

▪ The result of a relational-algebra operation is relation and therefore of


relational-algebra operations can be composed together into a
relational-algebra expression.

▪ Consider the query -- Find the names of all instructors in the Physics
department.

name( dept_name =“Physics” (instructor))

Database System Concepts - 7th Edition 2.32 ©Silberschatz, Korth and Sudarshan
Composition of Relational Operations

▪ The result of a relational-algebra operation is relation and therefore of


relational-algebra operations can be composed together into a
relational-algebra expression.

▪ Consider the query -- Find the names of all instructors in the Physics
department.

Query:
name( dept_name =“Physics” (instructor))

Result?

Database System Concepts - 7th Edition 2.33 ©Silberschatz, Korth and Sudarshan
Composition of Relational Operations

▪ The result of a relational-algebra operation is relation and therefore of


relational-algebra operations can be composed together into a
relational-algebra expression.

▪ Consider the query -- Find the names of all instructors in the Physics
department.

Query:
name( dept_name =“Physics” (instructor))

Result:
dept_name
Einstein
Gold
Database System Concepts - 7th Edition 2.34 ©Silberschatz, Korth and Sudarshan
Cartesian-Product Operation

▪ The Cartesian-product operation (denoted by X) allows us to combine


information from any two relations.
▪ Example: the Cartesian product of the relations instructor and teaches
is written as:
instructor X teaches
▪ We construct a tuple of the result out of each possible pair of tuples:
one from the instructor relation and one from the teaches relation.

Database System Concepts - 7th Edition 2.35 ©Silberschatz, Korth and Sudarshan
The instructor X teaches table

Database System Concepts - 7th Edition 2.36 ©Silberschatz, Korth and Sudarshan
Cartesian-Product Operation

▪ We construct a tuple of the result out of each possible pair of tuples:


one from the instructor relation and one from the teaches relation.

▪ Question: instructor relation has m tuples, teaches relation has n tuples,


then how many tuples after the Cartesian-Product Operation?

Database System Concepts - 7th Edition 2.37 ©Silberschatz, Korth and Sudarshan
The instructor X teaches table

m * n tuples

Database System Concepts - 7th Edition 2.38 ©Silberschatz, Korth and Sudarshan
Cartesian-Product Operation

▪ Since the instructor ID appears in both relations we distinguish between


these attribute by________________.

Database System Concepts - 7th Edition 2.39 ©Silberschatz, Korth and Sudarshan
Cartesian-Product Operation

▪ Since the instructor ID appears in both relations we distinguish between


these attribute by attaching to the attribute the name of the relation from
which the attribute originally came.

• instructor.ID
• teaches.ID

Database System Concepts - 7th Edition 2.40 ©Silberschatz, Korth and Sudarshan
Join Operation

▪ The Cartesian-Product
instructor X teaches
associates every tuple of instructor with every tuple of teaches.
• Most of the resulting rows have information about instructors who did
NOT teach a particular course.

▪ To get only those tuples of “instructor X teaches “ that pertain to


instructors and the courses that they taught, we write:
Query?

• We get only those tuples of “instructor X teaches” that pertain to


instructors and the courses that they taught.

Database System Concepts - 7th Edition 2.41 ©Silberschatz, Korth and Sudarshan
Join Operation

▪ The Cartesian-Product
instructor X teaches
associates every tuple of instructor with every tuple of teaches.
• Most of the resulting rows have information about instructors who did
NOT teach a particular course.

▪ To get only those tuples of “instructor X teaches “ that pertain to


instructors and the courses that they taught, we write:

 instructor.id = teaches.id (instructor x teaches ))

• We get only those tuples of “instructor X teaches” that pertain to


instructors and the courses that they taught.
▪ The result of this expression, shown in the next slide

Database System Concepts - 7th Edition 2.42 ©Silberschatz, Korth and Sudarshan
Join Operation (Cont.)

▪ The table corresponding to:


 instructor.id = teaches.id (instructor x teaches))

Database System Concepts - 7th Edition 2.43 ©Silberschatz, Korth and Sudarshan
Join Operation (Cont.)
▪ The join operation allows us to combine a select operation and a
Cartesian-Product operation into a single operation.
▪ Consider relations r (R) and s (S)
▪ Let “theta” be a predicate on attributes in the schema R “union” S. The
join operation r ⋈𝜃 s is defined as follows:
𝑟 ⋈𝜃 𝑠 = 𝜎𝜃 (𝑟 × 𝑠)

▪ Thus
 instructor.id = teaches.id (instructor x teaches ))

▪ Can equivalently be written as


___________________________________

Database System Concepts - 7th Edition 2.44 ©Silberschatz, Korth and Sudarshan
Join Operation (Cont.)
▪ The join operation allows us to combine a select operation and a
Cartesian-Product operation into a single operation.
▪ Consider relations r (R) and s (S)
▪ Let “theta” be a predicate on attributes in the schema R “union” S. The
join operation r ⋈𝜃 s is defined as follows:
𝑟 ⋈𝜃 𝑠 = 𝜎𝜃 (𝑟 × 𝑠)

▪ Thus
 instructor.id = teaches.id (instructor x teaches ))

▪ Can equivalently be written as


instructor ⋈ Instructor.id = teaches.id teaches.

Database System Concepts - 7th Edition 2.45 ©Silberschatz, Korth and Sudarshan
Union Operation

▪ The union operation allows us to combine two relations


▪ Notation: r  s
▪ For r  s to be valid.
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)

Database System Concepts - 7th Edition 2.46 ©Silberschatz, Korth and Sudarshan
Union Operation

▪ The union operation allows us to combine two relations; Notation: r  s


▪ Example: to find all courses taught in the Fall 2017 semester, or in the
Spring 2018 semester, or in both

Query?

Database System Concepts - 7th Edition 2.47 ©Silberschatz, Korth and Sudarshan
Union Operation
▪ The union operation allows us to combine two relations; Notation: r  s
▪ Example: In the Section relation, to find all courses (course ID) taught in
the Fall 2017 semester, or in the Spring 2018 semester, or in both

Query:

course_id ( semester=“Fall” Λ year=2017 (section)) 


course_id ( semester=“Spring” Λ year=2018 (section))

Database System Concepts - 7th Edition 2.48 ©Silberschatz, Korth and Sudarshan
Union Operation
▪ The union operation allows us to combine two relations; Notation: r  s
▪ Example: In the Section relation, to find all courses taught in the Fall 2017
semester, or in the Spring 2018 semester, or in both

Query: course_id ( semester=“Fall” Λ year=2017 (section)) 


course_id ( semester=“Spring” Λ year=2018 (section))

Result?

Database System Concepts - 7th Edition 2.49 ©Silberschatz, Korth and Sudarshan
Union Operation
▪ The union operation allows us to combine two relations; Notation: r  s
▪ Example: In the Section relation, to find all courses taught in the Fall 2017
semester, or in the Spring 2018 semester, or in both

Query: course_id ( semester=“Fall” Λ year=2017 (section)) 


course_id ( semester=“Spring” Λ year=2018 (section))

Result?

Database System Concepts - 7th Edition 2.50 ©Silberschatz, Korth and Sudarshan
Set-Intersection Operation

▪ The set-intersection operation allows us to find tuples that are in both


the input relations.

▪ Notation: r  s

▪ Assume:
• r, s have the same _______;
• attributes of r and s are __________;

Database System Concepts - 7th Edition 2.51 ©Silberschatz, Korth and Sudarshan
Set-Intersection Operation

▪ The set-intersection operation allows us to find tuples that are in both


the input relations.

▪ Notation: r  s

▪ Assume:
• r, s have the same arity
• attributes of r and s are compatible

Database System Concepts - 7th Edition 2.52 ©Silberschatz, Korth and Sudarshan
Set-Intersection Operation
▪ The set-intersection operation allows us to find tuples that are in both
the input relations.
▪ Notation: r  s
▪ Example: Find the set of all courses taught in both the Fall 2017 and the
Spring 2018 semesters.
Query?

Database System Concepts - 7th Edition 2.53 ©Silberschatz, Korth and Sudarshan
Set-Intersection Operation
▪ The set-intersection operation allows us to find tuples that are in both
the input relations.
▪ Notation: r  s
▪ Example: Find the set of all courses taught in both the Fall 2017 and the
Spring 2018 semesters.

course_id ( semester=“Fall” Λ year=2017 (section)) 


course_id ( semester=“Spring” Λ year=2018 (section))

• Result?

Database System Concepts - 7th Edition 2.54 ©Silberschatz, Korth and Sudarshan
Set-Intersection Operation
▪ The set-intersection operation allows us to find tuples that are in both
the input relations.
▪ Notation: r  s
▪ Example: Find the set of all courses taught in both the Fall 2017 and the
Spring 2018 semesters.

course_id ( semester=“Fall” Λ year=2017 (section)) 


course_id ( semester=“Spring” Λ year=2018 (section))

• Result?

Database System Concepts - 7th Edition 2.55 ©Silberschatz, Korth and Sudarshan
Set Difference Operation

▪ The set-difference operation allows us to find tuples that are in one


relation but are not in another.
▪ Notation r – s
▪ Set differences must be taken between compatible relations.
• r and s must have the same _________;
• attribute domains of r and s must be _____________;

Database System Concepts - 7th Edition 2.56 ©Silberschatz, Korth and Sudarshan
Set Difference Operation

▪ The set-difference operation allows us to find tuples that are in one


relation but are not in another.
▪ Notation r – s
▪ Set differences must be taken between compatible relations.
• r and s must have the same arity
• attribute domains of r and s must be compatible

Database System Concepts - 7th Edition 2.57 ©Silberschatz, Korth and Sudarshan
Set Difference Operation

▪ The set-difference operation allows us to find tuples that are in one


relation but are not in another.
▪ Notation r – s
▪ Example: to find all courses taught in the Fall 2017 semester, but not in
the Spring 2018 semester

▪ Query?

Database System Concepts - 7th Edition 2.58 ©Silberschatz, Korth and Sudarshan
Set Difference Operation

▪ The set-difference operation allows us to find tuples that are in one


relation but are not in another.
▪ Notation r – s
▪ Example: to find all courses taught in the Fall 2017 semester, but not in
the Spring 2018 semester
course_id ( semester=“Fall” Λ year=2017 (section)) −
course_id ( semester=“Spring” Λ year=2018 (section))

Database System Concepts - 7th Edition 2.59 ©Silberschatz, Korth and Sudarshan
The Assignment Operation
▪ It is convenient at times to write a relational-algebra expression by
assigning parts of it to temporary relation variables.
▪ The assignment operation is denoted by  and works like assignment in
a programming language.
▪ Example: Find all instructor in the “Physics” and Music department.
Physics   dept_name=“Physics” (instructor)
Music   dept_name=“Music” (instructor)
What is next?

Database System Concepts - 7th Edition 2.60 ©Silberschatz, Korth and Sudarshan
The Assignment Operation
▪ It is convenient at times to write a relational-algebra expression by
assigning parts of it to temporary relation variables.
▪ The assignment operation is denoted by  and works like assignment in
a programming language.
▪ Example: Find all instructor in the “Physics” and Music department.
Physics   dept_name=“Physics” (instructor)
Music   dept_name=“Music” (instructor)
Physics  Music

Database System Concepts - 7th Edition 2.61 ©Silberschatz, Korth and Sudarshan
The Rename Operation

▪ The results of relational-algebra expressions do not have a name that


we can use to refer to them. The rename operator,  , is provided for
that purpose
▪ The expression:
x (E)
returns the result of expression E under the name x

Database System Concepts - 7th Edition 2.62 ©Silberschatz, Korth and Sudarshan
Equivalent Queries

▪ There is more than one way to write a query in relational algebra.


▪ Example: Find information about courses taught by instructors in the
Physics department with salary greater than 90,000
▪ Query 1?

▪ Query 2?

Database System Concepts - 7th Edition 2.63 ©Silberschatz, Korth and Sudarshan
Equivalent Queries

▪ There is more than one way to write a query in relational algebra.


▪ Example: Find information about courses taught by instructors in the
Physics department with salary greater than 90,000
▪ Query 1
 dept_name=“Physics”  salary > 90,000 (instructor)

▪ Query 2?

Database System Concepts - 7th Edition 2.64 ©Silberschatz, Korth and Sudarshan
Equivalent Queries
▪ Example: Find information about courses taught by instructors in the
Physics department with salary greater than 90,000
▪ Query 1
 dept_name=“Physics”  salary > 90,000 (instructor)
▪ Query 2
 dept_name=“Physics” ( salary > 90.000 (instructor))

▪ The two queries are not identical; they are, however, equivalent -- they
give the same result on any database.

Database System Concepts - 7th Edition 2.65 ©Silberschatz, Korth and Sudarshan
Relational Algebra

Database System Concepts - 7th Edition 2.66 ©Silberschatz, Korth and Sudarshan

You might also like