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

02 Relational Algebra

Relational algebra provides a theoretical foundation for relational databases and query languages. It uses operators like selection, projection, join and set operators to manipulate relations and express queries. Common operators include selection to filter tuples, projection to choose attributes, and join to combine relations. Relational algebra expressions are composed of one or more relational operators applied to relations.

Uploaded by

Diện Nghiêm
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
15 views

02 Relational Algebra

Relational algebra provides a theoretical foundation for relational databases and query languages. It uses operators like selection, projection, join and set operators to manipulate relations and express queries. Common operators include selection to filter tuples, projection to choose attributes, and join to combine relations. Relational algebra expressions are composed of one or more relational operators applied to relations.

Uploaded by

Diện Nghiêm
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 32

Lesson 2:

Relational Algebra

2
Learning points
1. Introduction to relational algebra
2. Set operators
3. Relational operators: Projection, Selection, Rename, Join
4. Common extensions

3
Learning objectives
• Upon completion of this lesson, students will be able to:
• Understand relational algebra operators
• Write relational algebraic expressions

4
Keywords and descriptions
Keyword Description

Is data representation format as a table of values, each row in the table represents a collection
Relational data model
of related data values

Set Is collection of Object

Is a special token that represent computations


Operator
such as union, minus, selection, join, etc

Expression Is a expression built up from operators and operands

5
Database Schema
student(student_id, first_name, last_name, dob, gender, address, note, clazz_id)
clazz(clazz_id, name, lecturer_id, monitor_id)
subject(subject_id, name, credit, percentage_final_exam)
enrollment(student_id, subject_id, semester, midterm_score, final_score)
lecturer(lecturer_id, first_name, last_name, dob, gender, address, email)
teaching(subject_id, lecturer_id)
grade(code, from_score, to_score)

6
Database
student
clazz
student_id first_name last_name dob … clazz_id
clazz_id name lecturer_id monitor_id
20160001 Ngọc An Bùi 3/18/1987 …
20162101 CNTT1.01-K61 02001 20160003
20160002 Anh Hoàng 5/20/1987 … 20162101
20162102 CNTT1.02-K61
20160003 Thu Hồng Trần 6/6/1987 … 20162101
20172201 CNTT2.01-K62 02002 20170001
20160004 Minh Anh Nguyễn 5/20/1987 … 20162101
20172202 CNTT2.02-K62
20170001 Nhật Ánh Nguyễn 5/15/1988 … 20172201

enrollment
subject
midterm_ final_
percentage_ student_id subject_id semester
subject_id name credit score score
final_exam
20160001 IT1110 20171 9 8.5
IT1110 Tin học đại cương 4 60
20160001 IT3080 20172 8
IT3080 Mạng máy tính 3 70
20160001 IT3090 20172 6 9
IT3090 Cơ sở dữ liệu 3 70
20160001 IT4857 20172 7.5 9
IT4857 Thị giác máy tính 3 60
20160001 IT4866 20172 7 9
IT4866 Học máy 2 70
20160002 IT3080 20172 9
20160003 IT1110 20171 7 6
20160004 IT1110 20171 6 5

7
1. Introduction to relational algebra
• Relational algebra providing a theoretical foundation
for relational databases, particularly query languages for
relational databases.
• Relational algebra expression is composed of one or several
relational algebraic operators:
• Operator: represent computations
• Input: one or two relation
• Output: a relation
• Unary operator (one input) vs. binary operator (two inputs)

8
2. Set operators
2.1. Union
2.2. Intersection
2.3. Difference
2.4. Cartesian product

9
2.1. Union
• Combining the tuples from two union-compatible relation inputs
(having the same set of attributes).

R1
R1  R2 R2


result
clazz_id name lecturer_id monitor_id
20162101 CNTT1.01-K61 02001 20160003
20172201 CNTT2.01-K62 02002 20170001

10
2.2. Intersection
• Keeping only common tuples from 2 input union-compatible
relations.

 R1
R1 R2 R2


result
clazz_id name lecturer_id monitor_id
20162101 CNTT1.02-K61
20172201 CNTT2.01-K62 02002 20170001

11
2.3. Difference
• Containing tuples occurred in the first relation but not in the
second.

R
R1 \ R2 R2
clazz
clazz_id name lecturer_id monitor_id
20162101 CNTT1.01-K61 02001 20160003
20162102 CNTT1.02-K61 \
20172201 CNTT2.01-K62 02002 20170001
20172202 CNTT2.02-K62 result
clazz_id name lecturer_id monitor_id
20162101 CNTT1.01-K61 02001 20160003
20172201 CNTT2.01-K62 02002 20170001

12
2.4. Cartesian Product
• The concatenation of every tuple of one relation with every tuple
of the other relation.

a x
a y
a
x b x
b

X y b y
c
d c x
c y
d x
d y

13
3. Relational algebra operators
3.1. Selection
3.2. Projection
3.3. Rename
3.4. Join
3.5. Division

