41
1 Chương 6 Chương 6 Phép tóan quan hệ Phép tóan quan hệ

Chương 6 Phép tóan quan hệ

  • Upload
    dwight

  • View
    38

  • Download
    0

Embed Size (px)

DESCRIPTION

Chương 6 Phép tóan quan hệ. Nội dung. Phép tính quan hệ Phép tính quan hệ bộ (TRC) Phép tính quan hệ miền (DRC) Mối quan hệ giữa đại số quan hệ và phép tính quan hệ. Mở đầu. Đại số quan hệ được dùng để giải thích các truy vấn SQL được đánh giá như thế nào - PowerPoint PPT Presentation

Citation preview

Page 1: Chương 6 Phép tóan quan hệ

11

Chương 6Chương 6Phép tóan quan hệPhép tóan quan hệ

Page 2: Chương 6 Phép tóan quan hệ

22

Nội dungNội dung

Phép tính quan hệPhép tính quan hệ Phép tính quan hệ bộ (TRC)Phép tính quan hệ bộ (TRC) Phép tính quan hệ miền (DRC)Phép tính quan hệ miền (DRC) Mối quan hệ giữa đại số quan hệ và Mối quan hệ giữa đại số quan hệ và

phép tính quan hệphép tính quan hệ

Page 3: Chương 6 Phép tóan quan hệ

33

Mở đầuMở đầu Đại số quan hệ được dùng để giải thích các Đại số quan hệ được dùng để giải thích các

truy vấn SQL được đánh giá như thế nàotruy vấn SQL được đánh giá như thế nào DBMS thường dùng đại số quan hệ như DBMS thường dùng đại số quan hệ như

ngôn ngữ trung gian bậc cao dùng để dịch ngôn ngữ trung gian bậc cao dùng để dịch query trước khi tối ưu hóa thực thiquery trước khi tối ưu hóa thực thi

Xét về mặt khái niệm, thì SQL lại dựa vào Xét về mặt khái niệm, thì SQL lại dựa vào 1 ngôn ngữ truy vấn chính quy hoàn toàn 1 ngôn ngữ truy vấn chính quy hoàn toàn khác (formal query language)khác (formal query language)

Relational calculus (phép tính quan hệ)Relational calculus (phép tính quan hệ)

Page 4: Chương 6 Phép tóan quan hệ

44

So sánh đại số quan hệ và phép So sánh đại số quan hệ và phép tính quan hệtính quan hệ

Đại số quan hệ (relational algebra) có Đại số quan hệ (relational algebra) có tính thủ tục, gần với ngôn ngữ lập tính thủ tục, gần với ngôn ngữ lập trìnhtrình

Phép tính quan hệ (relational Phép tính quan hệ (relational calculus) không có tính thủ tục và calculus) không có tính thủ tục và gần với ngôn ngữ tự nhiên hơngần với ngôn ngữ tự nhiên hơn

Ví dụ: xét query sau “ liệt kê các nhà Ví dụ: xét query sau “ liệt kê các nhà cung cấp chuyên cung cấp phụ tùng cung cấp chuyên cung cấp phụ tùng số 2”số 2”

Page 5: Chương 6 Phép tóan quan hệ

55

So sánh đại số quan hệ và phép So sánh đại số quan hệ và phép tính quan hệtính quan hệ

Nếu theo đại số quan hệ: theo các Nếu theo đại số quan hệ: theo các bước sau:bước sau:

1.1. Tạo mối kết nối tự nhiên của 2 quan hệ Tạo mối kết nối tự nhiên của 2 quan hệ SUPPLIER và SHIPMENT trên thuộc tính SUPPLIER và SHIPMENT trên thuộc tính S#; S#;

2.2. Thu hẹp kết quả của kết nối này chỉ Thu hẹp kết quả của kết nối này chỉ còn các bộ liên quan đến phụ tùng P2; còn các bộ liên quan đến phụ tùng P2;

3.3. Dùng phép chiếu (project) để kết quả Dùng phép chiếu (project) để kết quả chỉ còn lại thuộc tính S#. chỉ còn lại thuộc tính S#.

Page 6: Chương 6 Phép tóan quan hệ

66

So sánh đại số quan hệ và phép So sánh đại số quan hệ và phép tính quan hệtính quan hệ

