Bài 4: Ngôn ng đ i s quan h

ữ ạ ố

1

N i dung

ớ ể

i thi u ệ ứ ạ ố

ứ ạ ố

1. Gi 2. Bi u th c đ i s quan h 3. Các phép toán 4. Bi u th c đ i s quan h 5. Ví dụ

2

1. Gi

i thi u ệ

ề ả ọ

 Cho phép mô t

các quan

ữ ệ ừ

i u quá trình rút trích b ng các phép toán có

các phép toán rút trích d li u t ả h trong c s d li u quan h . ệ ơ ở ữ ệ ệ  Cho phép t ố ư s n c a lý thuy t t p h p. ẵ ủ

ế ậ

3

 Đ i s quan h (ĐSQH) có n n t ng toán h c (c ụ ạ ố ệ th là lý thuy t t p h p) đ mô hình hóa CSDL quan ể ế ậ ể ng x lý là các quan h trong c s d h . Đ i t ơ ở ữ ử ệ ố ượ li u quan h . ệ ệ  Ch c năng : ứ

2. Bi u th c ĐSQH ứ

 Bi u th c ĐSQH là m t bi u th c g m các phép ộ ứ ồ ứ ể ể

toán ĐSQH.

 Bi u th c ĐSQH đ ứ ể ượ c xem nh m t quan h ệ ư ộ

 Có th đ t tên cho quan h đ m t c t o t ệ ượ ạ ừ ộ

 Có th đ i tên các thu c tính c a quan h đ c ệ ượ ủ ộ

4

(không có tên). ể ặ bi u th c ĐSQH. ứ ể ổ t o t m t bi u th c ĐSQH. ạ ừ ộ ứ ể

3. Các phép toán

5

i thi u 3.1 Gi ệ ớ 3.2 Phép ch nọ 3.3 Phép chi uế 3.4 Phép gán 3.5 Các phép toán trên t p h p ợ 3.6 Phép k tế 3.7 Phép chia 3.8 Hàm tính toán và gom nhóm

3.1 Gi

i thi u (1) ệ

ặ ặ

·

-

6

 Có năm phép toán c b n: ơ ả s  Ch n ọ ( ) ho c ( : ) p  Chi uế ( ) ho c ( [] )  Tích ( )  Hi uệ ( )  H iộ ( )

3.1 Gi

i thi u (2) ệ

 Các phép toán khác không c b n nh ng h u ích: ơ ả ữ ư

ế

˙

 Giao ( )   K t ( )  Chia ( )  Phép bù ( ) r  Đ i tên ( )  Phép gán ( ‹ ) ế

(cid:216)

ả ệ ữ

ể ạ ớ

7

 K t qu sau khi th c hi n các phép toán là các ệ ự quan h , do đó có th k t h p gi a các phép toán ể ế ợ đ t o nên phép toán m i.

3.2 Phép ch n (Selection) ọ

 Trích ch n các b (dòng) t c ệ ộ ượ

tpRtt

)}(,

trích ch n ph i th a mãn đi u ki n ch n p. ộ ỏ quan h R. Các b đ ừ ọ ề ệ

˛= /{)( Rp

ọ ọ s  Ký hi uệ :  Đ nh nghĩa ả )(Rp s : p(t):th a đi u ki n ị ề ệ ỏ

p

ế ệ

s =

s =

s

R )(

))

))

R

R

ộ ệ ế ả ộ