14
3.1. Selection
• Choose from R each tuple where the condition holds.

  condition  (R )
R1
R2 R2
R3 R3
R4
clazz
clazz_id
20162101
name
CNTT1.01-K61
lecturer_id
02001
monitor_id
20160003
lecturer_id != null (clazz)
20162102 CNTT1.02-K61
20172201 CNTT2.01-K62 02002 20170001 result
20172202 CNTT2.02-K62 clazz_id name lecturer_id monitor_id
20162101 CNTT1.01-K61 02001 20160003
20172201 CNTT2.01-K62 02002 20170001

15
3.2. Projection
• Choose some attributes.

 A1, A 2 ,... (R)

C1 C2 C3 C4 C5 C2 C5

clazz
clazz_id name lecturer_id monitor_id clazz_id, name (clazz)
20162101 CNTT1.01-K61 02001 20160003
20162102 CNTT1.02-K61
20172201 CNTT2.01-K62 02002 20170001 result
20172202 CNTT2.02-K62 clazz_id name
20162101 CNTT1.01-K61
20172201 CNTT2.01-K62

16
3.3. Rename
• Result is identical to R except that the b attribute in all tuples is
renamed to an a attribute.

a|b(R)
clazz
clazz_id
20162101
name
CNTT1.01-K61
lecturer_id
02001
monitor_id
20160003
name of class | name(clazz)
20162102 CNTT1.02-K61
clazz
20172201 CNTT2.01-K62 02002 20170001
clazz_id Name of class lecturer_id monitor_id
20172202 CNTT2.02-K62
20162101 CNTT1.01-K61 02001 20160003
20162102 CNTT1.02-K61
20172201 CNTT2.01-K62 02002 20170001
20172202 CNTT2.02-K62

17
3.4. Join
• Combine attributes from 2 tables.

R1   join _ condition  R 2

a r r x a r xr x
b r s y b r xr x
c v t z

18
3.4. Join
Student clazz
student
student_id first_name last_name … clazz_id
20160001 Ngọc An Bùi
20160002 Anh Hoàng 20162101
20160003 Thu Hồng Trần 20162101
20160004 Minh Anh Nguyễn 20162101 result
20170001 Nhật Ánh Nguyễn 20172201 student_id first_name last_name name
20160002 Anh Hoàng CNTT1.01-K61
clazz 20160003 Thu Hồng Trần CNTT1.01-K61
clazz_id name lecturer_id monitor_id 20160004 Minh Anh Nguyễn CNTT1.01-K61
20162101 CNTT1.01-K61 02001 20160003 20170001 Nhật Ánh Nguyễn CNTT2.01-K62
20162102 CNTT1.02-K61
20172201 CNTT2.01-K62 02002 20170001
20172202 CNTT2.02-K62

19
3.5. Division
• Divides a dividend relation R1 or degree m+n by a divisor
relation R2 of degree n, and produces a quotient relation of
degree m.

a x
a y
a
b
z
x
: x
z
a

c y

20
An example
• List student_id who enroll in all subjects.

enrollment
midterm_ final_
student_id subject_id semester subject
score score
20160001 IT1110 20171 9 8.5 percentage_
subject_id name credit
final_exam
20160001 IT3080 20172 8
IT1110 Tin học đại cương 4 60
20160001 IT3090 20172 6 9
IT3080 Mạng máy tính 3 70
20160001 IT4857 20172 7.5 9
IT3090 Cơ sở dữ liệu 3 70
20160001 IT4866 20172 7 9
IT4857 Thị giác máy tính 3 60
20160002 IT3080 20172 9
IT4866 Học máy 2 70
20160003 IT1110 20171 7 6
20160004 IT1110 20171 6 5

21
An example
• List student_id who enroll in all subjects.

enrollment
midterm_ final_
student_id subject_id semester subject
score score
20160001 IT1110 20171 9 8.5 percentage_
subject_id name credit
final_exam
20160001 IT3080 20172 8
IT1110 Tin học đại cương 4 60
20160001 IT3090 20172 6 9
IT3080 Mạng máy tính 3 70
20160001 IT4857 20172 7.5 9
IT3090 Cơ sở dữ liệu 3 70
20160001 IT4866 20172 7 9
IT4857 Thị giác máy tính 3 60
20160002 IT3080 20172 9
IT4866 Học máy 2 70
20160003 IT1110 20171 7 6
20160004 IT1110 20171 6 5

student_id, subject_id (enrollement) subject_id (subject)

22
An example
• List student_id who enroll in all subjects.

enrollment
midterm_ final_
student_id subject_id semester subject
score score
20160001 IT1110 20171 9 8.5 subject_id percentage_
name credit Result
final_exam
20160001 IT3080 20172 8
20160001
20160001
IT3090
IT4857
20172
20172
: 6
7.5
9
9
IT1110
IT3080
Tin học đại cương
Mạng máy tính
4
3
60
70
student_id