Nếu theo phép tính quan hệ thì: Nếu theo phép tính quan hệ thì: • Tìm mã nhà cung cấp S# sao cho tồn tại Tìm mã nhà cung cấp S# sao cho tồn tại

1 vận chuyển hàng SP nào đó có cùng 1 vận chuyển hàng SP nào đó có cùng mã S# và có mã phụ tùng P# là P2. mã S# và có mã phụ tùng P# là P2.

The calculus formation is descriptive The calculus formation is descriptive while the algebraic one is while the algebraic one is prescriptiveprescriptive

Page 7: Chương 6 Phép tóan quan hệ

77

Phép tính quan hệPhép tính quan hệ

Là 1 phân nhánh của logic vị từ Là 1 phân nhánh của logic vị từ (predicate logic)(predicate logic)

Được dùng trong CSDL dưới 2 dạng:Được dùng trong CSDL dưới 2 dạng:• Phép tính quan hệ bộ (Tuple relational Phép tính quan hệ bộ (Tuple relational

calculus –TRC) calculus –TRC) • Phép tính quan hệ miền (Domain Phép tính quan hệ miền (Domain

relational calculus – DRC)relational calculus – DRC)

Page 8: Chương 6 Phép tóan quan hệ

88

Phép tính quan hệ bộ - TRCPhép tính quan hệ bộ - TRC Các query trong TRC đều có dạng:Các query trong TRC đều có dạng:

{T| Condition}{T| Condition}

Target chứa biến bộ (Tuple variable) TTarget chứa biến bộ (Tuple variable) T Ví dụ: tìm tất cả thông tin các môn học Ví dụ: tìm tất cả thông tin các môn học

được dạy trong mùa thu 2007được dạy trong mùa thu 2007{ T | TEACHING(T) AND T.Semester = ‘F2007’}{ T | TEACHING(T) AND T.Semester = ‘F2007’}

SELECT * FROM TEACHINGSELECT * FROM TEACHING

WHERE T.Semester = ‘F2007’WHERE T.Semester = ‘F2007’

SQL là 1 biến thể về mặt cú pháp của TRCSQL là 1 biến thể về mặt cú pháp của TRC

Target

Page 9: Chương 6 Phép tóan quan hệ

99

Cú pháp của conditionCú pháp của condition

Có thể 1 trong các dạng sau:Có thể 1 trong các dạng sau: P(T): P là tên quan hệ và T là biến bộ. P(T) P(T): P là tên quan hệ và T là biến bộ. P(T)

được dùng để kiểm tra bộ T có thuộc về P được dùng để kiểm tra bộ T có thuộc về P hay khônghay không

T(A) oper S(B) với oper là toán tử so sánh. T(A) oper S(B) với oper là toán tử so sánh. T và S là biến bộ, A và B là các thuộc tínhT và S là biến bộ, A và B là các thuộc tính

T.A oper const. Tương tự như trên nhưng T T.A oper const. Tương tự như trên nhưng T được so sánh với hằng sốđược so sánh với hằng số

Các điều kiện trên được gọi là điều kiện Các điều kiện trên được gọi là điều kiện nguyên tố ( atomic condition)nguyên tố ( atomic condition)

Page 10: Chương 6 Phép tóan quan hệ

1010

Điều kiện phứcĐiều kiện phức(Complex condition)(Complex condition)

Các điều kiện phức được xây dựng Các điều kiện phức được xây dựng một cách đệ quy như sau:một cách đệ quy như sau:• C là 1 điều kiện của query nếu nó là 1 C là 1 điều kiện của query nếu nó là 1

điều kiện nguyên tốđiều kiện nguyên tố• Nếu C1 và C2 là điều kiện của query thì Nếu C1 và C2 là điều kiện của query thì

C1 AND C2, C1 OR C2 và NOT C1 cũng là C1 AND C2, C1 OR C2 và NOT C1 cũng là điều kiện của queryđiều kiện của query

• Nếu C là điều kiện của query, R là tên Nếu C là điều kiện của query, R là tên quan hệ và T là biến bộ thì quan hệ và T là biến bộ thì T T R (C) R (C) và và T T R (C) cũng là điều kiện query R (C) cũng là điều kiện query

Page 11: Chương 6 Phép tóan quan hệ

1111

