Chương 5
Chương 5
Mô hình dữ liệu quan hệ
Mô hình dữ liệu quan hệ
1
Nội dung
Nội dung
Đại số quan hệ
◦
5 phép toán cơ bản
◦
3 phép toán suy dẫn
Các loại phép kết
Các quy tắc của 1 DBMS
2
Ngôn ngữ quan hệ
Ngôn ngữ quan hệ
Ngôn ngữ phi thủ tục (non-procedural
language) cho phép người dùng chỉ ra cái
(what) họ muốn mà không cần chỉ ra cách
thực hiện như thế nào (how) để được kết
quả đó
◦
SQL là ngôn ngữ phi thủ tục
Đại số quan hệ là một ngôn ngữ thủ tục
mức cao (high-level procedure language)
cho phép DBMS tạo 1 quan hệ mới
3
Đại số quan hệ
Đại số quan hệ
(Relational Algebra)
(Relational Algebra)
Đại số quan hệ là ngôn ngữ tập hợp (set
language) bao gồm các toán tử (operator)
thao tác trên 1 hay nhiều quan hệ để tạo
ra 1 quan hệ khác mà không làm thay đổi
các quan hệ ban đầu.
Các toán hạng và kết quả đều là quan hệ
Kết quả của 1 phép toán có thể trở thành
toán hạng cho 1 phép toán khác tính
bao đóng (closure)
4
Đại số quan hệ và SQL
Đại số quan hệ và SQL
Query thực chất là 1 biểu thức chứa các
toán tử của đại số quan hệ. Kết quả của
query cũng là 1 quan hệ.
Mối liên hệ giữa SQL và đại số quan hệ??
SQL là 1 ngôn ngữ phi thủ tục ( không xác
định các thủ tục được dùng để xử lý truy
vấn), còn đại số quan hệ theo hướng thủ
tục.
5
Đại số quan hệ và SQL
Đại số quan hệ và SQL
Lập trình viên dùng SQL để xác định query
của họ.
DBMS kiểm tra cú pháp (parse) của
query, dịch nó thành 1 biểu thức của đại
số quan hệ, đơn giản hơn nhưng ít hiệu
quả hơn về giải thuật. Query optimizer
biến đổi biểu thức đại số này thành 1 biểu
thức tương đương nhưng ít tốn thời gian
thực thi hơn tạo 1 execution plan. Code
generator chuyển đổi nó thành mã để thực
thi.
6
7
SQL query
SQL query
Relational algebra Expression
Relational algebra Expression
Query Execution Plan
Query Execution Plan
Executable Code
Executable Code
Parser
Query Optimizer
Query Optimizer
Code generator
5 phép toán cơ bản
5 phép toán cơ bản
Phép chọn (selection)
Phép chiếu (projection)
Phép tích Descartes (Cartesian product)
Phép hợp (union)
Phép hiệu (difference)
8
3 phép toán suy dẫn
3 phép toán suy dẫn
(Derived operator)
(Derived operator)
Có thể được biểu diễn như biểu thức của
các phép toán cơ bản
3 phép toán suy dẫn:
◦ Intersection
◦ Division
◦
Join
9
5 phép toán cơ bản
5 phép toán cơ bản
Các phép toán được thực hiện cho quan hệ
r trên lược đồ quan hệ R và điều kiện F.
Điều kiện F là 1 biểu thức luận lý có giá trị
true/false, nó bao gồm:
◦
Các toán hạng là hằng hoặc tên thuộc tính
◦
Các phép toán so sánh =, ≠, <, ≤,>, ≥
◦
Các phép toán luận lý not (¬), and (∧), or (∨)
10
Phép chọn (selection operation)
Phép chọn (selection operation)
Phép chọn trên r theo điều kiện F, ký hiệu
là σ
F
(r), cho kết quả là 1 quan hệ bao gồm
các bộ của r thỏa mãn điều kiện F
σ
F
(r) = {t|t ∈r và F(t) = true}
Nếu quan hệ r có bậc là n và có k bộ thì
σ
F
(r) có bao nhiêu bậc và bộ?
Bậc là n và có tối đa là k bộ
11
Ví dụ
Ví dụ
12
Select Operation – Example
Select Operation – Example
Relation r
A B C D
α
α
β
β
α
β
β
β
1
5
12
23
7
7
3
10
σ
A=B ^ D > 5
(r)
A B C D
α
β
α
β
1
23
7
10
Selection
Selection
14
σ
σ
PRICE<$2.0
PRICE<$2.0
(Product
(Product
)
)
σ
σ
PCODE =311452
PCODE =311452
(Product)
(Product)
Phép chiếu (Projection operation)
Phép chiếu (Projection operation)
Cho quan hệ r trên R(A1, A2, ,Am) và tập
con các thuộc tính X={Aj1, Aj2, …, Ajn}
với j1, j2, , jn là các số nguyên phân biệt
nằm trong khoảng từ 1 đến m
Phép chiếu r trên tập thuộc tính X cho kết
quả là 1 quan hệ
Π
X
(r) = {t | ∃ u∈ r sao cho t = u[X]}
Nếu quan hệ r có bậc là n và có k bộ thì
Π
X
(r) có bao nhiêu bậc và bộ?
Bậc là |X| và luôn có k bộ
15
Project Operation – Example
Project Operation – Example
Relation r:
A B C
α
α
β
β
10
20
30
40
1
1
1
2
A C
α
α
β
β
1
1
1
2
A C
α
β
β
1
1
2
∏
A,C
(r)
Projection
Projection
17
Π
P_DESCRIPT,PRICE
(PROJECT)
Π
PRICE
(PROJECT)
Π
P_CODE,PRICE
(PROJECT)
Phép tích Descartes
Phép tích Descartes
Cho quan hệ r trên lược đồ R(A1,
A2, ,Am) và s trên lược đồ S(B1,B2,…,Bn)
Phép tích Descartes của r và s là 1 quan
hệ trên lược đồ T(A1, A2, , Am, B1, B2,
….,Bn)
r x s = {(t1,t2, ,tm,tm+1,…Tm+n) |(t1,
t2, , tm) ∈ r và (tm+1, …, tm+n) ∈ s }
Nếu quan hệ r có bậc là m, và k bộ
Và quan hệ s có bậc là n và l bộ thì r x s có
bao nhiêu bậc và bộ?
Bậc là m + n và có k x l bộ
18
Cartesian-Product Operation – Example
Cartesian-Product Operation – Example
Relations r, s:
r x s:
A B
α
β
1
2
A B
α
α
α
α
β
β
β
β
1
1
1
1
2
2
2
2
C D
α
β
β
γ
α
β
β
γ
10
10
20
10
10
10
20
10
E
a
a
b
b
a
a
b
b
C D
α
β
β
γ
10
10
20
10
E
a
a
b
b
r
s
Ví dụ
Ví dụ
20
PRODUCT x STORE
Phép tích Descartes
Phép tích Descartes
Nếu các quan hệ có tên trùng nhau ?
Π
Id,Name
(STUDENT)x Π
Id,DeptId
(PROFESSOR)
Hướng giải quyết:
◦
Đặt tên quan hệ trước thuộc tính bị trùng tên
STUDENT.
STUDENT.
Id
Id
Name
Name
PROFESSOR.
PROFESSOR.
Id
Id
DeptId
DeptId
21
Phép tích Descartes
Phép tích Descartes
Hướng giải quyết:
◦
Đặt tên quan hệ trước thuộc tính bị trùng tên
◦
Dùng toán tử Renaming
expression[A1,…An]
Expresssion: biểu thức đại số
A1 An: tên thay thế
Ví dụ:
Π
Id,Name
(STUDENT)x Π
Id,DeptId
(PROFESSOR)
[StudId,StudName,ProfId, ProfDept]
22
Phép hợp
Phép hợp
Phép hợp của 2 quan hệ r và s
r ∪ s = {t | t ∈ r hay t ∈ s}
Phép hiệu của 2 quan hệ r và s
r - s = {t | t ∈ r và t ∉ s}
Phép giao của 2 quan hệ r và s
r ∩ s = {t | t ∈ r và t ∈ s}
Điều kiện: các quan hệ r và s phải có tính
khả hợp ( union-compatible)
23
Union
Union
24
Intersect
Intersect
25