s ọ ( p 1

p

p 1(

)2

p

8

(cid:217)  K t qu tr v là m t quan h , có cùng danh sách thu c tính v i quan h R. Không có k t qu trùng. s ( 2 ả ả ề ớ  Phép ch n có tính giao hoán ( ( p p 2 1

L

c đ CSDL qu n lý giáo

ượ ồ

vụ

HOCVIEN (MAHV, HO, TEN, NGSINH, GIOITINH, NOISINH, MALOP)

LOP (MALOP, TENLOP, TRGLOP, SISO, MAGVCN)

KHOA (MAKHOA, TENKHOA, NGTLAP, TRGKHOA)

MONHOC (MAMH, TENMH, TCLT, TCTH, MAKHOA)

DIEUKIEN (MAMH, MAMH_TRUOC)

GIAOVIEN(MAGV,HOTEN,HOCVI,HOCHAM,GIOITINH,NGSINH,NGVL,

HESO, MUCLUONG, MAKHOA)

GIANGDAY(MALOP,MAMH,MAGV,HOCKY, NAM,TUNGAY,DENNGAY)

KETQUATHI (MAHV, MAMH, LANTHI, NGTHI, DIEM, KQUA)

9

3.2 Ví d phép ch n ọ

 Tìm nh ng h c viên “Nam’ có n i sinh ọ ơ ở

s

ữ ‘TpHCM’

(Gioitinh=‘Nam’)(cid:217) (Noisinh=‘TpHCM’)(HOCVIEN) HOCVIEN

Mahv

HoTen

Gioitinh

Noisinh Malop

K1103 Ha Duy Lap

Nam

Nghe An

K11

K1102 Tran Ngoc Han Nu

Kien Giang K11

K1104 Tran Ngoc Linh Nu

Tay Ninh

K11

K1105 Tran Minh Long Nam

TpHCM

K11

K1106 Le Nhat Minh

Nam

TpHCM

K11

10

3.3 Phép chi u (Project) ế

 S d ng đ trích ch n giá tr m t vài thu c tính ị ộ ộ ọ

,...,

AA , 1

2

A k

ể ử ụ c a quan h ệ ủ p  Ký hi uệ : R )(

ế ộ

c chi u. trong đó Ai là tên các thu c tính đ ượ  K t qu tr v m t quan h có k thu c tính theo ộ ệ

t kê. Các dòng trùng nhau ch l y ả ả ề ộ nh li ỉ ấ

ế th t ứ ự ư ệ m t.ộ

11

 Phép chi u không có tính giao hoán ế

3.3 Ví dụ

 Tìm mã s , h tên nh ng h c viên “Nam’ có n i sinh

ố ọ

ơ

‘TpHCM’

p

(Gioitinh=‘Nam’)(cid:217) (Noisinh=‘TpHCM’)(HOCVIEN)

s Mahv,Hoten

HOCVIEN

Mahv

HoTen

Gioitinh

Noisinh Malop

K1103 Ha Duy Lap

Nam

Nghe An

K11

K1102 Tran Ngoc Han Nu

Kien Giang K11

K1104 Tran Ngoc Linh Nu

Tay Ninh

K11

K1105 Tran Minh Long Nam

TpHCM

K11

K1106 Le Nhat Minh

Nam

TpHCM

K11 12

3.4 Phép gán (Assignment)

câu truy v n ph c t p. ấ

ứ ạ

ể ễ ả B

 Dùng đ di n t  Ký hi uệ : A ‹  Ví dụ:

R(HO,TEN,LUONG)‹

p

HONV,TENNV,LUONG(NHANVIEN)

c gán

ế

ượ

 K t qu bên ph i c a phép gán đ cho bi n quan h n m bên trái.

ả ủ ệ ằ

ả ế

13

3.5 Các phép toán t p h p ợ

i thi u 3.5.1 Gi ệ 3.5.2 Phép h iộ 3.5.3 Phép trừ 3.5.4 Phép giao 3.5.5 Phép tích

14

3.5.1 Gi

i thi u

ệ ừ

ự ợ ủ ế ậ ọ ộ

ấ ệ lý thuy t t p h p c a toán h c: phép h i (R phép giao (R˙ S), phép tr (R-S), phép tích (R

 Các phép toán th c hi n trên 2 quan h xu t phát t ¨ S), · S). ừ  Đ i v i các phép h i, giao, tr , các quan h R và S ố ớ ừ ệ ộ

ả ằ

ả ợ ng thu c tính c a R và S ph i b ng nhau:

 Mi n giá tr c a thu c tính ph i t

ng thích

ả ươ

ị ủ dom(Ai)=dom(Bi)

ph i ả kh h p:  S l ố ượ ộ R(A1,A2,…An) và S(B1,B2,…Bn)

 Quan h k t qu c a phép h i, giao, tr có cùng tên ệ ế ả ủ ừ ộ

15

ộ ệ ầ ớ thu c tính v i quan h đ u tiên.

3.5.2 Phép h i (Union)

˛= |{ StRtt }

˛ (cid:218) ¨ : trong đó R,S là ị

SR ả ợ  Ví dụ: H c viên đ

c khen th ng đ t 1 ho c  Ký hi uệ : R¨ S  Đ nh nghĩa hai quan h kh h p. ệ ượ ọ ưở ặ ợ

đ t 2ợ

DOT1

DOT2

Mahv

Hoten

Mahv

Hoten

Mahv

Hoten

K1101 Le Kieu My

K1103 Le Van Tam

K1101 Le Kieu My

K1103 Le Van Tam

K1114 Tran Ngoc Han

K1114 Tran Ngoc Han

K1114 Tran Ngoc Han

K1203 Le Thanh Hau

K1203 Le Thanh Hau

K1308 Nguyen Gia

K1308 Nguyen Gia

DOT1¨ DOT2

16

3.5.3 Phép tr (Set Difference)

˛= |{ StRtt }

ˇ (cid:217) - : trong đó R,S là ị

SR ả ợ  Ví dụ: H c viên đ

ng đ t 1 nh ng ưở ư ợ

c khen th không đ  Ký hi uệ : R-S  Đ nh nghĩa hai quan h kh h p. ệ ượ ọ ượ c khen th ng đ t 2 ợ ườ

DOT1

DOT2

Mahv

Hoten

Mahv

Hoten

Mahv

Hoten

K1103 Le Van Tam

K1103 Le Van Tam

K1101 Le Kieu My

K1203 Le Thanh Hau

K1114 Tran Ngoc Han

K1114 Tran Ngoc Han

DOT1- DOT2

K1203 Le Thanh Hau

K1308 Nguyen Gia

17

3.5.4 Phép giao (Set-Intersection)

˛= |{ StRtt }

˛ (cid:217) ˙ : trong đó R,S là ị

hai quan h kh h p. Ho c

SR ả ợ  Ví dụ: H c viên đ

ng c hai đ t 1 và c khen th  Ký hi uệ : R˙ S  Đ nh nghĩa ệ ọ ặ R˙ S = R – (R – S) ợ ưở ả ượ

2

KT_D1

Mahv

Hoten

KT_D2

Mahv

Hoten

K1114 Tran Ngoc Han

Mahv

Hoten

K1103 Le Van Tam

K1101 Le Kieu My

K1114 Tran Ngoc Han

K1114 Tran Ngoc Han

K1203 Le Thanh Hau

DOT1˙

DOT2

K1308 Nguyen Gia

18

3.5.5 Phép tích (1)

SR

˛ (cid:217) ˛ :

=· SstRrtstrt { } ả

/ ộ

KQ(A1,A2,…Am,B1,B2,…Bn) ‹

 Ký hi uệ : R· S  Đ nh nghĩa  N u R có n b và S có m b thì k t qu là n*m b ộ ị ế ế ộ

R(A1,A2,…Am) · ế ợ

S(B1,B2,…Bn) ọ

ườ

đ k t h p các b có liên quan t ng dùng k t h p v i các phép ch n ớ hai quan h . ệ ừ ộ

hai quan h HOCVIEN và MONHOC,

19

ợ ọ

ệ h c viên đăng ký ng h p nào “ ườ s không có b t kỳ đi u ki n ề ấ ả ử t c nh ng tr ọ ”, gi ệ

 Phép tích th ể ế ợ  Ví dụ: t ừ có t ấ ả ữ h c môn h c ọ nào

3.5.5 Phép tích (2)

MONHOC

HOCVIEN

Mahv

Hoten

Mamh

Mamh

Mahv

Hoten

K1103 Le Van Tam

CTRR

CTRR

K1103 Le Van Tam

K1114 Tran Ngoc Han CTRR

THDC

K1114 Tran Ngoc Han

K1203 Le Thanh Hau

CTRR

CTDL

K1203 Le Thanh Hau

K1103 Le Van Tam

THDC

K1114 Tran Ngoc Han THDC

K1203 Le Thanh Hau

THDC

K1103 Le Van Tam

CTDL

K1114 Tran Ngoc Han CTDL

K1203 Le Thanh Hau

CTDL

HOCVIEN· MONHOC

20

3.6 Phép k tế

nhiên

ế ự

3.6.1 Phép k tế 3.6.2 Phép k t b ng, phép k t t ế ằ 3.6.3 Phép k t ngoài ế

21

3.6.1 Phép k t (Theta-Join) (1)

ế

ươ phép ch n. Đi u ki n ch n g i là nh phép tích k t h p v i ự ư ề ọ ớ ế ợ ệ ế . đi u ki n k t ng t ệ ọ

R

 Theta-join (q ): T ề ọ p  Ký hi uệ :  S

ệ  Các b có giá tr NULL t

trong đó R,S là các quan h , p là đi u ki n k t ệ ế

ề ộ

i thu c tính k t n i không ộ ị ế ố

ấ ạ ả ủ

xu t hi n trong k t qu c a phép k t. ế  Phép k t v i đi u ki n t ng quát g i là là ệ ế ớ ệ ổ

22

„ ề m t trong nh ng phép so sánh ( ế ọ ,= ,>,‡ ế ớ q q -k t v i ,< ,£ ) ữ ộ

3.6.1 Phép k t (2)

ế

R

> BA 1 2  S B2 B1

A1

A2

B3

R

S

1

2

4

0

8

A1

A2

B1

B3

B2

1

2

7

0

1

2

1

0

8

2

1

8

4

0

8

8

1

7

7

8

1

8

7

0

1

0

0

8

4

0

8

4

8

2

0

4

8

1

7

0

8

4

4

0

8

3

0

2

5

1

8

4

7

0

1

8

4

5

1

2

23

3.6.2 Phép k t b ng, k t t

nhiên

ế ằ

ế ự

 N u ế q ế ọ

Mahv=

Trglop 

LOP

ằ phép k t b ng (equi-join). là phép so sánh b ng (=), phép k t g i là ế ằ

Ký hi uệ :  N u đi u ki n c a equi-join là các thu c tính ề ế ố

ạ ỏ ớ

KETQUATHI

HOCVIEN

HOCVIEN ộ ệ ủ nhiên (natural- gi ng nhau thì g i là phép k t t ế ự ọ join). Khi đó k t qu c a phép k t lo i b b t 1 ả ủ ế ế c t (b 1 trong 2 c t gi ng nhau) ố ộ ộ Ký hi uệ : ho cặ

Mahv  Mahv *

KETQUATHI

HOCVIEN

24

3.6.3 Phép k t ngoài (outer join)

ế

ở ộ ự ệ

ế

 M r ng phép k t đ tránh m t thông tin ế ể  Th c hi n phép k t và sau đó thêm vào k t qu ế ả ế c a phép k t các b c a quan h mà không phù ệ ộ ủ ủ h p v i các b trong quan h kia. ợ ệ ớ ộ

 Có 3 lo i: ạ

 Left outer join R S  Right outer join R S  Full outer join R S t c các h c viên và đi m ấ ả ọ

 Ví dụ: In ra danh sách t ọ

25

ể s c a các môn h c mà h c viên đó thi (n u có) ố ủ ế ọ

3.6.3 Phép k t ngoài (2) ế

HOCVIEN

mahv  HOCVIEN KETQUATHI

Mahv

Hoten

Mahv

Hoten

Mahv Mamh Diem

HV01 Nguyen Van Lan

HV01 Nguyen Van Lan HV01 CSDL

7.0

HV02 Tran Hong Son

HV01 Nguyen Van Lan HV01 CTRR 8.5

HV03 Nguyen Le

HV02 Tran Hong Son

HV02 CSDL

8.5

HV04 Le Minh

HV03 Nguyen Le

HV03 CTRR 9.0

KETQUATHI

HV04 Le Minh

Null

Null

Null

Mahv

Mamh Diem

HV01

CSDL

7.0

HV02

CSDL

8.5

HV01

CTRR 8.5

HV03

CTRR 9.0

26

3.7 Phép chia (Division)

=

s

S

,

st ),(

R }

˛ ˛ " ị

‚=  Đ nh nghĩa SRQ t /{ :  R và S là hai quan h , Rệ ủ

˘ ộ

t là t p + và S+ l n l ậ ầ ượ +„ là t p ậ ệ ề +. Q là k t qu phép chia ả ế

 Có th di n đ t b ng phép toán đ i s nh sau: ạ ố ư

+

+

R

S

p

‹ thu c tính c a R và S. Đi u ki n S con không b ngằ c a Rủ gi a R và S, Q + = R+ - S+ ạ ằ ể ễ p T R ( ) 1 -

+

+

((

)

R

)

TS 1

T 2

- · ‹ -

T

R S TT 2 1

27

- ‹

3.7 Phép chia (2)

KETQUATHI

MONHOC

Mahv

Mahv Mamh Diem

Mamh

Tenmh

HV01

HV01 CSDL

7.0

CSDL Co so du lieu

HV03

HV02 CSDL

8.5

CTRR Cau truc roi rac

KETQUA‚ MONHOC

HV01 CTRR 8.5

THDC Tin hoc dai cuong

HV03 CTRR 9.0

MONHOC

HV01 THDC 7.0

HV02 THDC 5.0

HV03 THDC 7.5

KETQUA

KETQUATHI

[

Mahv

,

Mamh

]

HV03 CSDL

6.0

MONHOC

MONHOC [

Mamh

]

KETQUA

28

3.8 Hàm tính toán và gom nhóm (1)

 Hàm tính toán g m các hàm: avg(giatri), ồ

min(giatri), max(giatri), sum(giatri), count(giatri).

 Phép toán gom nhóm:

`

E

)

,...,

G

(

(

),...,

()

GG , 1

2

n

AFAF ), 1 2

1

2

AF ( n n

ứ ạ ố

ệ ỗ

ế

 E là bi u th c đ i s quan h  Gi là thu c tính gom nhóm (r ng, n u không gom nhóm) ộ  Fi là hàm tính toán  Ai là tên thu c tính

29

3.8 Hàm tính toán và gom nhóm (2)

 Đi m thi cao nh t, th p nh t, trung bình

ấ c a môn CSDL ? ủ

s

(

KETQUATHI

)

=

max(

Diem

),

min(

Diem

),

agv

(

Diem

)

Mamh

'

CSDL'

 Đi m thi cao nh t, th p nh t, trung bình

ể c a t ng môn ? ủ ừ

`

KETQUATHI

)

Mamh

max(

Diem

),

min(

Diem

),

avg

(

Diem

()

30

`

Bài t pậ

L

c đ CSDL qu n lý bán hàng g m có các quan h sau:

ượ ồ

KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK)

NHANVIEN (MANV,HOTEN, NGVL, SODT)

SANPHAM (MASP,TENSP, DVT, NUOCSX, GIA)

HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA)

CTHD (SOHD,MASP,SL)

31

Mô t

các câu truy v n sau b ng ĐSQH

1.

ẩ 30.000 đ n 40.000 ế

2.

3.

c bán ra trong ngày 1/1/2007.

ẩ ẩ

ả ả

In ra danh sách các s n ph m (MASP,TENSP) do “Trung Qu c” s n xu t có giá t ấ ả In ra danh sách các khách hàng (MAKH, HOTEN) đã mua hàng trong ngày 1/1/2007. In ra danh sách các s n ph m (MASP,TENSP) do “Trung Quoc” s n xu t ho c các s n ph m đ ượ ả 4. Tìm các s hóa đ n mua cùng lúc 2 s n ph m có mã s “BB01” và

ơ

5.

t c các s n ph m do Singapore s n

“BB02”. In ra danh sách các s n ph m (MASP,TENSP) do “Trung Quoc” ả s n xu t không bán đ c trong năm 2006. ượ ả 6. Tìm s hóa đ n đã mua t ẩ ấ ả

ấ ố

ơ

xu tấ

32

Câu 1

 In ra danh sách các s n ph m (MASP,

ả TENSP) do “Trung Qu c” s n xu t có giá t ừ

30.000 đ n 40.000. ế

=

SANPHAM

((:

nuocsx

'

TrungQuoc

)'

.30(

000

gia

.40

000

))[

masp

,

tensp

]

p

SANPHAM

=

£ £ (cid:217)

s tensp

masp

,

(

nuocsx

' TrungQuoc

)'

000.30(

gia

000.40

)

33

£ £ (cid:217)

Câu 2

 In ra danh sách các khách hàng (MAKH,

HOTEN) đã mua hàng trong ngày 1/1/2007.

=

(cid:246) (cid:230)

MAKH 

KHACHHANG

HOADON

(:

nghd

/1/1#

2007

[)#

makh ,

hoten

]

(cid:247) (cid:231)

p

MAKH 

HOADON

KHACHHANG

)

=

s hoten

masp

,

(

nghd

/1/1#

2007

()#

34

ł Ł

Câu 3

 In ra danh sách các s n ph m do “Trung Quoc” c bán ra trong ả ả ẩ ẩ ượ

=

s n xu t ho c các s n ph m đ ặ ấ ả ngày 1/1/2007.

SANPHAM

(:

nuocsx

'

TrungQuoc

)['

masp

,

tensp

]

A

=

MASP 

SOHD 

(

SANPHAM

CTHD

HOADON

(:

nghd

/1/1#

2007

))[#

masp

,

tensp

]

B

C

BA

p

¨ ‹

(

SANPHAM

)

A

=

s tensp

masp

,

nuocsx

' TrungQuoc

'

Ho cặ

p

SOHD 

MASP 

s ((

(

HOADON

)

CTHD

)

SANPHAM

)

B

=

nghd

/1/1#

2007

#

tensp

, masp BA

C

35

¨ ‹

Câu 4

 Tìm các s hóa đ n đã mua cùng lúc các s n

ơ ph m có mã s “BB01” và “BB02”.

ố =

'

CTHD

(:

masp

BB

)['01

sohd

]

A

=

'

(:

masp

BB

)['02

sohd

]

B C

CTHD BA

p

s

˙ ‹

A

( CTHD

)

=

sohd

masp

'

BB

'01

Ho cặ

p

s

B

( CTHD

)

=

masp

'

BB

'02

C

sohd BA

36

˙ ‹

Câu 5

 In ra danh sách các s n ph m do “TrungQuoc” s n ả ẩ

p

xu t không bán đ ả c trong năm 2006. ấ ượ

A

(

SANPHAM

)

=

s tensp

masp

,

nuocsx

TrungQuoc '

'

MASP 

SOHD 

CTHD

)

)

(( p

B C

HOADON B )

(

=

=

nuocsx

TrungQuoc '

)'

(

year

(

nghd

2006

)

)

(

‹ (cid:217)

D

SANPHAM s tensp )

masp , CA

(

37

- ‹

Câu 6

 Tìm s hóa đ n đã mua t

t c các s n ơ ấ ả ph m do Singapore s n xu t ấ

p

(

SANPHAM

)

A

=

s masp

nuocsx

'

Singapore

'

s

p

MASP 

(

SANPHAM

CTHD

)

B

=

sohd

nuocsx

'

Singapore

'

C

, masp AB

38

‚ ‹