Lượng từLượng từ Lượng từ tồn tại (Lượng từ tồn tại (existential quantifier): existential quantifier):

T T R (C) R (C) tồn tại 1 bộ t tồn tại 1 bộ tr sao cho r sao cho C trở nên đúng sau khi t được thay C trở nên đúng sau khi t được thay thế bởi Tthế bởi T

Lượng từ phổ quát Lượng từ phổ quát (universal quantifier): (universal quantifier):

T T R (C) R (C) với mọi bộ t với mọi bộ t r, C trở r, C trở nên đúng nếu t được thay thế bởi nên đúng nếu t được thay thế bởi biến T.biến T.

Page 12: Chương 6 Phép tóan quan hệ

1212

Biến (variable)Biến (variable) Nếu biến bộ đứng sau 1 lượng từ Nếu biến bộ đứng sau 1 lượng từ , ,

được gọi là biến buộc ( bound variable). được gọi là biến buộc ( bound variable). Ngược lại là biến tự do (free variable)Ngược lại là biến tự do (free variable)

XX là biến tự do trong phát biểu “ là biến tự do trong phát biểu “XX is in is in CS305” (hay có thể biểu diễn thành CS305” (hay có thể biểu diễn thành C(X) )C(X) )• Phát biểu trên không đúng cũng không sai cho Phát biểu trên không đúng cũng không sai cho

đến khi gán 1 giá trị cho Xđến khi gán 1 giá trị cho X XX là biến buộc (được định lượng) trong là biến buộc (được định lượng) trong

phát biểu “there exists a student phát biểu “there exists a student XX such such that that X X is in CS305” (biểu diễn thành is in CS305” (biểu diễn thành X X S S (C(X)), với S là tập hợp tất cả sinh viên (C(X)), với S là tập hợp tất cả sinh viên))• Phát biểu trên có thể được gán giá trị Phát biểu trên có thể được gán giá trị

TRUE/FALSE tại bất kỳ 1 thời điểm nào đó của TRUE/FALSE tại bất kỳ 1 thời điểm nào đó của databasedatabase

Page 13: Chương 6 Phép tóan quan hệ

1313

So sánh biến buộc và biến tự So sánh biến buộc và biến tự do trong TRCdo trong TRC

Biến buộc (Bound variable) được dùng để Biến buộc (Bound variable) được dùng để đánh giá các bộ trong 1 quan hệ (được dùng đánh giá các bộ trong 1 quan hệ (được dùng trong condition) trong condition)

Biến tự do (Free variable) được dùng cho các Biến tự do (Free variable) được dùng cho các bộ được trả về bởi truy vấn (được dùng bộ được trả về bởi truy vấn (được dùng trong targettrong target

• Khi 1 giá trị được thay thế cho biến S thì Khi 1 giá trị được thay thế cho biến S thì điều kiện sẽ trở nên true hoặc falseđiều kiện sẽ trở nên true hoặc false

• Chỉ có biến S là biến tự do trong điều kiệnChỉ có biến S là biến tự do trong điều kiện

{S | Student(S) AND ( T Transcript (S.Id = T.StudId AND T.CrsCode = ‘CS305’))}

Page 14: Chương 6 Phép tóan quan hệ

1414

Ví dụ 1Ví dụ 1

{E| COURSE(E) AND {E| COURSE(E) AND SS STUDENT STUDENT ((T T TRANSCRIPT(T.StudId = S.Id TRANSCRIPT(T.StudId = S.Id AND T.CrsCode = E.CrsCode))}AND T.CrsCode = E.CrsCode))}

??????

Liệt kê tất cả các môn học mà mọi sinh Liệt kê tất cả các môn học mà mọi sinh viên đều họcviên đều học

Page 15: Chương 6 Phép tóan quan hệ

1515

Ví dụ 2Ví dụ 2 Liệt kê tên của tất cả giáo sư đã dạy Liệt kê tên của tất cả giáo sư đã dạy

môn MGT123??môn MGT123??{P.Name| PROFESSOR(P) AND {P.Name| PROFESSOR(P) AND T T

TEACHING (P.Id= T.ProfId AND TEACHING (P.Id= T.ProfId AND T.CrsCode = ‘MGT123’)}T.CrsCode = ‘MGT123’)}

Câu lệnh SQL tương ứngCâu lệnh SQL tương ứngSELECT P.NameSELECT P.NameFROM PROFESSOR P, TEACHING TFROM PROFESSOR P, TEACHING TWHERE P.Id= T.ProfId AND T.CrsCode WHERE P.Id= T.ProfId AND T.CrsCode

= ‘MGT123’= ‘MGT123’

Page 16: Chương 6 Phép tóan quan hệ

1616

Ví dụ 3Ví dụ 3

Tìm mã số tất cả các sinh viên đã Tìm mã số tất cả các sinh viên đã học cùng 1 môn 2 lần ở những học kỳ học cùng 1 môn 2 lần ở những học kỳ khác nhaukhác nhau

{T.StudId | TRANSCRIPT(T) AND {T.StudId | TRANSCRIPT(T) AND T1 T1 TRANSCRIPT( T.StudId = T1.StudId TRANSCRIPT( T.StudId = T1.StudId AND T.CrsCode = T1.CrsCode AND AND T.CrsCode = T1.CrsCode AND T.Semester T.Semester T1.Semester)} T1.Semester)}

Page 17: Chương 6 Phép tóan quan hệ

1717

Một số lưu ý khi dùng lượng từMột số lưu ý khi dùng lượng từ

Các lượng từ tồn tại (Các lượng từ tồn tại () kề nhau có thể ) kề nhau có thể hoán vị cho nhauhoán vị cho nhau

Ví dụ:Ví dụ:R R TRANSCRIPT ( TRANSCRIPT (T T TEACHING)(..)) TEACHING)(..))

