Chương 7

PH ÉP TÍN H  Q UA N  H Ệ PH ÉP TÍN H  Q UA N  H Ệ

1

ộN i dung N i dung

 Phép tính quan hệ

ệ ộ ệ

ề  M i quan h gi a đ i s quan h và phép

• Phép tính quan h b (TRC) • Phép tính quan h mi n (DRC) ố

ệ ữ ạ ố

tính quan hệ

2

ở ầM đ u ở ầ 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 ư ế

ạ ố ượ  DBMS th ườ ạ ố

ư c khi t ng dùng đ i s quan h nh ngôn ng trung ữ ệ i u hóa th c ướ ố ư ể ị ự ậ

 Xét v m t khái ni m, thì SQL l

gian b c cao dùng đ d ch query tr thi

ệ ạ i d a vào 1 ngôn ng ữ ự

truy v n chính quy hoàn toàn khác (formal query language) ề ặ ấ

3

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

ạ ố ạ ố

ệ ệ

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ó tính th t c, g n

ủ ụ ầ

 Phép tính quan h (relational calculus) không có tính th ủ

ạ ố v i ngôn ng l p trình ớ ệ ữ ậ

ầ ơ

nhiên h n t kê các nhà cung c p chuyên ụ ấ

4

t c và g n v i ngôn ng t ữ ự ớ ụ  Ví d : xét query sau “ li ệ cung c p ph tùng s 2” ụ ấ ố

ạ ố ạ ố

ệ ệ

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 thì trinh 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) Dung phep chon thu h p k t qu c a k t n i này, ế ố ̀ ́ ̣

ẹ ch còn lai 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 ể ế ế ả ỉ ạ

5

thu c tính S#. ộ

ạ ố ạ ố

ệ ệ

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ì:

ồ ế ệ • Tìm mã nhà cung c p S# sao cho t n t ạ ấ

 Phép tính quan h thì mô 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.

, đ i s quan h đ a ra qui ệ ả ạ ố ệ ư

6

t c, cách dùng. ắ

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

 Là 1 phân nhánh c a logic v t  Đ c dùng trong CSDL d ướ

(predicate logic) ủ

ị ừ 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 – ệ ộ ệ ề

7

DRC)

Phép tính quan h b - TRC Phép tính quan h b - TRC

ệ ộ ệ ộ

 Các query trong TRC đ u có d ng:

Target

Target ch a ứ bi n b (Tuple variable) ế ộ t c thông tin các môn h c đ c d y trong mùa ạ ề {T| Condition} T ọ ượ ạ ấ ả

 Ví d : tìm t ụ thu 2007 { T | TEACHING(T) AND T.Semester = ‘F2007’} SELECT * FROM TEACHING

ủ ế

́ ́ ̣

Teaching(T) tương ưng vơi mênh đê  T.Semester = ‘F2007’ tương ưng vơi

8

́ WHERE T.Semester = ‘F2007’  SQL là 1 bi n th v m t cú pháp c a TRC ể ề ặ ̀ FROM  ́ WHERE

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

Có th là 1 trong các d ng sau: ể ạ

ế ượ c dùng đ ể

 P(T): P là tên quan h và T là bi n b . P(T) đ ệ ộ ề

 T(A) oper S(B) v i oper là toán t

ộ ki m tra b T có thu c v P hay không ể ộ

so sánh. T và S là bi n ớ ử ế

 T.A oper const. T

b , A và B là các thu c tính ộ ộ

ng t nh trên nh ng T đ c so sánh ươ ự ư ư ượ

v i h ng s ớ ằ ố

c g i là đi u ki n nguyên t ệ ượ ề ệ ọ ố

9

 Các đi u ki n trên đ ề ( atomic condition)

ề ề

Đ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 m t cách đ quy nh ư ự ệ ộ

ủ ề ệ ế ề sau: • C là 1 đi u ki n c a query n u nó là 1 đi u ki n ệ

nguyên tố

ế ề

ệ ủ ề

• 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à đi u ki n c a query • N u C là đi u ki n c a query, R là tên quan h và T là ệ ủ R (C) và $ T ˛ R (C) cũng là đi u ề

10

ề " T ˛ bi n b thì ki n query ế ế ệ

ng t ng t

L ượ L ượ

ừ ừ

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

 L $ T ˛ t đ

r sao cho C tr nên đúng sau khi ộ ˛ i 1 b t ở

c thay th b i T R (C)  t n t ượ ồ ạ ế ở

 L " T ˛

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

