Có hai loại ngôn ngữ • Tính toán quan hệ trên bộ Tuple relational calculus TRC : Các biến theo các bộ dữ liệu.. • Phép toán quan hệ trên miền Domain relational calculus DRC.. Các biến
Trang 1Phép toán quan hệ
Trang 2Ngôn ngữ hình thức cho mô hình quan hệ
tính toán
quan hệ thuận tiện cho mô tả
Lớp ngôn ngữ này chịu ảnh
hưởng của ngôn ngữ SQL
Trang 3 Có hai loại ngôn ngữ
• Tính toán quan hệ trên bộ (Tuple relational calculus TRC) : Các biến theo các bộ dữ liệu Đại diện là QUEL.
• Phép toán quan hệ trên miền (Domain relational calculus DRC) Các biến theo các phần tử của miền dữ liệu Đại diện
là QBE.
• Cả hai TRC và DRC là phần con đơn giản của logic vị từ bậc một.
Trang 4Phép toán quan hệ trên bộ (TRC)
hệ như là giá trị
T = biến bộ p(T) = công thức mô tả T
Kết quả là tập các bộ t mà p(t) thỏa mãn, khi
T=t
nhất
( ) {T| p T }
Trang 5Thí dụ : tìm thủy thủ có tần suất trên 7
Biến S gắn với một bộ trong quan hệ Sailors
Trang 6 Gắn lượng tử ∃ và ∀ gắn với biến R.
Tự do – biến là tự do khi không gắn với lượng tử
Trang 7Ngữ nghĩa của các câu hỏi TRC
F là công thức nguyên tử R ∈ Rel, và R được gán với bộ trong
thể hiện của quan hệ Rel
{S|S∈Sailors}
F là công thức so sánh R.a op S.b, R.a op h ng ằ , hay h ng op ằ
R.a, và các bộ gắn với R và S có các trường tên là R.a và S.b,
thỏa mãn so sánh true.
F là công thức ¬p, và p không đúng;
công thức p ∧ q, và cả p và q đều true;
công thức p ∨ q, và một trong hai là true;
công thức p ⇒ q, và q là true khi mà p là true.
F là công thức có dạng ∃R(p( R )) , và có sự gán các bộ cho biến
tự do trongb p ( R ), bao gồm biến R làm cho công thức p( R )
true;
F là công thức có dạng ∀R (p ( R )), và có sự gán các bộ cho biến
tự do trongb p ( R ), bao gồm biến R làm cho công thức p( R )
true không liên quan đến bộ nào được gán cho R.
Trang 8sid sname rating age
Thí dụ về TRC
Trang 9Tìm tên và tuổi của thủy thủ có tần suất trên 7
P là biến bộ có hai trường name và age.
- Hai trường là trường duy nhất trong P
- P khi liên quan đến bất kì quan hệ nào
{ P | ∃S ∈ Sailors (S.rating > 7 ∧ P.name = S.sname ∧ P.age = S.age)}
name age
Lubber 55.0 rusty 35.0
sid sname rating age
Sailors
Trang 10Tìm tên thủy thủ phục vụ tàu 103
{ P | ∃S ∈ Sailors ∃R ∈ Reserves
(R.sid = S.sid ∧ R.bid = 103 ∧ P.sname = S.sname)}
Tìm tất cả các thủy thủ có bộ trong quan hệ Reserves, có cùng giá
trị trong trường SID, mà bid =103
Vậy thì, các bộ kết quả trông ra sao, về dòng, cột Có gì khác
nhau không ?
{ S | ∃S ∈ Sailors ∧ ∃R ∈ Reserves (R.sid = S.sid ∧ R.bid = 103)}
Trang 11Tìm tên thủy thủ đã từng phục vụ tàu đỏ
{ P | ∃S ∈ Sailors ∃R ∈ Reserves (R.sid = S.sid ∧ P.sname = S.sname ∧
∃B ∈ Boats(B.bid = R.bid ∧ B.color ='red'))}
Tìm tất cả các bộ sailor S mà có bộ R trong Reserves và B trong
quan hệ Boats, để R.sid = S.sid ∧ B.bid = R.bid ∧ B.color ='red'
{ P | ∃S ∈ Sailors ∃R ∈ Reserves ∃B ∈ Boats
(R.sid = S.sid ∧ B.bid = R.bid ∧ B.color ='red'
∧ P.sname = S.sname)}
Trang 12sid bid serves bid Boats
π sname Tempsids ( Sailors )
Trang 13Tìm các thủy thủ đã trên tàu đỏ
sid bid serves bid Boats
π sname Tempsids( Sailors)
Thể hiện theo đại số quan
hệ :
Trang 14Tìm thủy thủ phục vụ tất cả các tàu đỏ
{ P | ∃S ∈ Sailors ∧ ∀B ∈ Boats
(B.color = 'red'
⇒ (∃R ∈ Reserves (S.sid = R.sid ∧ R.bid = B.bid))}
về logic p ⇒ q tương đương ¬p∨q
{ P | ∃S ∈ Sailors ∧ ∀B ∈ Boats
(B.color ≠'red' ∨ (∃R ∈ Reserves (S.sid = R.sid ∧ R.bid = B.bid))}
được viết lại như :
để hạn chế các tàu đỏ
Trang 15Phép toán quan hệ trên miền
Trang 16∃ X(p(X)), trong đó X là biến miền
∀ X(p(X)), trong đó X là biến miền
Trang 17Biến tự do và biến ràng buộc
Việc sử dụng lượng tử và trong công thức
được gọi là ràng buộc X ( bind X).
Biến không bị buộc là biến tự do
Xét lại định nghĩa về câu hỏi
bên trái dấu `|’ cần là biến tự do duy nhất
trong công thức p( )
Trang 18Tìm thủy thủ tần suất trên 7
biến miền dữ liệu I, N, T và A là bị buộc vào
các trường của các bộ Sailors
Trang 19Tìm thủy thủ có suất > 7 đã trên tàu 103
Đã dùng thay cho
Lưu ý rằng việc dùng ∃ để tìm bộ trong Reserves
được nối với Sailors
Trang 20Tìm thủu thủ suất > 7 đã trên tàu đỏ
Trang 21Tìm thủy thủ đã trên các tàu
Tìm các thủy thủ I để mỗi bộ 3 không là một bộ trong
Boats hoặc chỉ có một bộ trong Reserves cho thấy thủy thủ I đã
Trang 22So sánh đại số quan hệ và phép toán quan hệ
cơ sở dữ liệu quan hệ
phép toán quan hệ
• Câu hỏi không an toàn
{S | ¬ (S ∈ Sailors)} đúng hay không ?
• Câu TRC an toàn - Dom(Q , I)
- Trả lời cho Q chỉ có giá trị trong Dom(Q, I)
− ∃ R(p(R)), bộ r chỉ chứa hằng trong Dom(Q,I)
− ∀ R(p(R)), bộ r chứa một hằng không trong Dom(Q,I), thì câu p(r) là đúng.
Trang 23Kết luận
thể hiện tất cả các câu hỏi theo đại số quan hệ
mà mô tả Người dùng xác định câu hỏi theo
cách họ muốn, không theo cách tính toán ra
sao
Trang 24Cám ơn sự theo dõi