TT TEACHING ( TEACHING (RR TRANSCRIPT)(..)) TRANSCRIPT)(..))

Page 18: Chương 6 Phép tóan quan hệ

1818

Một số lưu ý khi dùng lượng từMột số lưu ý khi dùng lượng từ

Các lượng từ phổ quát (Các lượng từ phổ quát () và tồn tại () và tồn tại ()) không hoán vị cho nhau đượckhông hoán vị cho nhau được

Ví dụ:Ví dụ:T T TEACHING( TEACHING(RR TRANSCRIPT ..) TRANSCRIPT ..)““For every TEACHING tuple there is a For every TEACHING tuple there is a

TRANSCRIPT tuple such that statement St is TRANSCRIPT tuple such that statement St is true”true”

Khác vớiKhác vớiRR TRANSCRIPT ( TRANSCRIPT (T T TEACHING … C) TEACHING … C)““There is a TRANSCRIPT tuple such that for all There is a TRANSCRIPT tuple such that for all

TEACHING tuples St is true”TEACHING tuples St is true”

Page 19: Chương 6 Phép tóan quan hệ

1919

Một số lưu ý khi dùng lượng từMột số lưu ý khi dùng lượng từ

Các lượng từ tương tự như khối Các lượng từ tương tự như khối begin/end, dùng để xác định phạm vi begin/end, dùng để xác định phạm vi của biếncủa biến

Ví dụ: Ví dụ: T T R1( U(T) AND R1( U(T) AND TT R2(V(T))) R2(V(T)))

Biến T xuất hiện 2 lần dưới những Biến T xuất hiện 2 lần dưới những lượng từ khác nhau, nên được xem lượng từ khác nhau, nên được xem như 2 biến trùng tên độc lập nhau và như 2 biến trùng tên độc lập nhau và tương đương với biểu thức sau:tương đương với biểu thức sau:

T T R1( U(T) AND R1( U(T) AND SS R2(V(S))) R2(V(S)))

Page 20: Chương 6 Phép tóan quan hệ

2020

Dùng view trong TRCDùng view trong TRC Liệt kê tất cả sinh viên đã học những môn mà được Liệt kê tất cả sinh viên đã học những môn mà được

dạy bởi tất cả các giáo sư CSdạy bởi tất cả các giáo sư CS Cách 1:Cách 1:{R.StudId| {R.StudId| T T TEACHING ( TEACHING (T1 T1 TEACHING TEACHING

(TRANSCRIPT(R) AND T.ProfId= T1.ProfID AND (TRANSCRIPT(R) AND T.ProfId= T1.ProfID AND T1.CrsCode = R.CrsCode AND T1.Semester = T1.CrsCode = R.CrsCode AND T1.Semester = R.Semester))}R.Semester))}

