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
Trang 1Chương 3
Mô hình dữ lịêu quan hệ
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
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)
Trang 5Đại số quan hệ và SQL
các toán tử của đại số quan hệ Kết quả của query cũng là 1 quan hệ
Trang 6Đại số quan hệ và SQL
query của họ
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
Trang 7SQL query
Relational algebra Expression
Query Execution Plan
Executable Code
Parser
Query Optimizer
Code generator
Trang 93 phép toán suy dẫn (Derived operator)
của các phép toán cơ bản
• Intersection
• Division
Trang 105 phép toán cơ bản
quan hệ r trên lược đồ quan hệ R và điều kiện F
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 ( ∨ )
Trang 11Phép chọn (selection)
hệ bao gồm các bộ của r thỏa mãn
Trang 12Ví dụ
Trang 13Selection
Trang 14Phép chiếu (Projection)
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
cho kết quả là 1 quan hệ
Trang 16Phép tích Descartes
A2, ,Am) và s trên lược đồ S(B1,B2,
Trang 17Ví dụ
PRODUCT x STORE
Trang 18Phép tích Descartes
Nếu các quan hệ có tên trùng nhau ?
Hướng giải quyết:
• Đặt tên quan hệ trước thuộc tính bị trùng tên
STUDENT Id Name PROFESSOR Id DeptId
Trang 19Phép tích Descartes
• Đặt tên quan hệ trước thuộc tính bị trùng
Trang 21Union
Trang 22Intersect(giao)
Trang 23 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] }
Trang 25Ví dụ
Trang 26Ví dụ
Trang 28Ví dụ
học mùa thu 2007 (semester
=‘F2007’)
ΠName(PROFESSOR Id=ProfId σSemester=‘F2007’
(TEACHING))
Trang 29Ví dụ
môn học được dạy trong mùa thu
2007
(TEACHING))
Trang 30 Phé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],
Trang 32Phép kết tự nhiên
(Natural join)
s cho kết quả là 1 quan hệ q trên
gồm các bộ t như sau:
Trang 33Phép kết tự nhiên
(Natural join)
thức R.A1 = S.A1, R.A2 = S.A2,…,
sẽ là tích Descartes
sinh viên đã từng học 1 môn học
cùng với Id của giáo sư
Trang 34= TEACHING.Semester
điều kiện ngầm định của kết tự nhiên
Trang 35So sánh phép kết tự nhiên
và kết bằng
StudId, CrsCode, Semester, Grade,
TEACHING.Semester, Grade, ProfId
Không hoàn toàn giống nhau
Trang 36Nếu muốn tìm sinh viên đăng ký học
Trang 38Phép kết ngoài (Outer join)
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
Trang 39Phép kết ngoài (Outer join)
là 1 quan hệ q trên T bao gồm:
Trang 41quan hệ bao gồm các bộ của r mà
Trang 42Phép chia (Division)
Phép kết tuy là phép suy diễn nhưng đặc biệt thông dụng được dùng để trả lời query
Phép chia cũng là phép toán đặc biệt do
rất khó hiểu và sử dụng đúng
Xét các query sau:
• Tên môn học nào mà tất cả các giáo sư của
khoa CS (computer Science) đều dạy?
• Tìm tất cả các sinh viên đã học tất cả các môn
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ệ
Trang 43Phép chia (Division)
An,B1, , Bm) và s trên S(B1,…,Bm)
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
Trang 44A B
-b -a -b -c -a -b -c
-a B _a _b _c
Trang 45Ví dụ phép chia
101 555
CrsCode CS305
783 009 121 555 101 900 101
M123 M123 EE101 CS305 CS315 MA23 CS305
Kết quả của PROFCOURSES/PROFCS
Môn học mà tất cả giáo sư CS đều dạy
Trang 47Hệ quản trị cơ sở dữ liệu(Database Management System – DBMS)
Các quy tắc cơ bản: để đánh giá 1 hệ thống
có phải là 1 DBMS quan hệ hay không?
Một hệ thống được xem là 1 DBMS quan hệ nếu hệ thống này có thể quản lý toàn bộ DB thông qua các khả năng quan hệ
rule)
Nếu 1 hệ thống quan hệ có ngôn ngữ mức thấp, thì các ràng buộc toàn vẹn trong ngôn ngữ quan hệ mức cao phải được kiểm tra ở mức thấp
tin
Trang 48Hệ quản trị cơ sở dữ liệu(Database Management System – DBMS)
Các quy tắc cấu trúc (structural rules)
Quy tắc 1 – Biểu diễn thông tin
( information representation)
Tất cả thông tin trong CSDL quan hệ phải
được biểu diễn rõ ràng ở mức luận lý và
theo một cách duy nhất thông qua các giá trị trong các bảng
Quy tắc 6 – Cập nhật view
Tất cả các view có thể được cập nhật về mặt
lý thuyết thì chúng cũng có thể được cập nhật bởi hệ thống
Trang 49Hệ quản trị cơ sở dữ liệu(Database Management System – DBMS)
Các quy tắc toàn vẹn (integrity rules)
• Quy tắc 3 – Xử lý ngữ nghĩa của các giá trị null
Các giá trị null được dùng để biểu diễn thông tin
bị thiếu và thông tin không có theo cùng một cách thống nhất, độc lập với kiểu dữ liệu
• Quy tắc 10 – Độc lập toàn vẹn
Các ràng buộc toàn vẹn trong 1 CSDL riêng biệt phải được định nghĩa bởi 1 ngôn ngữ con dữ liệu quan hệ và được lưu trữ trong danh mục
mà không phải trong các chương trình ứng
dụng
Trang 50Hệ quản trị cơ sở dữ liệu(Database Management System – DBMS)
• Quy tắc 2 – Truy xuất được bảo đảm
• Quy tắc 4 – Danh mục trực tuyến động
dựa trên mô hình quan hệ
• Quy tắc 5 – Ngôn ngữ con dữ liệu thông
minh
• Quy tắc 7 – Thêm vào, cập nhật, xóa bỏ
ở mức cao