r, C tr nên đúng n u t đ c ế ở ượ

11

ọ ộ ˛ R (C)  v i m i b t ớ ế thay th b i bi n T. ế ở

ế

ếBi n (variable) Bi n (variable)

ế ộ ứ

 N u bi n b đ ng sau 1 l ế bu c (bound variable). ộ variable)

 X là bi n t

ượ Ng ng t c l bi n ế c g i là ọ do (free , $ ừ " i 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 ế

12

ể gán 1 giá tr cho X ị

ế

ếBi n (variable) Bi 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 ể ượ ể ị

13

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

do do

ế ự ế ự

ế ế

ộ ộ

So sánh bi n bu c và bi n t So sánh bi n bu c và bi n t trong TRC 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)

ệ ượ do (Free variable) đ c dùng cho các b đ ượ ộ ượ c tr ả

c dùng trong target) ấ ượ

 Bi n t ế ự v b i truy v n (đ ề ở • Khi 1 giá tr đ

c thay th cho bi n S thì đi u ki n s ệ ẽ ế ế ề

ị ượ ặ

do trong đi u ki n ở ỉ ề ệ

T ˛ Transcript

14

tr nên true ho c false • Ch có bi n S là bi n t ế ự ế {S | Student(S) AND ($ (S.Id = T.StudId AND T.CrsCode = ‘CS305’))}

Ví d 1ụVí d 1ụ

 {E| COURSE(E) AND " S˛

STUDENT ($ T

 ???

˛ TRANSCRIPT(T.StudId = S.Id AND T.CrsCode = E.CrsCode))}

15

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

Ví d 2ụVí 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

16

WHERE P.Id= T.ProfId AND T.CrsCode = ‘MGT123’

Ví d 3ụVí d 3ụ

 Tìm mã s t ố ấ ả nh ng h c kỳ khác nhau ọ

t c các sinh viên đã h c cùng 1 môn 2 l n ọ ầ

17

ở ữ {T.StudId | TRANSCRIPT(T) AND $ T1 ˛ TRANSCRIPT( T.StudId = T1.StudId AND T.CrsCode = T1.CrsCode AND T.Semester „ T1.Semester)}

M t s l u ý khi dùng l M t s l u ý khi dùng l

ng t ng t

ộ ố ư ộ ố ư

ượ ượ

ừ ừ

 Các l Ví d :ụ

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

18

$ R ˛ $ T ˛ TRANSCRIPT ($ T ˛ TEACHING ($ R ˛ TEACHING)(..)) TRANSCRIPT)(..))

M t s l u ý khi dùng l M t s l u ý khi dùng l

ng t ng t

ộ ố ư ộ ố ư

ượ ượ

ừ ừ

 Các l

" ph quát ( ) và t n t ) không hoán v cho ượ ừ ổ ồ ạ $ i ( ị

nhau đ ng t cượ

 Ví d :ụ " T ˛ “For every TEACHING tuple there is a TRANSCRIPT tuple such that statement St is true”

TEACHING($ R ˛ TRANSCRIPT ..)

TRANSCRIPT (" T ˛ TEACHING … C)

is a TRANSCRIPT tuple such that for all

19

Khác v iớ $ R ˛ “There TEACHING tuples St is true”

ề ề

Phép tính quan h mi n ệ Phép tính quan h mi n ệ Domain relational calculus (DRC) 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 ế

ự ử ụ ư

ế ộ

20

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)

Domain variable Domain variable

 Bi n mi n s nh n giá tr t

mi n giá tr (domain) c a 1 ề ị ừ ề ẽ ủ ị

ế ộ

ế

 Ví d : quan h TEACHING có thu c tính ProfId v i ớ . N u bi n Pid là bi n ế này. ứ

21

mi n ch a các ID h p l ậ thu c tính nào đó. ệ mi n giá tr ch a các s Id h p l ố ị ứ mi n thì nó s có giá tr t ị ừ ẽ ộ ợ ệ ế ề ợ ệ ề ề

DRC query DRC query

 K t qu c a DRC query cũng là 1 quan h và có d ng

ả ủ ế ệ ạ

 Ví d : TRC và DRC query t

chung sau: Biến miền {X1,…,Xn| Condition}

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

ng nhau: ng đ ụ ươ

c phép so sánh ạ ơ ơ ừ ượ

22

DRC query đ n gi n h n, lo i tr đ ả T.Semester=‘F2007’

DRC và TRC DRC và TRC

 DRC và TRC t gi ng nhau.