Cách 2 :Cách 2 :• Tạo 1 view như sau:Tạo 1 view như sau:CSPROF = {P.ProfId| PROFESSOR(P) AND P.DeptId = ‘CS’}CSPROF = {P.ProfId| PROFESSOR(P) AND P.DeptId = ‘CS’}• Tạo queryTạo query

{R.StudId | {R.StudId | PP CSPROF ( CSPROF (T1T1 TEACHING (TRANSCRIPT(R) TEACHING (TRANSCRIPT(R) AND P.ProfId = T1.ProfId AND T1.CrsCode = R.CrsCode AND AND P.ProfId = T1.ProfId AND T1.CrsCode = R.CrsCode AND T1.Semester = R.Semester))} T1.Semester = R.Semester))}

Page 21: Chương 6 Phép tóan quan hệ

2121

Truy vấn SQL và truy vấn TRCTruy vấn SQL và truy vấn TRC

Một số sách SQL đã dựa vào đại số quan Một số sách SQL đã dựa vào đại số quan hệ để xác định ngữ nghĩa khi phát ra các hệ để xác định ngữ nghĩa khi phát ra các truy vấn SQLtruy vấn SQL

Biểu thức đại số cũng không trực giác hơn Biểu thức đại số cũng không trực giác hơn truy vấn TRC và cũng không hỗ trợ nhiều truy vấn TRC và cũng không hỗ trợ nhiều với SQL cao cấp.với SQL cao cấp.• Việc dịch truy vấn SQL có subquery thành biểu Việc dịch truy vấn SQL có subquery thành biểu

thức đại số không dễ dàngthức đại số không dễ dàng• Đại số quan hệ không phải là phương tiện tốt Đại số quan hệ không phải là phương tiện tốt

để dịch truy vấn SQL thành English để kiểm tra để dịch truy vấn SQL thành English để kiểm tra xem nó có đúng yêu cầu mong đợi không.xem nó có đúng yêu cầu mong đợi không.

Page 22: Chương 6 Phép tóan quan hệ

2222

Truy vấn SQL và truy vấn TRCTruy vấn SQL và truy vấn TRC

Mặc dù mô tả bằng tiếng Anh không Mặc dù mô tả bằng tiếng Anh không chính quy bằng định nghĩa toán học chính quy bằng định nghĩa toán học nhưng nó giúp cho cả khách hàng và nhưng nó giúp cho cả khách hàng và người lập trình dễ hiểu nhau hơnngười lập trình dễ hiểu nhau hơn

SQL query liệu có thỏa mãn những SQL query liệu có thỏa mãn những định nghĩa bằng tiếng Anh?định nghĩa bằng tiếng Anh?

Page 23: Chương 6 Phép tóan quan hệ

2323

So sánh giữa SQL và TRCSo sánh giữa SQL và TRC

Có 1 sự tương đương gần giữa SQL và TRC.Có 1 sự tương đương gần giữa SQL và TRC. Với 1 SQL query, xây dựng 1 TRC query Với 1 SQL query, xây dựng 1 TRC query

tương đương, sau đó dịch TRC query này tương đương, sau đó dịch TRC query này thành tiếng Anhthành tiếng Anh

Chuyển bài toán kiểm chứng SQL query Chuyển bài toán kiểm chứng SQL query xuống thành bài toán dịch SQL thành TRC xuống thành bài toán dịch SQL thành TRC

Với các query phức tạp (có subquery) thì Với các query phức tạp (có subquery) thì việc dịch này sẽ như thế nào??việc dịch này sẽ như thế nào??

Page 24: Chương 6 Phép tóan quan hệ

2424

Dịch SQL thành TRCDịch SQL thành TRC

Xét 1 mẫu SQL phức như sau:Xét 1 mẫu SQL phức như sau:SELECT R1.A, R2.CSELECT R1.A, R2.CFROM REL1 R1, REL2 R2FROM REL1 R1, REL2 R2WHERE Condition1(R1, R2) AND WHERE Condition1(R1, R2) AND R1.B AND (SELECT R3.ER1.B AND (SELECT R3.E

FROM REL3 R3, REL4 R4FROM REL3 R3, REL4 R4WHERE Condition2(R2, R3, R4))WHERE Condition2(R2, R3, R4))

