So sánh đại số quan hệ và phép tính quan hệ Nếu theo đại số quan hệ thì trình tự thực hiện như sau: 1Tạo mối kết nối tự nhiên của 2 quan hệ SUPPLIER và SHIPMENT trên thuộc tính S#; 2Dù
Trang 1PHÉP TÍNH QUAN HỆ
Chương 7
Trang 3 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 khác (formal query language)
Relational calculus (phép tính quan hệ)
Trang 5So sánh đại số quan hệ và phép
tính quan hệ
Nếu theo đại số quan hệ thì trình tự thực hiện như sau:
1)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 S#;
2)Dùng phép chọn thu hẹp kết quả của kết nối này, chỉ còn lại các bộ liên quan đến phụ tùng P2;
3)Dùng phép chiếu (project) để kết quả chỉ còn lại thuộc tính S#
Trang 6So sánh đại số quan hệ và phép
tính quan hệ
Nếu theo phép tính quan hệ thì:
• 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 mã S# và có mã phụ tùng P#
là P2
Phép tính quan hệ thì mô tả, đại số quan hệ đưa ra qui tắc, cách dùng
Trang 7Phép tính quan hệ
Là 1 phân nhánh của logic vị từ (predicate logic)
Được dùng trong CSDL dưới 2 dạng:
Phép tính quan hệ bộ (Tuple relational calculus –TRC)
Phép tính quan hệ miền (Domain relational calculus – DRC)
Trang 8Phép tính quan hệ bộ - TRC
Các query trong TRC đều có dạng:
{T| Condition}
Target chứa biến bộ (Tuple variable) T
Ví dụ: tìm tất cả thông tin các môn học được dạy trong mùa thu 2007
{ T | TEACHING(T) AND T.Semester = ‘F2007’}
SELECT * FROM TEACHING
Trang 11Lượng từ
Lượng từ tồn tại (existential quantifier):
∃T ∈ R (C) tồn tại 1 bộ t∈r sao cho C trở nên đúng sau khi
t được thay thế bởi T
Lượng từ phổ quát (universal quantifier):
∀T ∈ R (C) với mọi bộ t ∈ r, C trở nên đúng nếu t được thay thế bởi biến T
Trang 12Biến (variable)
Nếu biến bộ đứng sau 1 lượng từ ∀, ∃ được gọi là biến buộc (bound variable) Ngược lại là biến tự do (free variable)
X là biến tự do trong phát biểu sau
“X is in CS305” (hay có thể biểu diễn thành C(X) )
Phát biểu trên không đúng cũng không sai cho đến khi gán 1 giá trị cho X
Trang 13Biến (variable)
X là biến buộc (được định lượng) trong phát biểu sau
“there exists a student X such that X is in CS305” (biểu diễn
thành ∃ X∈ S (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ị TRUE/FALSE tại bất kỳ 1 thời điểm nào đó của database
Trang 14So sánh biến buộc và biến tự do
trong TRC
Biến buộc (Bound variable) được dùng để đánh giá các bộ trong 1 quan hệ (được dùng trong condition)
Biến tự do (Free variable) được dùng cho các bộ được trả
về bởi truy vấn (được dùng trong target)
• Khi 1 giá trị được thay thế cho biến S thì đ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ện
{S | Student(S) AND (∃ T ∈Transcript
(S.Id = T.StudId AND T.CrsCode = ‘CS305’))}
{S | Student(S) AND (∃ T ∈Transcript
(S.Id = T.StudId AND T.CrsCode = ‘CS305’))}
Trang 15Ví dụ 1
{E| COURSE(E) AND ∀S∈ STUDENT (∃T
∈TRANSCRIPT(T.StudId = S.Id AND T.CrsCode =
E.CrsCode))}
???
Liệt kê tất cả các môn học mà mọi sinh viên đều học
Trang 16Ví dụ 2
Liệt kê tên của tất cả giáo sư đã dạy môn MGT123??
{P.Name| PROFESSOR(P) AND ∃T ∈ TEACHING (P.Id=
T.ProfId AND T.CrsCode = ‘MGT123’)}
Câu lệnh SQL tương ứng
SELECT P.Name
FROM PROFESSOR P, TEACHING T
WHERE P.Id= T.ProfId AND T.CrsCode = ‘MGT123’
Trang 17Ví dụ 3
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ỳ khác nhau
{T.StudId | TRANSCRIPT(T) AND ∃T1 ∈
TRANSCRIPT( T.StudId = T1.StudId AND
T.CrsCode = T1.CrsCode AND T.Semester ≠
T1.Semester)}
Trang 18Một số lưu ý khi dùng lượng từ
Các lượng từ tồn tại (∃) kề nhau có thể hoán vị cho nhau
Ví dụ:
∃R ∈ TRANSCRIPT (∃T ∈ TEACHING)( ))
∃T ∈ TEACHING (∃R ∈ TRANSCRIPT)( ))
Trang 19Một số lưu ý khi dùng lượng từ
Các lượng từ phổ quát (∀) và tồn tại (∃) không hoán vị cho
Trang 20Phép tính quan hệ miền
Domain relational calculus (DRC)
Là cơ sở cho ngôn ngữ truy vấn trực quan như MS Access, IBM QBE, Borland Paradox
DRC tương tự như TRC, chỉ khác nhau là DRC sử dụng biến miền (Domain variable) thay cho biến bộ (Tuple variable)
Trang 21Domain variable
Biến miền sẽ nhận giá trị từ miền giá trị (domain) của 1
thuộc tính nào đó
Ví dụ: quan hệ TEACHING có thuộ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
miền thì nó sẽ có giá trị từ miền chứa các ID hợp lệ này
Trang 22DRC query
Kết quả của DRC query cũng là 1 quan hệ và có dạng chung sau:
{X1,…,Xn| Condition}
Ví dụ: TRC và DRC query tương đương nhau:
{Pid, Code | TEACHING (Pid, Code, F2007)}
{T | TEACHING(T) AND T.Semester=‘F2007’}
DRC query đơn giản hơn, loại trừ được phép so sánh T.Semester=‘F2007’
Biến miền
Target
Trang 24Điều kiện cơ bản
Trang 25Điều kiện phức
Các condition phức được xây dựng đệ quy như sau:
• C là điều kiện của query nếu nó là 1 atomic condition
• 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à điều kiện của query
• 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ì ∀X ∈ R.A (C) và ∃X ∈ R.A (C) cũng là điều kiện của query
Trang 26Lượng từ và biến miền
∀X ∈ 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 phải đúng
và ∃X ∈ 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 nếu x được thay thế cho tất cả các biến X
Trang 28DRC query
DRC query thường sử dụng nhiều biến hơn TRC tương ứng vì biến DRC dùng cho mỗi giá trị đơn trong khi biến TRC dùng cho cả bộ
Miền phổ dụng ( universal domain) U chứa tất cả các giá trị trong tất cả các domain
∃X ∈ U (Condition) được viết tắt thành ∃X (Condition)
Trang 30Mối quan hệ giữa đại số quan hệ, phép
tính quan hệ TRC, DRC
Cả 3 ngôn ngữ đều có khả năng diễn đạ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ữ khác
Trang 31Tương đương của 3 ngôn ngữ
Phép chọn (selection)
• Algebra: σ Condition (R)
• TRC: {T|R(T) AND Condition1}
• DRC: {X1,…,Xn|R(X1,…,Xn) AND Condition2}
Trong đó: nếu Condition có dạng A=B and C=d thì
Condition1 sẽ là T.A = T.B AND T.C =D
Condition2 sẽ là X1=X2 AND X3=d
Trang 32Tương đương của 3 ngôn ngữ
Giả sử R có 5 attribute với A,B,C là 3 thuộc tính đầu được dùng trong phép chiếu
Trang 33Tương đương của 3 ngôn ngữ
Giả sử R có 3 thuộc tính A,B,C và S có 2 thuộc tính D,E