ng t nhau. Nhi u tính năng, k thu t ươ ự ề ậ ỹ

 Các quy t c v bi n t

do và bi n bu c c a DRC t ng ắ ề ế ự ộ ủ ế ươ

c 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 hi n trong

ệ ố ệ ấ

23

t nh TRC ự ư • Các bi n đích ( target variable) ch đ ế ề ằ ph n target (đích) ầ

ề ề

Đi u ki n c b n ơ ả ệ Đi u ki n c b n ơ ả ệ Atomic condition Atomic condition

 Cú pháp c a atomic Condition (đi u ki n c b n) c a

ơ ả ủ ủ ệ ề

ệ ớ DRC QUERY: • P(X1,…,Xn) v i P là tên quan h và X1,…, Xn là

bi n mi n ề ế

• X oper Y v i oper là toán t ử ớ

so sánh, X và Y là bi n ế

mi nề

• X oper const: t h ng s const ố ằ

24

ng t nh trên nh ng so sánh v i ươ ự ư ư ớ

Đi u ki n ph c ứ ệ Đ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à ủ R.A (C) cũng

ế ệ

R.A (C) và $ X ˛ ế

25

ệ ủ ề " X ˛ X là bi n mi n thì ề là đi u ki n c a query ệ ủ ề

ng t ng t

L ượ L ượ

ừ ừ

và bi n mi n ế và bi n mi n ế

ề ề

R.A (C) đ c là “ v i m i giá tr x y ra trong c t A ọ ọ ộ

ệ ớ ệ ả

ấ ị

 " X ˛ ị ả c a quan h R thì đi u ki n C ph i đúng ề ủ  và $ X ˛ c t R.A sao cho C tr nên true n u x đ ộ t c các bi n X t ấ ả

ọ ở R.A (C) đ c là “ có ít nh t m t giá tr x trong c thay th cho ế ộ ượ ế

26

ế

DRC query DRC query

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

ế ự ặ do xu t hi n ấ ệ

 K t qu c a query trên là 1 t p t

Trong đó Xi v i i=1,..n ho c là bi n t ớ trong condition ho c là h ng s . ằ ặ ố

ả ủ ọ ự ủ ậ ấ ả

27

t c các ch n l a c a ế b (x1,…, xn) sao cho khi thay x1 cho X1, x2 cho X2,… ộ thì condition tr nên đúng ở

DRC query DRC 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 ế ỗ ế ị ơ

 Mi n ph d ng ( universal domain)

ế ứ TRC dùng cho c bả ộ

t c các ổ ụ ề ứ ấ ả U ch a t

 $ X ˛

t c các domain giá tr trong t ị ấ ả

28

c vi t thành $ X (Condition) ượ t t ế ắ U (Condition) đ

Ví dụVí dụ

 Li

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

PROFESSOR.Id $ D ˛

PROFESSOR.DeptId TEACHING (I, $ S ˛

29

{N| $ I ˛ (PROFESSOR(I,D,N) AND MGT123, S)))}

ố ố

ệ ệ

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

ả ễ ạ

c vi ượ

 C 3 ngôn ng đ u có kh năng di n đ t m nh nh ạ ả ư t b ng ngôn ng này có th ể ữ ế ằ ữ

30

t b ng ngôn ng khác c vi ữ ề nhau: các query đ đ ượ ế ằ

T T

ng đ ng đ

ng c a 3 ngôn ng ng c a 3 ngôn ng

ươ ươ

ươ ươ

ủ ủ

ữ ữ

 Phép ch n (selection) ọ • Algebra: s 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 ẽ

31

 Condition2 s là X1=X2 AND X3=d ẽ

T T

ng đ ng đ

ng c a 3 ngôn ng ng c a 3 ngôn ng

ươ ươ

ươ ươ

ủ ủ

ữ ữ

Gi c ộ ầ ượ

s R có 5 attribute v i A,B,C là 3 thu c tính đ u đ ớ ả ử dùng trong phép chi uế  Phép chi u (Projection) ế • Algebra:

A,B,C(R)

• TRC:

P

• DRC:

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

32

{X,Y,Z| $ V$ W R(X,Y,Z,V,W)}

T T

ng đ ng đ

ng c a 3 ngôn ng ng c a 3 ngôn ng

ươ ươ

ươ ươ

ủ ủ

ữ ữ

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

• Algebra: R x S • TRC:

Gi  Tích Descartes

• DRC:

{T.A, T.B, T.C, V.D, V.E| R(T) AND S(V)}

33

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