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à n
Trang 1Chương 5
Mô hình dữ liệu quan hệ
1
Trang 3Ngô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
Trang 4Đại số quan hệ
(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
Trang 5Đạ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
Trang 6Đạ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
Trang 7SQL query
Relational algebra Expression
Query Execution Plan
Executable Code
Parser
Query Optimizer Query Optimizer
Code generator
Trang 105 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
Trang 11Phé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
Trang 12Ví dụ
12
Trang 13Select Operation – Example
7 7 3 10
7 10
Trang 1414
PRICE<$2.0(Product )
PCODE =311452(Product)
Trang 15Phé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
Trang 16Project Operation – Example
1 1 1 2
A,C (r)
Trang 18Phé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
Trang 19Cartesian-Product Operation – Example
E a a b b a a b b
E
a a b b r
s
Trang 20Ví dụ
20
PRODUCT x STORE
Trang 21Phé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
21
Trang 22Phé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
Trang 2424
Trang 2525
Trang 26Biểu thức phức
E a a b b a a b b
10 10 20
a a b
A=C(r x s)
Trang 27Phép kết
-join
Cho quan hệ r trên R, quan hệ s trên S
Gọi T = R S, các thuộc tính của R khác với các thuộc tính của S, là 1 phép so
sánh A R và B S là 2 thuộc tính có
thể so sánh với nhau bởi phép
Phép kết của r và s trên 2 thuộc tính A
và B, cho kết quả là 1 quan hệ q trên lược
đồ quan hệ T bao gồm các bộ t
Q(T) = {t | tr r và ts s với t[R] = tr
và t[S] = ts và t[A] t[B] }
27
Trang 29Ví dụ
29
Trang 30Ví dụ
30
Trang 31TRANSCRIPT(StudId,CrsCode,Semester, Year, Grade)
Hãy liệt kê tên sinh viên và giáo sư mà ID của sinh viên nhỏ hơn Id của giáo sư
Id,Name(STUDENT) Id<Id Id,Name(PROFESSOR)
[stuid, sudname, profid, profname]
31
Trang 32Ví dụ
Hãy liệt kê tên các giáo sư dạy môn học
mùa thu 2007 (semester =‘F2007’)
Name(PROFESSOR Id=ProfId
Semester=‘F2007’(TEACHING))
32
Trang 34Phép kết bằng của r và s trên các thuộc
tính A1, A2,…, Ak và B1, B2,… Bk cho kêt quả là 1 quan hệ trên T bao gồm các bộ:
Q(T) = {t | tr r và ts s với t[R] = tr
và t[S] = ts và t[Ai] = t[Bi],
i =1, , k }
34
Trang 36Phép kết tự nhiên
(Natural join)
Phép kết tự nhiên của 2 quan hệ r và s
cho kết quả là 1 quan hệ q trên lược đồ
quan hệ T với T = R S bao gồm các bộ t như sau:
r s = {t| tr r và ts s với t[R] = tr và t[S] = ts }
R và S có thể có thuộc tính trùng nhau
Quan hệ kết quả q không lặp lại các thuộc tính được kết với nhau
36
Trang 37Natural Join Operation – Example
1 2 4 1 2
a a b a b
B
1 3 1 2 3
1 3 1 2 3
D
a a a b b
a a a b b
Trang 38Ví dụ: liệt kê danh sách Id của các sinh
viên đã từng học 1 môn học cùng với Id
của giáo sư
id(TRANSCRIPT TEACHING)
38
Trang 39Natural-Join Operation - Example
Cho R = (A, B, C, D)
S = (E, B, D)
◦ Lược đồ kết quả = (A, B, C, D, E)
◦ r s được xác định như sau:
r.A, r.B, r.C, r.D, s.E (r.B = s.B r.D = s.D (r x s))
Trang 41So sánh phép kết tự nhiên và kết
bằng
Thuộc tính kết quả của kết tự nhiên:
StudId, CrsCode, Semester, Grade, ProfId
Thuộc tính kết quả của kết bằng:
StudId, TRANSCRIPT.CrsCode, TEACHING CrsCode, TRANSCRIPT.Semester,
TEACHING.Semester, Grade, ProfId
Không hoàn toàn giống nhau
41
Trang 42Nếu muốn tìm sinh viên đăng ký học 15
môn khác nhau thì sao???
42
Trang 44Phép kết ngoài
(Outer join)
Cho phép các bộ của 1 quan hệ xuất hiện trong kết quả của phép kết cho dù chúng kết được với các bộ của quan hệ khác hay không
Cho quan hệ r trên R, s trên S R S Gọi T = R S
44
Trang 47Outer Join – Example
Relation loan
Relation borrower
customer_name loan_number
Jones Smith Hayes
Jones Smith Hayes
L-170 L-230 L-155
L-170 L-230 L-155
3000 4000 1700
loan_number amount
L-170 L-230 L-260
branch_name
Downtown Redwood Perryridge
Trang 48Outer Join – Example
branch_name
Downtown Redwood
Jones Smith
null
Jones Smith
null
loan_number amount
L-170 L-230 L-260
L-170 L-230 L-260
3000 4000 1700
3000 4000 1700
customer_name
branch_name
Downtown Redwood Perryridge
Downtown Redwood Perryridge
loan borrower
Trang 49Outer Join – Example
null
3000 4000
null
customer_name
Jones Smith Hayes
Jones Smith Hayes
branch_name
Downtown Redwood
null
Downtown Redwood
null
loan_number amount
L-170 L-230 L-260 L-155
3000 4000 1700
null
customer_name
Jones Smith
null
Hayes
branch_name
Downtown Redwood Perryridge
Trang 50Phép nửa kết
( -semijoin)
Phép nửa kết của r và s trên 2 thuộc tính
A R và B S cho kết quả là 1 quan hệ
bao gồm các bộ của r mà chúng kết với s theo điều kiện A B
Trang 52Phép chia
(Division)
Xét các query sau:
khoa CS (computer Science) đều dạy?
học được dạy bởi các giáo sư của khoa CS?
Cần tìm ra các bộ của 1 quan hệ khớp
(match) với tất cả các bộ của 1 quan hệ
khác
52
Trang 53Phép chia
(Division)
Cho quan hệ r trên R(A1,…, An,B1, , Bm)
và s trên S(B1,…,Bm)
Phép chia quan hệ r cho s, ký hiệu r/s với
s cho kết quả là 1 quan hệ q trên T
(A1, …, An) bao gồm các bộ <a> sao cho đối với mỗi bộ <b> của s , thì bộ <a,b>
thuộc r
<a> r/s if and only if {<a>} x s r
53
Trang 54_a
_b _c
54
Not in r/s
In r/s
Trang 55Division Operation – Example
s
Trang 56Ví dụ phép chia
PROFCS Id
101555
CrsCodeCS305
783 009 121
555 101
900
101
M123 M123 EE101
CS305
CS315 MA23
CS305
56
Kết quả của PROFCOURSES/PROFCS
Môn học mà tất cả giáo sư CS đều dạy