Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chương 3 Mô hình dữ lịêu quan hệ

Similar presentations


Presentation on theme: "Chương 3 Mô hình dữ lịêu quan hệ"— Presentation transcript:

1 Chương 3 Mô hình dữ lịêu quan hệ

2 Nội dung Đại số quan hệ Các quy tắc của 1 DBMS 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

3 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

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)

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ệ. Nhưng 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. Mối liên hệ giữa SQL và đại số quan hệ??

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.

7 Relational algebra Expression
SQL query Parser Relational algebra Expression Query Optimizer Query Execution Plan Code generator Executable Code

8 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)

9 3 phép toán suy dẫn (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

10 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 ()

11 F(r) = {t|t r và F(t) = true}
Phép chọn (selection) 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ó bậc là n và có tối đa là k bộ

12 Ví dụ

13 Selection PRICE<$2.0(Product) PCODE =311452(Product)

14 Phép chiếu (Projection)
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]}

15 Projection PRICE(PROJECT) P_DESCRIPT,PRICE (PROJECT)
P_CODE,PRICE (PROJECT)

16 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 }

17 Ví dụ PRODUCT x STORE

18 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.Id Name PROFESSOR.Id DeptId

19 Phép tích Descartes Hướng giải quyết: Ví dụ:
Đặ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]

20 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)

21 Union

22 Intersect(giao)

23 Phé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] }

24 Phép kết  -join Phép kết của 2 quan hệ r và s
r A  B s =  A  B (r x s) Phép kết có tính giao hoán

25 Ví dụ

26 Ví dụ

27 Ví dụ Cho các quan hệ sau:
STUDENT(Id,Name,BirthDate) PROFESSOR(Id,Name,Qualification) TEACHING(ProfID,CrsCode,Semester) COURSE(CrsCode,Name) TRANSCRIPT(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)

28 Ví 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))

29 Ví dụ Tìm tên môn và tên giáo sư của các môn học được dạy trong mùa thu 2007 CrsName,Name(PROFESSOR Id=ProfId Semester=‘F2007’ (TEACHING)) CrsCode=CrsCodeCOURSE)

30 Phép kết bằng (Equijoin)
Cho quan hệ r trên R, s trên S với Ai  R và Bi  S và dom(Ai) = dom(Bi) , i = 1… k. Gọi T = R  S 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], i =1,.., k }

31 Phép kết bằng (Equijoin)
Nếu r có bậc m và k1 bộ, s có bậc n và k2 bộ thì r A1=B1 ^A2 = B2 ^.^Ak=Bk s Có bậc là m+n và có tối đa k1 x k2 bộ Nếu R và S có thuộc tính A trùng nhau, thì nên thay thành R.A và S.A để cho R S =  Trong phép kết bằng, nếu k=0 thì phép kết bằng trở thành phép tích Descartes

32 Phé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.

33 Phép kết tự nhiên (Natural join)
r s = T(F(r x s)) với F là biểu thức R.A1 = S.A1, R.A2 = S.A2,…, R.Ak =S.Ak và R S ={A1,A2,..,Ak} Nếu R S = thì phép kết tự nhiên sẽ là tích Descartes Ví 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ư StuId,ProfId(TRANSCRIPT TEACHING)

34 So sánh phép kết tự nhiên và kết bằng
TRANSCRIPT TEACHING TRANSCRIPT CondTEACHING Với Cond là: TRANSCRIPT.CrsCode = TEACHING. CrsCode AND TRANSCRIPT.Semester = TEACHING.Semester Điều kiện của kết bằng thì giống với điều kiện ngầm định của kết tự nhiên Kết quả có giống nhau không?

35 So 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

36 Ví dụ phép kết Tìm tất cả sinh viên đã đăng ký ít nhất là 2 môn học khác nhau StudId(CrsCodeCrsCode2 (TRANSCRIPT TRANSCRIPT[StudId, CrsCode2, Semester2, Grade2] )) Nếu muốn tìm sinh viên đăng ký học 15 môn khác nhau thì sao???

37 Kết tự nhiên và phép giao
Phép giao là trường hợp đặc biệt của phép kết tự nhiên nếu R và S khả hợp (union-compatible) R S = R S

38 Phé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.

39 Phép kết ngoài (Outer join)
Phép kết ngoài của r và s cho kết quả là 1 quan hệ q trên T bao gồm: Các bộ của phép kết tự nhiên r và s Các bộ được tạo từ các bộ của r không kết các bộ của s Các bộ được tạo từ các bộ của s không kết các bộ của r Các thuộc tính bị thiếu của các bộ được tạo thêm sẽ lấy giá trị null

40 Phép kết ngoài Các loại kết ngoài Kết ngoài trái Kết ngoài phải

41 Phé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 R A  B s = { t | t  r và  u  s với t[A]  t[B]} R A B s = R(r A  B s) Phép nửa kết không có tính giao hoán

42 Phé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ệ khác

43 Phé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

44 A B ---a---- ---b---- ---c---- B ___a____ ___b____ ___c____ In r/s
Quan hệ r B ___a____ ___b____ ___c____ 1 2 3 4 In r/s Quan hệ s Not in r/s

45 Ví dụ phép chia PROFCS Id 101 555 CrsCode CS305 Môn học mà tất cả
PROFCOURSES Id CrsCode 783 009 121 555 101 900 M123 EE101 CS305 CS315 MA23 Kết quả của PROFCOURSES/PROFCS Môn học mà tất cả giáo sư CS đều dạy

46 Ví dụ phép chia (Id,Name(STUDENT))[StudId, Name]
(StudId,CrsCode(TRANSCRIPT)/ ((ProfId,CrsCode(TEACHING))[Id,CrsCode]/ Id(DeptIdr=‘CS’(PROFESSOR))) 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

47 Hệ 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? Quy tắc 0 – Qui tắc cơ bản (foundational rule) 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ệ Quy tắc 12 – Qui tắc bất biến (Non-subversion 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 Ngôn ngữ mức thấp cho phép xử lý một lần 1 mẫu tin Ngôn ngữ mức cap cho phép xử lý một lần nhiều mẫu tin

48 Hệ 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

49 Hệ 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

50 Hệ quản trị cơ sở dữ liệu (Database Management System – DBMS)
Các quy tắc thao tác dữ liệu: 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

51 Hệ quản trị cơ sở dữ liệu (Database Management System – DBMS)
Các quy tắc độc lập dữ liệu Quy tắc 8 – Độc lập dữ liệu vật lý Quy tắc 9 – Độc lập dữ liệu luận lý Quy tắc 11 – Độc lập phân tán


Download ppt "Chương 3 Mô hình dữ lịêu quan hệ"

Similar presentations


Ads by Google