Biến R3, R4 là cục bộ của subquery và R1, Biến R3, R4 là cục bộ của subquery và R1, R2 là biến toàn cụcR2 là biến toàn cục

Page 25: Chương 6 Phép tóan quan hệ

2525

Dịch SQL thành TRCDịch SQL thành TRC

Subquery được tham số hóa bởi biến Subquery được tham số hóa bởi biến toàn cục R2toàn cục R2

Condition2 của subquery hiển nhiên Condition2 của subquery hiển nhiên không phải là dạng mà TRC hiểu không phải là dạng mà TRC hiểu đượcđược

Cách giải quyết: dùng view với tập Cách giải quyết: dùng view với tập thuộc tính của danh sách đích của thuộc tính của danh sách đích của subquery ( tức R3.E) cùng với biến subquery ( tức R3.E) cùng với biến R2R2

Page 26: Chương 6 Phép tóan quan hệ

2626

Dịch SQL thành TRCDịch SQL thành TRC View có tên Temp được định nghĩa View có tên Temp được định nghĩa

như sau:như sau:Temp = {R3.E,R2.C, R2.D | Temp = {R3.E,R2.C, R2.D | REL2(R2) AND REL3(R3) AND REL2(R2) AND REL3(R3) AND R4R4 REL4 (Condition2(R2,R3,R4)) } REL4 (Condition2(R2,R3,R4)) }

Biến R2, R3 là free nhưng biến R4 phải Biến R2, R3 là free nhưng biến R4 phải định lượng vì nó không xuất hiện trong định lượng vì nó không xuất hiện trong danh sách đích (target) của viewdanh sách đích (target) của view

Page 27: Chương 6 Phép tóan quan hệ

2727

Dịch SQL thành TRCDịch SQL thành TRC

SQL query được dịch thành TRC:SQL query được dịch thành TRC:

{R1.A, R2.C| REL1(R1) AND REL2(R2) {R1.A, R2.C| REL1(R1) AND REL2(R2) AND Condition1(R1,R2) AND AND Condition1(R1,R2) AND RR TEMP (R.E= R1.B AND R.C= R2.C TEMP (R.E= R1.B AND R.C= R2.C AND R.D = R2.D) }AND R.D = R2.D) }

Page 28: Chương 6 Phép tóan quan hệ

2828

Phép tính quan hệ miềnPhép tính quan hệ miềnDomain relational calculus (DRC)Domain relational calculus (DRC)

Là cơ sở cho ngôn ngữ truy vấn trực Là cơ sở cho ngôn ngữ truy vấn trực quan như MS Access, IBM QBE, quan như MS Access, IBM QBE, Borland ParadoxBorland Paradox

DRC tương tự như TRC, chỉ khác nhau DRC tương tự như TRC, chỉ khác nhau là DRC sử dụng biến miền (Domain là DRC sử dụng biến miền (Domain variable) thay cho biến bộ (Tuple variable) thay cho biến bộ (Tuple variable)variable)

Page 29: Chương 6 Phép tóan quan hệ

2929

Domain variableDomain variable

Biến miền sẽ nhận giá trị từ miền giá Biến miền sẽ nhận giá trị từ miền giá trị (domain) của 1 thuộc tính nào đó.trị (domain) của 1 thuộc tính nào đó.

Ví dụ: quan hệ TEACHING có thuộc Ví dụ: quan hệ TEACHING có thuộc tính ProfId với miền giá trị chứa các tính ProfId với miền giá trị chứa các số Id hợp lệ. Nếu biến Pid là biến số Id hợp lệ. Nếu biến Pid là biến miền thì nó sẽ có giá trị từ miền chứa miền thì nó sẽ có giá trị từ miền chứa các ID hợp lệ này.các ID hợp lệ này.

Page 30: Chương 6 Phép tóan quan hệ

3030

DRC queryDRC query Kết quả của DRC query cũng là 1 quan hệ Kết quả của DRC query cũng là 1 quan hệ

và có dạng chung sau:và có dạng chung sau:{X1,…,Xn| Condition}{X1,…,Xn| Condition}

Ví dụ: TRC và DRC query tương đương Ví dụ: TRC và DRC query tương đương nhau:nhau:

{Pid, Code | TEACHING (Pid, Code, F2007)}{Pid, Code | TEACHING (Pid, Code, F2007)}{T | TEACHING(T) AND T.Semester=‘F2007’}{T | TEACHING(T) AND T.Semester=‘F2007’}