20160001
IT3090 Cơ sở dữ liệu 3 70
20160001 IT4866 20172 7 9
IT4857 Thị giác máy tính 3 60
20160002 IT3080 20172 9
IT4866 Học máy 2 70
20160003 IT1110 20171 7 6
20160004 IT1110 20171 6 5

(student_id, subject_id (enrollement)) : (subject_id (subject))

23
4. Common extension
4.1. Natural join
4.2. Outer join
4.3. Aggregation

24
4.1. Natural join
• Special join operation with equal join condition on their common
attributes, noted *

student clazz
student_id first_name last_name dob … clazz_id clazz_id name lecturer_id monitor_id
20160001 Ngọc An Bùi 3/18/1987 … 20162101 CNTT1.01-K61 02001 20160003
20160002 Anh Hoàng 5/20/1987 … 20162101 20162102 CNTT1.02-K61
20160003 Thu Hồng Trần 6/6/1987 … 20162101 20172201 CNTT2.01-K62 02002 20170001
20160004 Minh Anh Nguyễn 5/20/1987 … 20162101 20172202 CNTT2.02-K62
20170001 Nhật Ánh Nguyễn 5/15/1988 … 20172201

results
student_id first_name last_name dob … clazz_id Name lecturer_id Monitor_id
20160002 Anh Hoàng 5/20/1987 … 20162101 CNTT1.01-K61 02001 20160003
20160003 Thu Hồng Trần 6/6/1987 … 20162101 CNTT1.01-K61 02001 20160003
20160004 Minh Anh Nguyễn 5/20/1987 … 20162101 CNTT1.01-K61 02001 20160003
20170001 Nhật Ánh Nguyễn 5/15/1988 … 20172201 CNTT2.01-K62 02002 20170001

25
4.2. Outer join
• Left Outer join

a r r x a r x
b r s y b r x
c v t z c v null

• Right Outer join

a r r x a r x
b r s y b r x
c v t z null s y
null t z

26
4.2. Outer join
• Example of left-outer join: List all students and class
information if any
student clazz
student_id first_name last_name dob … clazz_id clazz_id name lecturer_id monitor_id
20160001 Ngọc An Bùi 3/18/1987 … 20162101 CNTT1.01-K61 02001 20160003
20160002 Anh Hoàng 5/20/1987 … 20162101 20162102 CNTT1.02-K61
20160003 Thu Hồng Trần 6/6/1987 … 20162101 20172201 CNTT2.01-K62 02002 20170001
20160004 Minh Anh Nguyễn 5/20/1987 … 20162101 20172202 CNTT2.02-K62
20170001 Nhật Ánh Nguyễn 5/15/1988 … 20172201

results
student_id first_name last_name dob … clazz_id Name lecturer_id Monitor_id
20160001 Ngọc An Bùi 3/18/1987
20160002 Anh Hoàng 5/20/1987 … 20162101 CNTT1.01-K61 02001 20160003
20160003 Thu Hồng Trần 6/6/1987 … 20162101 CNTT1.01-K61 02001 20160003
20160004 Minh Anh Nguyễn 5/20/1987 … 20162101 CNTT1.01-K61 02001 20160003
20170001 Nhật Ánh Nguyễn 5/15/1988 … 20172201 CNTT2.01-K62 02002 20170001

27
4.3. Aggregation
• Aggregation

G1, G2, … Gn G F1(A1), F2(A2),….Fn(An) (R)

• G1, G2, … Gn is a list of attributes on which to group F1 (A1), F2


(A2),...Fn (An) is a list of aggregation function on attribute A1,
A2,... An

28
4.3. Aggregation
• Example of Aggregation

Gstudent_id Gcount(subject_id) (enrollment )

enrollment
midterm_ final_ results
student_id subject_id semester
score score
20160001 IT1110 20171 9 8.5 student_id count(subject_id)
20160001 IT3080 20172 8 20160001 5
20160001 IT3090 20172 6 9 20160002 1
20160001 IT4857 20172 7.5 9 20160003 1
20160001 IT4866 20172 7 9 20160004 1
20160002 IT3080 20172 9
20160003 IT1110 20171 7 6
20160004 IT1110 20171 6 5

29
4.3. Aggregation
• Example of Aggregation

G count(student_id) (student )

student
student_id first_name last_name dob … clazz_id value not a relation
20160001 Ngọc An Bùi 3/18/1987 …
20160002
20160003
Anh
Thu Hồng
Hoàng
Trần
5/20/1987
6/6/1987


20162101
20162101
5
20160004 Minh Anh Nguyễn 5/20/1987 … 20162101
20170001 Nhật Ánh Nguyễn 5/15/1988 … 20172201

30
Summary
• Introduction to relational algrebra
• Procedural langue
• Set operators
• Union, intersection, difference
• Relational operators
• Projection, Selection, Rename, Join
• Common extensions
• Natural join, Outer join, Aggregation

31
Thank you for
your attentions!

32

You might also like