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
11
Chương 6Chương 6Phép tóan quan hệ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ệ
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ệ)
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”
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#.
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
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)
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
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)
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
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.
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
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’))}
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
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’
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)}
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)(..))
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”
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)))
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))}
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.
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?
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??
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
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
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
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) }
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)
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.
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
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)
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
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
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
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
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)
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)))}
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
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
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
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) }