DRC query đơn giản hơn, loại trừ được phép DRC query đơn giản hơn, loại trừ được phép so sánh T.Semester=‘F2007’so sánh T.Semester=‘F2007’

Biến miền Target

Page 31: Chương 6 Phép tóan quan hệ

3131

DRC và TRCDRC và TRC

DRC và TRC tương tự nhau. Nhiều DRC và TRC tương tự nhau. Nhiều tính năng, kỹ thuật giống nhau. tính năng, kỹ thuật giống nhau.

Các quy tắc về biến tự do và biến Các quy tắc về biến tự do và biến buộc của DRC tương tự như TRCbuộc của DRC tương tự như TRC• Các biến đích ( target variable) chỉ được Các biến đích ( target variable) chỉ được

phép là tự do trong biểu thức điều kiện phép là tự do trong biểu thức điều kiện • Cho phép các hằng số (constant) xuất Cho phép các hằng số (constant) xuất

hiện trong phần target (đích)hiện trong phần target (đích)

Page 32: Chương 6 Phép tóan quan hệ

3232

Điều kiện cơ bảnĐiều kiện cơ bảnAtomic conditionAtomic condition

Cú pháp của atomic Condition (điều Cú pháp của atomic Condition (điều kiện cơ bản) của DRC QUERY:kiện cơ bản) của DRC QUERY:• P(X1,…,Xn) với P là tên quan hệ và X1,P(X1,…,Xn) với P là tên quan hệ và X1,

…, Xn là biến miền…, Xn là biến miền• X oper Y với oper là toán tử so sánh, X X oper Y với oper là toán tử so sánh, X

và Y là biến miềnvà Y là biến miền• X oper const: tương tự như trên nhưng X oper const: tương tự như trên nhưng

so sánh với hằng số constso sánh với hằng số const

Page 33: Chương 6 Phép tóan quan hệ

3333

Điều kiện phứcĐiều kiện phức

Các condition phức được xây dựng đệ Các condition phức được xây dựng đệ quy như sau:quy như sau:• C là điều kiện của query nếu nó là 1 C là điều kiện của query nếu nó là 1

atomic conditionatomic condition• If C1 và C2 là điều kiện của query thì C1 If C1 và C2 là điều kiện của query thì C1

AND C2, C1 OR C2 và NOT C1 cũng là AND C2, C1 OR C2 và NOT C1 cũng là điều kiện của queryđiều kiện của query

• Nếu C là điều kiện của query, R là tên Nếu C là điều kiện của query, R là tên của quan hệ và X là biến miền thì của quan hệ và X là biến miền thì X X R.A (C) và R.A (C) và X X R.A (C) cũng là điều kiện R.A (C) cũng là điều kiện của querycủa query

Page 34: Chương 6 Phép tóan quan hệ

3434

Lượng từ và biến miềnLượng từ và biến miền

XX R.A (C) đọc là “ với mọi giá trị xảy ra R.A (C) đọc là “ với mọi giá trị xảy ra trong cột A của quan hệ R thì điều kiện C trong cột A của quan hệ R thì điều kiện C phải đúngphải đúng

và và XX R.A (C) đọc là “ có ít nhất một giá R.A (C) đọc là “ có ít nhất một giá trị x trong cột R.A sao cho C trở nên true trị x trong cột R.A sao cho C trở nên true nếu x được thay thế cho tất cả các biến X nếu x được thay thế cho tất cả các biến X

Page 35: Chương 6 Phép tóan quan hệ

3535

DRC queryDRC query

Có dạng {X1,...,Xn| condtion}Có dạng {X1,...,Xn| condtion}

Trong đó Xi với i=1,..n hoặc là biến tự Trong đó Xi với i=1,..n hoặc là biến tự do xuất hiện trong condition hoặc là do xuất hiện trong condition hoặc là hằng số. hằng số.

Kết quả của query trên là 1 tập tất cả Kết quả của query trên là 1 tập tất cả các chọn lựa của bộ (x1,…, xn) sao các chọn lựa của bộ (x1,…, xn) sao cho khi thay x1 cho X1, x2 cho X2,… cho khi thay x1 cho X1, x2 cho X2,… thì condition trở nên đúngthì condition trở nên đúng

