5 / 24
Thí 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
S|S∈Sailors∧S.rating>7
6 / 24
Công thức TRC
Công thức :
Công thức nguyên tử
R ∈ Rel, R.a op S.b, R.a op hằng, hằng op R.a
Xác định đệ qui
¬
p, p
∧
q, p
∨
q, p
⇒
q , trong đó p, q là công thức
∃
R(p(R)), trong đó R là biến bộ
∀
R(p(R)), trong đó R là biến bộ
Terms
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ử
7 / 24
Ngữ 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.
8 / 24
sid sname rating age
22 dustin 7 45.0
31 lubber 8 55.5
58 rusty 10 35.0
sid bid day
22 101 10/10/96
58 103 11/12/96
SailorsReserves
Thí dụ về TRC
9 / 24
Tì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
22 dustin 7 45.0
31 lubber 8 55.5
58 rusty 10 35.0
Sailors
10 / 24
Tì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)}
11 / 24
Tì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)}
12 / 24
Tìm thủy thủ phục vụ tất cả các tàu
Tìm thủy thủ S mà tx các tàu B có trong bộ Reserves cho thấy :
thủy thủ S đã phục vụ tàu B.
{ P |
∃
S
∈
Sailors
∀
B
∈
Boats
(
∃
R
∈
Reserves (S.sid = R.sid
∧
R.bid = B.bid
∧
P.sname = S.sname))}
ρ π π
( , (
,
Re ) / ( ))Tempsids
sid bid
serves
bid
Boats
π
sname
Tempsids Sailors( )
13 / 24
Tìm các thủy thủ đã trên tàu đỏ
{ P |
∃
S
∈
Sailors
∧
∀
B
∈
Boats
(B.color = 'red'
⇒
(
∃
R
∈
Reserves (S.sid = R.sid
∧
R.bid = B.bid))}
ρ π π
( , (
,
Re ) / ( ))Tempsids
sid bid
serves
bid
Boats
π
sname
Tempsids Sailors( )
Thể hiện theo đại số quan
hệ :
14 / 24
Tì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 đỏ
Không có nhận xét nào:
Đăng nhận xét