Page 36: Chương 6 Phép tóan quan hệ

3636

DRC queryDRC query

DRC query thường sử dụng nhiều DRC query thường sử dụng nhiều biến hơn TRC tương ứng vì biến DRC biến hơn TRC tương ứng vì biến DRC dùng cho mỗi giá trị đơn trong khi dùng cho mỗi giá trị đơn trong khi biến TRC dùng cho cả bộbiến TRC dùng cho cả bộ

Miền phổ dụng ( universal domain) Miền phổ dụng ( universal domain) UU chứa tất cả các giá trị trong tất cả chứa tất cả các giá trị trong tất cả các domaincác domain

XX UU (Condition) được viết tắt (Condition) được viết tắt thành thành XX (Condition) (Condition)

Page 37: Chương 6 Phép tóan quan hệ

3737

Ví dụVí dụ

Liệt kê tên tất cả các giáo sư dạy Liệt kê tên tất cả các giáo sư dạy môn MGT123môn MGT123

{N| {N| II PROFESSOR.Id PROFESSOR.Id DD PROFESSOR.DeptId PROFESSOR.DeptId (PROFESSOR(I,D,N) AND (PROFESSOR(I,D,N) AND SS TEACHING (I, MGT123, S)))}TEACHING (I, MGT123, S)))}

Page 38: Chương 6 Phép tóan quan hệ

3838

Mối quan hệ giữa đại số quan hệ, Mối quan hệ giữa đại số quan hệ, phép tính quan hệ TRC, DRC phép tính quan hệ TRC, DRC

Cả 3 ngôn ngữ đều có khả năng diễn Cả 3 ngôn ngữ đều có khả năng diễn đạt mạnh như nhau: các query được đạt mạnh như nhau: các query được viết bằng ngôn ngữ này có thể được viết bằng ngôn ngữ này có thể được viết bằng ngôn ngữ khác viết bằng ngôn ngữ khác

Page 39: Chương 6 Phép tóan quan hệ

3939

Tương đương của 3 ngôn ngữTương đương của 3 ngôn ngữ Phép chọn (selection)Phép chọn (selection)

• Algebra: Algebra: Condition Condition (R)(R)• TRC: {T|R(T) AND Condition1}TRC: {T|R(T) AND Condition1}• DRC: {X1,…,Xn|R(X1,…,Xn) AND DRC: {X1,…,Xn|R(X1,…,Xn) AND

Condition2}Condition2}

Trong đó: nếu Condition có dạng A=B Trong đó: nếu Condition có dạng A=B and C=d thìand C=d thì

Condition1 sẽ là T.A = T.B AND T.C =DCondition1 sẽ là T.A = T.B AND T.C =D Condition2 sẽ là X1=X2 AND X3=dCondition2 sẽ là X1=X2 AND X3=d

Page 40: Chương 6 Phép tóan quan hệ

4040

Tương đương của 3 ngôn ngữTương đương của 3 ngôn ngữ

Phép chiếu (Projection)Phép chiếu (Projection)• Algebra: Algebra: A,B,CA,B,C(R)(R)

• TRC: {T.A, T.B, T.C| R(T)}TRC: {T.A, T.B, T.C| R(T)}

• DRC: {X,Y,Z| DRC: {X,Y,Z| VVW R(X,Y,Z,V,W)}W R(X,Y,Z,V,W)} Giả sử R có 5 attribute với A,B,C là 3 thuộc Giả sử R có 5 attribute với A,B,C là 3 thuộc

tính đầutính đầu

Page 41: Chương 6 Phép tóan quan hệ

4141

Tương đương của 3 ngôn ngữTương đương của 3 ngôn ngữ

Tích DescartesTích Descartes• Algebra: R xSAlgebra: R xS• TRC: {T.A, T.B, T.C, V.D, V.E| R(T) AND TRC: {T.A, T.B, T.C, V.D, V.E| R(T) AND

S(V)}S(V)}

Giả sử R có 3 thuộc tính A,B,C và S có 2 Giả sử R có 3 thuộc tính A,B,C và S có 2 thuộc tính D,Ethuộc tính D,E

• DRC: {X,Y,Z,V,W | R(X,Y,Z) AND DRC: {X,Y,Z,V,W | R(X,Y,Z) AND S(V,W) } S(V,W) }