Вы находитесь на странице: 1из 243

TRNG I HC CNG NGHIP TP/HCM

TRUNG TM CNG NGH THNG TIN -o0o-

GIO TRNH H C S D LIU


PHN 1: C S D LIU PHN 2: SQL SERVER

THNH PH H CH MINH THNG 8/2008

TRNG I HC CNG NGHIP TP/HCM


TRUNG TM CNG NGH THNG TIN -o0o-

PHN 1

C S D LIU

Giao trnh C S D LIEU

Trang

M CL C
Chng 1 . ..................................................................................................................................................3 MO HNH QUAN HE ...............................................................................................................................3 I NGUYEN NHAN RA I CUA MO HNH QUAN HE ............................................................3 II C S D LIEU VA HE QUAN TR C S D LIEU ...........................................................3 1 CSDL la g?................................................................................................................................4 2 He quan tr CSDL ......................................................................................................................4 3 Ngi dung (User) .....................................................................................................................4 4 CSDLQH va He tap tin theo loi cu...........................................................................................5 III MO HNH QUAN HE ...............................................................................................................5 1 Mo hnh quan he la g ?.............................................................................................................5 2 Cac khai niem c ban cua mo hnh quan he ............................................................................6 3 Cac phep toan tap hp.............................................................................................................10 4 Cac phep toan quan he ............................................................................................................11 5 Cac tnh chat cua ai so quan he ............................................................................................12 IV MO HNH THC THE KET HP .........................................................................................14 1 Gii thieu mo hnh thc the ket hp.......................................................................................14 2 Chuyen t mo hnh thc the ket hp sang lc o CSDL.....................................................17 V BAI TAP ......................................................................................................................................19 1 Phep toan tap hp va phep toan quan he...............................................................................19 2 Mo hnh thc the ket hp ........................................................................................................19 Chng 2 . ................................................................................................................................................22 NGON NG TRUY VAN SQL ..............................................................................................................22 I CACH TAO QUAN HE BANG ACCESS .................................................................................22 II CAU LENH TRUY VAN ............................................................................................................22 1 BIEU THC (EXPRESSION) ................................................................................................22 2 CAU LENH SQL ....................................................................................................................25 III BAI TAP ..................................................................................................................................28 Chng 3 . ................................................................................................................................................31 RANG BUOC TOAN VEN QUAN HE .................................................................................................31 I RANG BUOC TOAN VEN - CAC YEU TO CUA RANG BUOC TOAN VEN ....................31 1 Rang Buoc Toan Ven ..............................................................................................................31 2 Cac Yeu To Cua Rang Buoc Toan Ven.................................................................................31 II PHAN LOAI RANG BUOC TOAN VEN..................................................................................32 1 Rang buoc toan ven lien bo ....................................................................................................33 2 Rang buoc toan ven ve phu thuoc ton tai: .............................................................................33 3 Rang buoc toan ven ve mien gia tr .......................................................................................33 4 Rang buoc toan ven lien thuoc tnh........................................................................................34 5 Rang buoc toan ven lien thuoc tnh lien quan he..................................................................34 6 Rang buoc toan ven ve thuoc tnh tong hp ..........................................................................34 III BAI TAP ..................................................................................................................................34 Chng 4 . ................................................................................................................................................36 PHU THUOC HAM ................................................................................................................................36 I KHAI NIEM PHU THUOC HAM..............................................................................................36
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU 1 2 3 4

Trang

nh ngha phu thuoc ham ......................................................................................................37 Phu thuoc ham hien nhien ......................................................................................................37 Thuat toan Satifies...................................................................................................................37 Cac phu thuoc ham co the co..................................................................................................38 II HE LUAT DAN ARMSTRONG.................................................................................................41 1 Phu thuoc ham c suy dien logic t F ................................................................................41 2 He luat dan Amstrong .............................................................................................................42 3 He luat dan Armstrong la ay u ...........................................................................................45 III THUAT TOAN TM F+ ...........................................................................................................46 1 Thuat toan c ban ....................................................................................................................46 2 Thuat toan cai tien...................................................................................................................47 IV BAI TAP ..................................................................................................................................47 Chng 5 . ................................................................................................................................................49 PHU CUA TAP PHU THUOC HAM .....................................................................................................49 I NH NGHA ..............................................................................................................................49 II PHU TOI THIEU CUA MOT TAP PHU THUOC HAM .........................................................49 1 Phu thuoc ham co ve trai d tha ...........................................................................................49 2 Tap phu thuoc ham co ve phai mot thuoc tnh ......................................................................50 3 Tap phu thuoc ham khong d tha .........................................................................................50 4 Tap phu thuoc ham toi thieu ...................................................................................................50 III KHOA CUA LC O QUAN HE.......................................................................................51 1 nh Ngha ...............................................................................................................................51 2 Thuat toan tm tat ca khoa ......................................................................................................52 IV BAI TAP ..................................................................................................................................54 Chng 6 . ................................................................................................................................................56 CHUAN HOA C S D LIEU............................................................................................................56 I DANG CHUAN CUA LC O QUAN HE ...........................................................................56 1 nh ngha cac dang chuan .....................................................................................................56 II PHEP TACH KET NOI BAO TOAN.........................................................................................61 1 Phep tach ket noi bao toan thong tin......................................................................................61 2 Phep tach bao toan phu thuoc ham ........................................................................................66 III THIET KE CSDL BANG CACH PHAN RA.........................................................................69 1 Phan ra thanh dang chuan BC (hay chuan 3) bao toan thong tin..........................................69 2 Phan ra thanh dang chuan 3 va bao toan thong tin va bao toan phu thuoc ham .............75 IV BAI TAP ..................................................................................................................................78

----oOo----

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang

Chng 1 . MO HNH QUAN HE


I NGUYEN NHAN RA I CUA MO HNH QUAN HE (RELATIONAL MODEL) Trong nhieu nam, cong nghe tnh toan va thong tin phat trien t nhng he thong ln, at tien, oc quyen en cac he thong m manh va khong at tien. S phat trien nay mang lai li ch to ln cho ngi dung cuoi bi s phat trien cua cac goi ng dung so nh x ly van ban, bang tnh ien t, van phong xuat ban, he quan ly c s d lieu, may tnh tr giup cong nghe phan mem.... Trc khi may tnh hoa c s d lieu c gii thieu, d lieu c lu tr theo kieu ien t thanh nhieu tap tin rieng biet s dung he tap tin (t ay ve sau ta goi he tap tin theo loi cu). Nhng tap tin nay c x ly bang cac ngon ng the he th ba nh COBOL, FORTRAN, PASCAL va ngay ca BASIC e tao ra cac giai phap cho cac van e cua doanh nghiep. Moi ng dung, chang han nh he tnh lng, he kho hay he thong ke toan se co mot tap cac tap tin rieng cha d lieu rieng. Cac ng dung nh vay tao ra ba van e sau: - Co s lien ket chat che gia cau truc luan ly va cau truc vat ly cua cac tap tin va chng trnh ng dung khai thac chung. ieu nay khien viec tao nen cac ng dung nay rat kho khan, ton nhieu thi gian va do vay ma ton kem trong bao tr he thong. - Co s d tha d lieu rat ln qua viec trung lap cac tap tin trong cac ng dung khac nhau. ieu nay tao ra nhng van e nh: d lieu thieu nhat quan, khong gian a b lang ph, thi gian bao tr va lu phong h cac tap tin gia tang, van e ve quan tr nh khong chu trong bao mat va to chc d lieu thieu thong nhat. Mot v du ien hnh ve s trung lap d lieu la: He quan ly nguon nhan lc bao gom ba he chnh: 1. He lng, he nay duy tr ngay cong va lng cho tat ca nhan vien. 2. He nhan s, he nay duy tr ly lch ca nhan, d lieu ve to chc, cong viec ao tao va v tr thang tien. 3. He hu, he nay quan tr cac qui tac lien quan en ngh hu, loai ngh hu. Chi tiet ve hu cua tng nhan vien. Van e phc tap la He lng thong thng c quan ly bi phong tai chanh, trong khi He nhan s va He hu c quan ly bi phong to chc. Ro rang, co nhieu d lieu ve nhan vien la chung cho ca ba he. Thng nhng he nay thc hien va gi gn rieng biet va chung tao s trung d lieu nhan vien ma chung dung. - Ngi s dung co t kha nang khai thac trc tiep d lieu. II C S D LIEU VA HE QUAN TR C S D LIEU (DATABASE AND DATABASE MANAGEMENT SYSTEM) Khi au, s gii thieu CSDL va HQTCSDL nham giai quyet cac van e cua he thong tin da tren cac tap tin theo loi cu (C1.I). ieu nay tao ra viec phat trien tren hai mi lam nam qua mot he CSDL quan he thng mai xuat hien cuoi nhng nam thap nien 70 va cac nam au cua thap nien 80. Trc khi xem xet CSDL va he QTCSDLQH giai quyet mot vai van e cua he thong tin theo loi cu nh the nao chung ta can lam ro vai khai niem.

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU 1 CSDL la g?

Trang

Mot c s d lieu co the nh ngha tam nh sau: mot cho cha co to chc tap hp cac tap tin d lieu co tng quan, cac mau tin va cac cot. Ngay nay CSDL ton tai trong moi ng dung thong dung, v du: - He kho va kiem ke. - He at cho may bay - He nguon nhan lc. - he dch vu cong cong nh cap nc, ien, kh ot - ieu khien qua trnh che tao va san xuat 2 He quan tr CSDL Mot he quan tr CSDL (HQTCSDL) la: - mot tap cac phan mem quan ly CSDL va cung cap cac dch vu x ly CSDL cho cac nhng ngi phat trien ng dung va ngi dung cuoi. - HQTCSDL cung cap mot giao dien gia ngi s dung va d lieu. - HQTCSDL bien oi CSDL vat ly thanh CSDL logic.

Da vao cach to chc d lieu, HQTCSDL c chia thanh nam loai: - loai phan cap nh he IMS cua IBM - loai mang nh IDMS cua Cullinet Software - Loai tap tin ao nh ADABAS cua Software AG - Loai quan he nh nh ORACLE cua Oracle, DB2 cua IBM, ACCESS cua Microsoft Access - Loai oi tng la mot tiep can kha mi trong thiet ke HQTCSDL va viec s dung loai nay sm tr nen pho bien Hien tai, loai HQTCSDL chnh c s dung trong cong nghe la loai HQTCSDL quan he (RDBMS). Loai nay a chiem lnh trong cong nghe tren 10-15 nam cuoi cung khi anh bat loai HQTCSDL phan cap va gan ay la HQTCSDL mang. 3 Ngi dung (User) Ngi dung khai thac CSDL thong qua HQTCSDL co the phan thanh ba loai: ngi quan tr CSDL, ngi phat trien ng dung va lap trnh, ngi dung cuoi. - Ngi quan tr CSDL, hang ngay, chu trach nhiem quan ly va bao tr CSDL nh: + s chnh xac va toan ven cua d lieu va ng dung trong CSDL, s bao mat cua CSDL + lu phong h va phuc hoi CSDL + gi lien lac vi ngi phat trien ng dung, ngi lap trnh va ngi dung cuoi. + bao am s hoat ong troi chay va hieu qua cua CSDL va HQTCSDL - Ngi phat trien va lap trnh ng dung la nhng ngi chuyen nghiep ve may tnh co trach nhiem thiet ke, tao dng va bao tr he thong tin cho ngi dung cuoi.
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU -

Trang

Ngi dung cuoi la nhng ngi khong chuyen ve may tnh nhng ho la cac chuyen gia trong cac lanh vc khac co trach nhiem cu the trong to chc. Ho khai thac CSDL thong qua he c phat trien bi ngi phat trien ng dung hay cac cong cu truy van cua HQTCSDL. CSDLQH va He tap tin theo loi cu i Van e 1: cau truc logic va cau truc vat ly

Tiep can CSDL a giai quyet 3 van e cua he tap tin theo loi cu:

Tap tin vat ly, mau tin va cot

Kien truc ben trong HQTCSDL quan he tach biet ro rang gia: - cau truc luan ly cua tat ca tap tin va chng trnh ng dung khai thac tap tin nay va - cau truc vat ly cua csdl va phan lu tr cac tap tin. Tiep can nay tao cho ngi quan tr CSDL co the thay oi cau truc vat ly hay ni lu tr cua tap tin ma khong anh hng en chng trnh ng dung. ii Van e 2: d tha d lieu Khi HQTCSDLQH c gii thieu, nhieu to chc mong tch hp cac tap tin a phan tan khap trong to chc vao mot CSDL tap trung. D lieu co the chia se cho nhieu ng dung khac nhau va ngi s dung co the khai thac ong thi cac tap con d lieu lien quan en ho. ieu nay lam han che s d tha d lieu. iii Van e 3: S khai thac d lieu cua ngi s dung Trong he QTCSDLQH ngi dung co the trc tiep khai thac d lieu thong qua viec s dung cac cau truy van hay cac cong cu bao cao c cung cap bi he QTCSDL. III MO HNH QUAN HE (RELATIONAL MODEL) 1 Mo hnh quan he la g ? Mo hnh C s d lieu Quan he (goi tat la Mo hnh Quan he) do E.F Codd e xuat nam 1971. Mo hnh nay bao gom: - Mot he thong cac ky hieu e mo ta d lieu di dang dong va cot nh quan he, bo, thuoc tnh, khoa chnh, khoa ngoai, ... - Mot tap hp cac phep toan thao tac tren d lieu nh phep toan tap hp, phep toan quan he. - rang buoc toan ven quan he. Cac he HQTCSDLQH ngay nay c xay dng da vao ly thuyet cua mo hnh quan he.

Tap tin vat ly, mau tin va cot

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang

Muc ch cua mon hoc nay giup cho sinh vien nam c kien truc tong quat ve mo hnh quan he va ap dung no e lap mo hnh d lieu quan he co hieu qua trong lu tr va khai thac. MASV HOTENH
99001 99002 99001 99005 TRAN DAN THU NGUYEN HA DA THAO TRAN DAN THU LE THANH TRUNG

MONHOC
CO SO DU LIEU CO SO DU LIEU TIN HOC VAN PHONG TIN HOC VAN PHONG

TENKHOA
CONG NGHE THONG TIN CONG NGHE THONG TIN CONG NGHE THONG TIN ANH VAN

DIEMTHI
3.0 8.0 6.0 5.0

Chang han vi bai toan quan ly iem thi cua sinh vien; neu lu tr d lieu theo dang bang vi cac cot MASV, HOTEN, MONHOC,TENKHOA, DIEMTHI th cac ga tr cua cac cot HOTEN, MONHOC, TENKHOA se b trung lap. S trung lap nay gay nen mot so van e: - Ta khong the lu tr mot sinh vien mi khi sinh vien nay cha co iem thi - Khi can sa oi ho ten sinh vien th ta phai sa tat ca cac dong co lien quan en sinh vien nay. ieu nay de gay ra tnh trang d lieu thieu nhat quan. - Khi co nhu cau xoa iem thi cua mot sinh vien keo theo kha nang xoa luon ho ten sinh vien o. Viec lu tr d lieu nh tren khong ung vi mo hnh quan he. e lu tr ung vi mo hnh quan he ta phai thay MONHOC bang MAMH, thay TENKHOA bang MAKHOA, tach mot bang d lieu ln o ra thanh nhieu bang con, nh mo hnh di. MASV MAMH MAKHOA DIEMTHI MASV HOTEN 99001 CSDL CNTT 3.0 99001 TRAN DAN THU 99002 CSDL CNTT 8.0 99002 NGUYEN HA DA THAO 99001 THVP CNTT 6.0 99005 LE THANH TRUNG 99005 THVP AV 5.0 MAMH TENMH SOTIET CSDL CO SO DU LIEU 90 THVP TIN HOC VAN PHONG 90 2 i Cac khai niem c ban cua mo hnh quan he Thuoc tnh (Attribute, Arity) MAKHOA TENKHOA CNTT CONG NGHE THONG TIN AV ANH VAN

Chang han vi bai toan quan ly iem thi cua sinh vien; vi oi tng sinh vien ta can phai chu y en cac ac trng rieng nh ho ten, ngay sinh, n (gii tnh), tnh thng tru, hoc bong, lp ma sinh vien theo hoc,. . . cac ac trng nay goi la thuoc tnh. Cac thuoc tnh c phan biet qua ten goi va phai thuoc vao mot kieu d lieu nhat nh (so, chuoi, ngay thang, logic, hnh anh,). Kieu d lieu ay la kieu n. Trong cung mot oi tng khong c co hai thuoc tnh cung ten. Thong thng moi thuoc tnh ch chon lay gia tr trong mot tap con cua kieu d lieu va tap hp con o goi la mien gia tr cua thuoc tnh o. Thuoc tnh ngay trong thang th co kieu d lieu la so nguyen, mien gia tr cua no la 1 en (toi a la) 31. Hoac iem thi cua sinh vien ch la cac so nguyen t 0 en 10. Thng ngi ta dung cac ch cai hoa A,B,C, e bieu dien cac thuoc tnh, hoac A1,A2,., An e bieu dien mot so lng ln cac thuoc tnh.

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU ii Lc o Quan He (Relation Schema)

Trang

Tap tat ca cac thuoc tnh can quan ly cua mot oi tng cung vi moi lien he gia chung c goi la lc o quan he. Lc o quan he Q vi tap thuoc tnh {A1,A2,...,An} c viet la Q(A1,A2,...,An). Tap cac thuoc tnh cua Q c ky hieu la Q+. Chang han lc o quan he sinh vien (at ten la Sv) vi cac thuoc tnh nh tren la: Sv(MASV, HOSV,TENSV,NU, NGAYSINH, MALOP, HOCBONG, TINH) Thng khi thanh lap mot lc o, ngi thiet ke luon gan cho no mot y ngha nhat nh, y ngha o goi la tan t cua lc o quan he o. Da vao tan t ngi ta xac nh c tap thuoc tnh khoa cua lc o quan he (khai niem khoa se c trnh bay phan sau). Khi phat bieu tan t cho mot lc o quan he, ngi thiet ke can phai mo ta ay u y ngha e ngi khac tranh hieu nham. Chang han tan t cua lc o quan he tren la:moi sinh vien co mot ma sinh vien (MASV) duy nhat, moi ma sinh vien xac nh tat ca cac thuoc tnh cua sinh vien o nh ho ten (HOTEN), n (NU) ,ngay sinh (NGAYSINH), lp theo hoc (MALOP), hoc bong (HOCBONG), tnh c tru (TINH). Nhieu lc o quan he cung nam trong mot he thong quan ly c goi la mot lc o c s d lieu. V du lc o c s d lieu e quan ly iem sinh vien co the gom cac lc o quan he sau: Sv(MASV, HOSV,TENSV, NU, NGAYSINH, MALOP, TINH, HOCBONG) Lop(MALOP,TENLOP,SISO,MAKHOA) Kh(MAKHOA,TENKHOA, SOCBGD) Mh(MAMH, TENMH, SOTIET) Kq(MASV, MAMH, DIEMTHI) Phan giai thch cac thuoc tnh: MASV Ma sinh vien HOTEN Ten sinh vien NU N NGAYSINH ngay sinh LOP lp TENLOP ten lp SISO s so lp MAKHOA ma khoa HOCBONG hoc bong TINH tnh TENKHOA ten khoa SOCBGD so can bo giang day MAMH ma mon hoc TENMH ten mon hoc SOTIET so tiet DIEMTHI iem thi iii Quan He (Relation) S the hien cua lc o quan he Q mot thi iem nao o c goi la quan he, ro rang la tren mot lc o quan he co the nh ngha rat nhieu quan he. Thng ta dung cac ky hieu nh R, S, Q e ch cac lc o quan he, con quan he c nh ngha tren no tng ng c ky hieu la la r, s, q. iv Bo (Tuple) Bo la tap moi gia tr lien quan cua tat ca cac thuoc tnh cua mot lc o quan he.
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang

Chang han quan he sau co 2 bo. NU NGAYSINH MALOP TINH HOCBONG MASV HOTEN 99001 TRAN DAN THU TRUE 15-03-1977 CTH2B TIEN GIANG 120000 99002 NGUYEN HA DA THAO TRUE 25-04-1986 TCTH29C TPHCM 120000 Thng ngi ta dung cac ch cai thng (nh t,p,q,) e bieu dien cac bo. Chang han e noi bo t thuoc quan he r ta viet: t r. Ve trc quan th moi quan he xem nh mot bang, trong o moi cot la thong tin ve mot thuoc tnh, moi dong la thong tin ve mot bo. Chang han sau ay la cac the hien cua cac quan he nh ngha tren lc o c s d lieu quan ly sinh vien tren:
rSv MASV 99001 99002 99003 99004 99005 99006 99007 99008 99009 99010 99011 99012 99013 99014 99015 99016 99017 99018 99019 99020 99021 99022 99023 HOTEN TRAN DAN NGUYEN HA DA PHAM ANH NGUYEN NGOC LE THANH NGUYEN HONG VU THI TRUONG KIM TON THAT HA VAN BUI VAN LE HUU VU THANH TRAN QUANG PHAM VAN HUYNH THANH TRAN MINH PHAN VAN PHAM THI NGUYEN THI PHAM TAN TRAN PHUOC LE THI THANH NU NGAYSINH TRUE 15-03-1977 TRUE 25-04-1986 FALSE 16-08-1977 FALSE 24-12-1980 FALSE 20-11-1978 FALSE 19-09-1979 TRUE 15-03-1975 FALSE 15-05-1975 FALSE 26-06-1976 FALSE 14-04-1973 FALSE 22-12-1972 FALSE 28-08-1977 FALSE 29-03-1979 FALSE 30-05-1981 FALSE 30-06-1976 FALSE 29-07-1982 FALSE 21-08-1977 FALSE 19-05-1979 FALSE 16-06-1982 TRUE 11-11-1981 FALSE 01-01-1980 FALSE 12-12-1979 TRUE 11-11-1980 MALOP CTH2B CTH2B CTH2B CTH2B CAV1 CAV1 CAV1 CTH2B CTH2B CAV1 CAV1 CT2 CTH2B CT2 CT2 CT2 CTH2B CDL1 CDL1 CTH2B CDL1 CTH2B CDL1 TINH HOCBONG TIEN GIANG 120000 TPHCM 120000 BAC LIEU CA MAU CA MAU 120000 SOC TRANG CA MAU HA NOI VUNG TAU 60000 BAC LIEU AN GIANG CAN THO 60000 KIEN GIANG 60000 DONG THAP 120000 CA MAU TPHCM 80000 TRA VINH DONG THAP 120000 CAN THO 120000 CA MAU 120000 CA MAU BAC LIEU 60000 TPHCM 120000

THU THAO HUY THUAN TRUNG VAN LOAN QUANG QUYEN LONG ANH CHI CONG CUONG HAI HOANG LAM SANG HUYEN NGAN QUANG QUYEN VAN

rKh MAKHOA CNTT AV HOA MAY TNH XD DL TTIN SINH VL

TENKHOA
CONG NGHE THONG TIN ANH VAN HOA CHAT MOI TRUONG XAY DUNG DU LICH TOAN -TIN HOC CONG NGHE SINH HOC VAT LY

SOCBGD 60 60 20 10 10 5 30 30 20

rMh MAMH TENMH CSDL CO SO DU LIEU FOX FOXPRO THVP TIN HOC VAN PHONG AVTH ANH VAN TIN HOC KTS KY THUAT SO CTDL CAU TRUC DU LIEU TTNT TRI TUE NHAN TAO MANG MANG MAY TINH CB VB VI SUAL BASIC

SOTIET 90 120 90 60 60 60 45 45 90

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU T


IEN T

Trang 20 AC LR INTER HDH KTLT VIFOX


ACCESS LAP RAP MAY TINH CAC DICH VU INTERNET HE DIEU HANH KY THUAT LAP TRINH VISUAL FOXPRO

180 60 45 60 45 60

rKq MASV 99001 99002 99003 99004 99005 99001 99002 99003 99004 99005 99020 99021 99022 99023 99023

MAMH CSDL CSDL CSDL CSDL CSDL THVP THVP THVP THVP THVP THVP MANG MANG CSDL MANG

DIEMTHI 3.0 8.0 8.0 3.0 2.0 6.0 3.0 8.0 9.0 5.0 7.0 7.0 6.0 8.0 6.0

99006 99007 99008 99009 99010 99011 99012 99013 99014 99015 99023 99023 99023 99023 99023

MANG MANG MANG MANG TTNT FOX FOX FOX VB VB TTNT THVP FOX VB KTS

6.0 2.0 7.0 3.0 5.0 4.0 5.0 7.0 7.0 3.0 3.0 6.0 8.0 9.0 6.0

99016 99017 99017 99017 99017 99017 99002 99004 99018 99019 99021 99021 99022 99022

KTS KTS FOX MANG CSDL TTNT MANG MANG TTNT CSDL CSDL THVP FOX TTNT

7.0 7.0 4.0 8.0 8.0 6.0 8.0 4.0 7.0 8.0 8.0 9.0 5.0 6.0

rLop MALOP CTH2B TCTH29C CAV1 CT2 CDL1 v

TENLOP CAO ANG TIN HOC KHOA 2000B TRUNG CAP TIN HOC KHOA 29 C CAO ANG ANH VAN 1 CAO ANG IEN T 2 CAO ANG DU LCH 1

SISO 60 121 120 80 42

MAKHOA cntt cntt av t dl

Khoa (Key, Candidate Key):

Cho lc o quan he R, SR+. S c goi la mot sieu khoa (superkey) cua lc o quan he R neu vi hai bo tuy y trong quan he R th gia tr cua cac thuoc tnh trong S la khac nhau. Mot lc o quan he co the co nhieu sieu khoa. Sieu khoa cha t thuoc tnh nhat c goi la khoa ch nh, trong trng hp lc o quan he co nhieu khoa ch nh, th khoa c chon e cai at goi la khoa chnh (Primary key) (trong cac phan sau khoa chnh c goi tat la khoa) Cac thuoc tnh tham gia vao mot khoa c goi la thuoc tnh khoa (prime key), ngc lai c goi la thuoc tnh khong khoa (non prime key). Mot thuoc tnh c goi la khoa ngoai neu no la thuoc tnh cua mot lc o quan he nay nhng lai la khoa chnh cua lc o quan he khac. V du: Ta hay xem lc o quan he sau:
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 10

Xe(SODANGBO,QUICACH, INHDANG,MAUSAC,SOSUON,SOMAY,MAXE,QUOCGIA) Sieu khoa: (SOSUON,QUICACH),... Khoa ch nh: (SODANGBO,QUOCGIA), (SOSUON), (SOMAY), (MAXE) Khoa chnh: MAXE Thuoc tnh khoa: SODANGBO,QUOCGIA, SOSUON, SOMAY, MAXE Thuoc tnh khong khoa: QUICACH, HINHDANG, MAUSAC Khoa cua Sv la (MASV), Khoa cua Mh la (MAMH), khoa cua Kh la (MAKHOA), khoa cua Kq la (MASV,MAMH) khoa cua Lop la MALOP, trong Lop thuoc tnh MAKHOA la khoa ngoai 3 i Cac phep toan tap hp (set operation) Phep hp (Union operation)

Cho hai lc o quan he Q1 va Q2 co cung tap thuoc tnh {A1,A2,..,An}. r1 va r2 lan lt la hai quan he tren Q1 va Q2. Phep hp cua hai lc o quan he Q1 va Q2 se tao thanh mot lc o quan he Q3. Q3 c xac nh nh sau: Q3+= {A1,A2,..,An} r3= r1+r2 = {t | t r1 hay t r2} V du: r1 r3 = r1 + r2 r2
MASV MAMH DIEMTHI MASV MAMH DIEMTHI MASV MAMH DIEMTHI

99001 99002 99003

CSDL CTDL MANG

5.0 2.0 8.0

99002 99001 99003

CTDL TTNT CSDL

2.0 5.0 6.0

99001 99002 99003 99001 99003

CSDL CTDL MANG TTNT CSDL

5.0 2.0 8.0 5.0 6.0

ii

Phep Giao (Intersection):

Cho hai lc o quan he Q1 va Q2 co cung tap thuoc tnh {A1,A2,..,An}. r1 va r2 lan lt la hai quan he tren Q1 va Q2. Phep giao cua hai lc o quan he Q1 va Q2 se tao thanh mot lc o quan he Q3 nh sau: Q3+={A1,A2,..,An} r3 = r1*r2= {t | t r1 va t r2} V du: r1 r2 r3 = r1* r2 MASV MAMH DIEMTHI MASV MAMH DIEMTHI MASV MAMH DIEMTHI 99001 CSDL 5.0 99002 CTDL 2.0 99002 CTDL 2.0 99002 CTDL 2.0 99001 TTNT 5.0 99003 MANG 8.0 99003 CSDL 6.0 iii Phep Tr (Minus, difference) Cho hai lc o quan he Q1 va Q2 co cung tap thuoc tnh {A1,A2,..,An}. r1 va r2 lan lt la hai quan he tren Q1 va Q2. Phep tr lc o quan he Q1 cho Q2 se tao thanh mot lc o quan he Q3 nh sau: Q3+={A1,A2,..,An} r3 = r1 - r2= {t | t r1 va t r2} V du: r1 r2 r3 = r1 - r2
MASV MAMH DIEMTHI MASV MAMH DIEMTHI MASV MAMH DIEMTHI Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU 99001 CSDL 99002 CTDL 99003 MANG iv 5.0 2.0 8.0 99002 CTDL 99001 TTNT 99003 CSDL 2.0 5.0 6.0 99001 CSDL 99003 MANG

Trang 11 5.0 8.0

Tch Descartes (Cartesian Product, product)

Cho hai lc o quan he Q1(A1,A2,..,An), Q2(B1,B2,..,Bm). r1 va r2 lan lt la hai quan he tren Q1 va Q2. Tch Descartes cua hai lc o quan he Q1 va Q2 se tao thanh mot lc o quan he Q3 nh sau: Q3+ = Q1+ Q2+= {A1,..., B1,...} r3 = r1 x r2 = {(t1,t2)| t1 r1 va t2 r2} V du: r1 r3 = r1 x r2
MASV 99001 99002 99003 MAMH CSDL FOX MAMH DIEMTHI CSDL 5.0 CTDL 2.0 MANG 8.0 r2 TENMH CO SO DU LIEU FOXPRO MASV 99001 99001 99002 99002 99003 99003 MAMH CSDL CSDL CTDL CTDL MANG MANG DIEMTHI 5.0 5.0 2.0 2.0 8.0 8.0 MAMH CSDL FOX CSDL FOX CSDL FOX TENMH CO SO DU LIEU FOXPRO CO SO DU LIEU FOXPRO CO SO DU LIEU FOXPRO

4 i

Cac phep toan quan he Phep Chieu (Projection)

Cho mot lc o quan he Q(A1,A2,..,An). r la quan he tren Q. X Q+. Phep chieu cua Q len tap thuoc tnh X se tao thanh lc o quan he Q= Q[X], trong o Q+ chnh la X va r chnh la r nhng ch lay cac thuoc tnh cua X. Q+ = X r = r[X] = r.X = {t| tr va t.X = t[X] = t} phep chieu chnh la phep rut trch d lieu theo cot (chieu doc) V du: r = r.{MAMH} r MASV MAMH DIEMTHI MAMH 99001 CSDL 5.0 CSDL 99002 CTDL 2.0 CTDL 99003 MANG 8.0 MANG ii Phep Chon (Selection) Cho lc o quan he Q(A1,A2,..,An), r la mot quan he tren Q. X Q+ va E la mot menh e logic c phat bieu tren tap X. Phan t tr thoa man ieu kien E ky hieu la t(E). Phep chon t r theo ieu kien E se tao thanh mot lc o quan he Q nh sau: Q+ = Q+ r= r(E)= r:E ={t | t r va t(E)} phep chon chnh la phep rut trch d lieu theo dong (chieu ngang) V du: r= r:DIEMTHI >= 5 r MASV MAMH DIEMTHI MASV MAMH DIEMTHI 99001 CSDL 5.0 99001 CSDL 5.0 99002 CTDL 2.0 99003 MANG 8.0 99003 MANG 8.0
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU iii Phep ket, Phep Ket T Nhien (join, natural join):

Trang 12

Cho hai lc o quan he Q1(A1,A2,..,An), Q2(B1,B2,..,Bm). r1 va r2 lan lt la hai quan he tren Q1 va Q2. Ai va Bj lan lt la cac thuoc tnh cua Q1 va Q2 sao cho MGT(AI) = MGT(BJ) (MGT: mien gia tr). la mot phep so sanh tren MGT(AI). Phep ket gia Q1 va Q2 se tao thanh mot lc o quan he Q3 nh sau: Q3+ = Q1+ Q2+ r3=r1 |><| r2 = {t12|t1r1,t2r2 sao cho t12.Q1+ = t1 t12.Q2+ = t2 t1.Ai t2.Bj} Ta rut ra cac bc cu the e thc hien phep ket nh sau: - Tao tch descartes - Thc hien phep chon theo ieu kien E=Ai Bj V du: Ai la thuoc tnh B, Bj la thuoc tnh F va la phep so sanh >=. Ta c ket qua la quan he sau: A B C E F H 1 5 9 6 5 4 7 5 3 6 5 4 1 5 9 7 5 5 7 5 3 7 5 5 Neu c s dung trong phep ket la phep so sanh bang (=) th ta goi la phep ket bang. Hn na neu AI Bj th phep ket bang nay c goi la phep ket t nhien. Phep ket t nhien la mot phep ket thng dung nhat trong thc te. V du: Vi Ai Bj = MAMH
MAMH

AiBj

r1 A B 6 5 7 5 4 2

C 4 5 6

E 1 4 7

r2 F 5 6 5

r3 = r1 |><| r2 H 9 8 3

B F

r1
MASV MAMH DIEMTHI MAMH

r2
TENMH
CO SO DU LIEU CAU TRUC DU LIEU

r3 = r1 |><| r2
MASV MAMH DIEMTHI

99001 99002 99003

CSDL CTDL MANG

5.0 2.0 8.0

CSDL CTDL

99001 99002

CSDL CTDL

5.0 2.0

TENMH CO SO DU LIEU CAU TRUC DU LIEU

iv

Phep chia (division):

Cho hai lc o quan he Q1(A1,A2,..,An), Q2(B1,B2,..,Bm). r1 va r2 lan lt la hai quan he tren Q1 va Q2. Ai va Bj lan lt la cac thuoc tnh cua Q1 va Q2 sao cho n>m. Phep chia Q1 va Q2 se tao thanh mot lc o quan he Q3 nh sau: Q3+ = {A1,...,An-m} r3 = r1r2 = {t3|t2r2, t1r1 t3=t1.{A1,...,An-m} t2=t1.{An-m+1,...,An}} V du: r1 A3 A4 A5 d c g r2 B1 B2 c g r3 = r1 r2 A1 A2 A3 a b d
Trung Tam CNTT-HCN Tp.HCM

A1 A2 a b

Giao trnh C S D LIEU a b e e a 5 b c g g b d e c c e e e c e g f f g f e e f e g c

Trang 13

Cac tnh chat cua ai so quan he

Q la lc o quan he q,r,s la quan he tren Q, E,E1,E2 la menh e logic tren Q+ X1 X2 Q+ Hay chng minh cac tnh chat sau: (r:E1):E2 = (r:E2):E1 Chng minh: (r:E1):E2 = = = = = = Chng minh: (r+s):E = = = = = = = Chng minh: (r*s):E = = = = = = = {t|t(r:E1) va t(E2)} {t|t{t|tr va t(E1)} va t(E2)} {tr|t(E1) va t(E2)} {t|t{t|tr va t(E2)} va t(E1)} {t|t(r:E2) va t(E1)} (r:E2):E1 (r+s):E = (r:E)+(s:E) {t|t(r+s) va t(E)} {t|t{t|tr hoac ts} va t(E)} {t|(tr hoac ts) va t(E)} {t|(tr va t(E)) hoac (ts va t(E))} {t|t{t|tr va t(E)} hoac t{t|ts va t(E)}} {t|t(r:E) hoac t(s:E)} (r:E)+(s:E) (r*s):E = (r:E)*(s:E) {t|t(r*s) va t(E)} {t|t{t|tr va ts} va t(E)} {t|tr va ts va t(E)} {t|(tr va t(E)) va (ts va t(E))} {t|t{t|tr va t(E)} va t{t|ts va t(E)}} {t|t(r:E) va t(s:E)} (r:E)*(s:E) (r-s):E = (r:E)-(s:E)

Chng minh: (r-s):E = {t|t(r-s) va t(E)} = {t|t{t|tr va ts} va t(E)} = {t|tr va ts va t(E)}
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU = = = = Chng minh: (r.X2).X1 = = = = = Chng minh: (r:E).X = = = = = = {t|(tr va t(E)) va (ts va t(E))} {t|t{t|tr va t(E)} va t{t|ts va t(E)}} {t|t(r:E) va t(s:E)} (r:E)*(s:E) Vi X2 X1 (r.X2).X1 = r.X1 {t.X1|t(r.X2)} {t.X1|t{t.X2|tr}} {(t.X2).X1|tr} {t.X1|tr} v X1 X2 r.X1 E phat bieu tren X (r:E).X = (r.X):E {t.X|t(r:E)} {t.X|t{t|tr va t(E)}} {t.X|tr va t(E)} {t|t{t.X|tr} va t(E)} {t|t(r.X) va t(E)} (r.X):E q|><|r = r|><|q

Trang 14

Chng minh: (q|><|r) ={t12|t1q,t2r t12.Q+ = t1, t12.R+ = t2 t12.Ait12.Bj} = r|><|q AiQ,BjS,CkQ,DlR (q|><|r)|><|s = q|><|(r|><|s) Chng minh: (q|><|r)|><|s ={t12|t1(q|><|r),t2s t12.Q+R+ = t1 t12.S+ = t2 t12.Ai1t12.Bj} ={t12|t1{u12|u1q,u2r u12.Q+=u1 u12.R+=u2 u1.Ck2u2.Dl}, t2s t12.Q+R+ = t1,t12.S+=t2 t1.Ai1t2.Bj} ={t123|t1q,t2r,t3s t123.Q+=t1,t123.R+=t2 t123.S+=t3 t123.Ai1t123.Bj t123.Ck2t123.Dl} ={t12|t1q,t2{u12|u1r,u2s u12.R+=u1 u12.S+=u2 u1.Ck2u2.Dl},t12.Q+=t1 t12.R+S+=t2 t12.Ai1t12.Bj} ={t12|t1q,t2(r|><|s),t12.Q+=t1 t12.R+S+=t2 t12.Ai1t12.Bj} =q|><|(r|><|s) IV MO HNH THC THE KET HP 1 Gii thieu mo hnh thc the ket hp Cac nha phan tch thiet ke he thong thong tin thng xay dng lc o c s d lieu (C1.III.2.ii) t mo hnh thc the ket hp va mo hnh nay lai c xay dng t phan ac ta van e cua mot bai toan thc te.

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 15

Lc o c s d lieu xay dng theo hng nay thong thng at toi thieu dang chuan 3 (3NF: third normal form) ngha la dang co s d tha d lieu mc toi thieu, con mon CSDL xay dng lc o CSDL at dang chuan 3 t lc o c s d lieu cha at dang chuan co kem cac tan t (C1.III.2.ii). Ta hay xem v du sau: i V du Moi quan he mot-nhieu
(a) ac ta van e

Nhng ngi phu trach ao tao cua Trng cao ang cong ong nui Ayers mong muon tao lap mot CSDL ve cac mon ao tao cua trng (nh: chng ch leo nui, cong nghe bay) va hoc vien ghi danh vao nhng mon hoc nay. Trng cung co qui nh la cung mot luc, hoc vien ch co the ghi danh vao mot mon hoc. Ho ch quan tam ve d lieu cua t ghi danh hien tai. Mot khi hoc vien ket thuc mon hoc th nha trng se khong con quan tam en ho va nhng hoc vien nay phai c xoa khoi CSDL. Thong tin can lu tr ve mot hoc vien bao gom: ma hoc vien, ten hoc vien, a ch, ngay sinh, so ien thoai, ngay nhap hoc Thong tin ve mon hoc gom ma mon hoc, ten mon hoc, thi lng Phan tch: - phan ac ta van e cha ng cac qui tac quan ly va d lieu yeu cau cua van e. - d lieu cua van e la: chi tiet ve hoc vien co ma hoc vien, ten hoc vien, a ch, ngay sinh, so ien thoai va ngay nhap hoc chi tiet ve mon hoc co ma mon hoc, ten mon hoc va thi lng. - qui tac quan ly gom: + Cung mot luc, mot hoc vien ch co the ghi danh vao mot mon hoc. + Nhieu hoc vien co the ghi danh vao mot mon hoc. + Nha trng ch quan tam en nhng hoc vien cua mon hoc hien tai.
(b)Mo hnh thc the ket hp (Mo hnh ER)

Cac tnh chat trong mo hnh thc the ket hp: - Hnh ch nhat c goi la tap thc the. Ten cua tap thc the c ghi ben trong hnh ch nhat va dung danh t e at ten cho tap thc the.
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU -

Trang 16

ng noi gia hai tap thc the c goi la moi quan he (moi ket hp). Moi quan he trong van e tren la moi quan he mot-nhieu (1:M). Noi dung cua moi quan he c dien ta theo hai chieu: ghi danh vao, c ghi danh bi va chung dien ta hai noi dung sau: + Moi HOC VIEN co the ghi danh vao mot MON HOC + Moi MON HOC phai c ghi danh bi mot hay nhieu HOC VIEN Cac d lieu ghi ben canh tap thc the c goi la thuoc tnh. Chung cung cap thong tin chi tiet ve tap thc the. Co hai loai thuoc tnh: Thuoc tnh nhan dien la thuoc tnh e phan biet thc the nay vi thc the kia trong tap thc the. Thuoc tnh mo ta la thuoc tnh cung cap thong tin chi tiet hn ve thc the trong tap thc the. Moi quan he cua van e tren la moi quan he mot-nhieu. Tnh chat nay cua moi quan he goi la tnh ket noi cua moi quan he. Tnh ket noi mot-nhieu rat pho bien trong mo hnh thc the ket hp. Hai loai ket noi con lai t pho bien hn nhng khong kem phan quan trong la moi quan he mot-mot va moi quan he nhieu-nhieu. ii V du moi quan he mot-mot
(a) ac ta van e

Phong canh sat mong muon quan ly ly lch ca nhan nhng ngi lai xe va bang lai cua ho. Mot ngi ch lay c mot bang lai va mot bang lai ch thuoc ve mot ngi. Thong tin ve lai xe ma phong canh sat quan tam la: ma ngi lai xe, ten, a ch, ngay sinh Thong tin ve bang lai can lu tr la: ma bang lai, loai bang lai, ngay het han
(b)Mo hnh thc the ket hp

iii

moi NGI LAI XE phai s hu mot BANG LAI moi BANG LAI phai c s hu bi mot NGI LAI XE V du moi quan he nhieu-nhieu
(a) ac ta van e

Ngi phu trach ao tao Trng cao ang cong ong nui xanh mong muon thiet lap mot csdl ve cac mon hoc ma ho cung cap (nh chng ch leo nui, c nhan cong nghe bay) va cac hoc vien ghi danh vao cac mon hoc nay. Nha trng qui nh la mot hoc vien c ghi danh hoc toi a ba mon hoc trong cung mot luc. Ho ch quan tam en d lieu cua mon hoc hien tai. Mot khi hoc vien ket thuc mon hoc, ho se khong con thuoc dien quan ly cua nha trng va phai c xoa khoi csdl tr khi hoc vien nay ghi danh hoc tiep mon mi. Thong tin ve mot hoc vien gom: ma hoc vien, ten hoc vien, a ch, ngay sinh, so ien thoai, ngay nhap hoc Thong tin ve mon hoc gom: ma mon hoc, ten mon hoc, thi lng
(b)Mo hnh ER

+ Moi HOC VIEN co the ghi danh vao mot hay nhieu MON HOC
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU + Moi MON HOC phai c ghi danh bi mot hay nhieu HOC VIEN Mo hnh ER tren co moi quan he nhieu nhieu.
(c) Loai bo tnh ket noi nhieu nhieu (neu c)

Trang 17

Mo hnh tren gap phai khuyet iem sau: - Ngay nhap hoc la thuoc tnh gan lien vi tap thc the HOC VIEN se khong hp ly v khong dien ta c trng hp hoc vien hoc cung luc nhieu mon hoc. - Con neu ngay nhap hoc la thuoc tnh cua MON HOC th khong dien ta c tnh trang cung mon hoc nhng co cac ngay nhap hoc khac nhau.

e giai quyet van e nay ta phai a vao: - mot tap thc the lam trung gian gia HOC VIEN va MON HOC goi la tap ket hp PHIEU GHI DANH. - Thuoc tnh nhan dien cua tap ket hp la s ket hp gia thuoc tnh nhan dien cua tap thc the HOC VIEN va MON HOC - thuoc tnh mo ta cua tap ket hp PHIEU GHI DANH la ngay nhap hoc - tnh ket noi cua tap ket hp vi tap thc the la mot-nhieu Noi dung cua moi quan he gia cac tap thc the la: - moi HOC VIEN co the co mot hay nhieu PHIEU GHI DANH - moi PHIEU GHI DANH phai thuoc ve mot HOC VIEN - moi PHIEU GHI DANH phai ghi nhan ao tao ve mot MON HOC - moi MON HOC co the c ghi nhan ao tao bi mot hay nhieu PHIEU GHI DANH Cac qui tac phai tuan thu khi them tap ket hp lam trung gian e loai bo tnh ket noi nhieu nhieu: - Phai nhan dien c thuoc tnh mo ta cua tap ket hp. - Neu co thuoc tnh mo ta th tao tap ket hp lam trung gian gia hai tap thc the. - Neu khong co thuoc tnh mo ta th van gi nguyen mo hnh nh hnh 1.4.4 2 i Chuyen t mo hnh thc the ket hp sang lc o CSDL. Qui tac chung

Khi bien oi mo hnh ER thanh cac mo hnh quan he ta ap dung cac qui tac sau: - Moi tap thc the trong mo hnh ER c chuyen thanh mot lc o quan he. - Moi thuoc tnh trong mo hnh ER c chuyen thanh thuoc tnh trong lc o quan he tng ng - Moi thuoc tnh nhan dien trong mo hnh ER c chuyen thanh khoa chnh trong lc o quan he tng ng. - Moi moi quan he trong ER c chuyen thanh khoa ngoai theo qui tac sau ii Qui tac chuyen moi quan he thanh khoa ngoai
(a) Moi quan he mot-mot

Chuyen khoa chnh t quan he 1 sang quan he 2 hay ngc lai. V du van e ngi lai xe va bang lai se co mo hnh quan he la mot trong hai mo hnh quan he sau

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU


Mo hnh ER ma ngi lai xe ten a ch ngay sinh Lc o CSDL

Trang 18

NGI LAI XE

s hu c s hu bi BANG LAI

ma bang lai loai bang lai ngay het han

NGI LAI XE (ma ngi lai xe, ten, a ch, ngay sinh) BANG LAI(ma bang lai, loai bang lai, ngay het han, ma ngi lai xe) hay NGI LAI XE (ma ngi lai xe, ten, a ch, ngay sinh, ma bang lai) BANG LAI(ma bang lai, loai bang lai, ngay het han) Hnh 1.4.6 - Mo hnh ER va mo hnh quan he cua van e Ngi lai xe va bang lai

(b)Moi quan he mot-nhieu

Chuyen khoa chnh t ben mot sang ben nhieu.

(c) Moi quan he nhieu nhieu en tap ket hp

Trong quan he PHIEU GHI DANH co cac khoa chnh khoa ngoai nh sau: + ma hoc vien la khoa ngoai + ma mon hoc la khoa ngoai + ma hoc vien va ma mon hoc la khoa chnh
(d)Moi quan he nhieu-nhieu

Tao mot quan he mi co khoa chnh la s ket hp cac khoa chnh cua hai quan he co tnh ket noi nhieu nhieu. V du gia s Trng Cao ang Cong ong Nui Xanh khong quan tam en ngay nhap hoc cua hoc vien th mo hnh ER se co moi quan he nhieu nhieu nh sau:

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 19

BAI TAP 1 Phep toan tap hp va phep toan quan he Cho lc o c s d lieu dung e quan ly ho s sinh vien bao gom cac quan he Sv(sinh vien), Lop(Lp), kh(khoa), Mh(mon hoc), Kq(ket qua) c mo ta bi cac lc o quan he nh sau: Sv(MASV,HOTEN,NU,NGAYSINH,MALOP,TINH,HOCBONG) Tan t: Moi sinh vien co moi MASV duy nhat. Moi MASV xac nh tat ca cac thuoc tnh con lai cua sinh vien o. Lop(MALOP,TENLOP,SISO,MAKHOA) Tan t: Moi lp co mot ma lp duy nhat, moi lp ch thuoc ve mot khoa nao o. Kh(MAKHOA,TENKHOA,SOCBGD) Tan t: Moi khoa co moi MAKHOA duy nhat. Moi MAKHOA xac nh tat ca cac thuoc tnh con lai cua khoa o. Mh(MAMH,TENMH,SOTIET) Tan t: Moi Mon hoc co mot MAMH duy nhat. Moi MAMH xac nh tat ca cac thuoc tnh con lai cua mon hoc o. Kq(MASV,MAMH,DIEMTHI) Tan t: Moi sinh vien cung vi mot mon hoc xac dnh duy nhat mot iem thi YEU CAU: 1. Tm khoa cho moi lc o quan he tren. 2. Hay thc hien cac cau hoi sau bang ngon ng ai so quan he a. Lap danh sach sinh vien gom MASV, HOTEN, HOCBONG b. Lap danh sach sinh vien n khoa CNTT,danh sach can MASV, HOTEN, HOCBONG c. Lap bang iem cho tat ca sinh vien khoa CNTT, bang iem gom cac cot MASV, HOTEN, TENMH, DIEMTHI d. Lap phieu iem cho sinh vien co MASV=99001 e. Lap danh sach sinh vien gom MASV,HOTEN,TENLOP, TENKHOA f. Lap bang iem mon hoc co ma mon hoc la CSDL cho tat ca sinh vien co ma lp la CTH2B g. Lap danh sach sinh vien cua lp co ma lp la CTH2B va co iem thi mon hoc ln hn hay bang 8. 2 Mo hnh thc the ket hp Da vao cac phan tch s bo di ay, hay lap mo hnh thc the ket hp cho moi bai toan quan ly sau:

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU i QUAN LY LAO ONG

Trang 20

e quan ly viec phan cong cac nhan vien tham gia vao xay dng cac cong trnh. Cong ty xay dng ABC to chc quan ly nh sau: Cung luc cong ty co the tham gia xay dng nhieu cong trnh, moi cong trnh co mot ma so cong trnh duy nhat (MACT), moi ma so cong trnh xac nh cac thong tin nh: ten goi cong trnh (TENCT), a iem(IAIEM), ngay cong trnh c cap giay phep xay dng (NGAYCAPGP), ngay khi cong (NGAYKC), ngay hoan thanh (NGAYHT). Moi nhan vien cua cong ty ABC co mot ma so nhan vien(MANV) duy nhat, mot ma so nhan vien xac nh cac thong tin nh: Ho ten (HOTEN), ngay sinh (NGAYSINH), phai (PHAI), a ch (IACHI). Moi nhan vien phai chu s quan ly hanh chanh bi mot phong ban. Tat nhien mot phong ban quan ly hanh chanh nhieu nhan vien. Cong ty co nhieu phong ban (Phong ke toan, phong kinh doanh, phong ky thuat, phong to chc, phong chuyen mon, Phong phuc vu,). Moi phong ban co mot ma so phong ban(MAPB) duy nhat, ma phong ban xac nh ten phong ban (TENPB). Cong ty phan cong cac nhan vien tham gia vao cac cong trnh, moi cong trnh co the c phan cho nhieu nhan vien va moi nhan vien cung luc cung co the tham gia vao nhieu cong trnh. Vi moi cong trnh mot nhan vien co mot so lng ngay cong (SLNGAYCONG) a tham gia vao cong trnh o. ii QUAN LY TH VIEN Mot th vien to chc viec cho mn sach nh sau: Moi quyen sach c anh mot ma sach (MASH) dung e phan biet vi cac quyen sach khac (gia s neu mot tac pham co nhieu ban giong nhau hoac co nhieu tap th cung xem la co ma sach khac nhau), moi ma sach xac nh cac thong tin khac nh : ten sach (TENSACH), ten tac gia (TACGIA), nha xuat ban (NHAXB), nam xuat ban (NAMXB). Moi oc gia c th vien cap cho mot the th vien, trong o co ghi ro ma oc gia (MAG), cung vi cac thong tin khac nh : ho ten (HOTEN), ngay sinh (NGAYSINH), a ch (IACHI), nghe nghiep(NGHENGHIEP). C moi lt mn sach, oc gia phai ghi cac quyen sach can mn vao mot phieu mn, moi phieu mn co mot so phieu mn (SOPM) duy nhat, moi phieu mn xac nh cac thong tin nh: ngay mn (NGAYMUON), oc gia mn, cac quyen sach mn va ngay tra (NGAYTRA). Cac cac quyen sach trong cung mot phieu mn khong nhat thiet phai tra trong trong cung mot ngay. iii QUAN LY BAN HANG Moi khach hang co mot ma khach hang (MAKH) duy nhat, moi MAKH xac nh c cac thong tin ve khach hang nh : ho ten khach hang (HOTEN), a ch (IACHI), so ien thoai (IENTHOAI). Cac mat hang c phan loai theo tng nhom hang, moi nhom hang co mot ma nhom (MANHOM) duy nhat, moi ma nhom hang xac nh ten nhom hang (TENNHOM), tat nhien mot nhom hang co the co nhieu mat hang. Moi mat hang c anh mot ma so (MAHANG) duy nhat, moi ma so nay xac nh cac thong tin ve mat hang o nh : ten hang (TENHANG), n gia ban (ONGIA), n v tnh (VT). Moi hoa n ban hang co mot so hoa n (SOH) duy nhat, moi hoa n xac nh c khach hang va ngay lap hoa n (NGAYLAPH), ngay ban hang (NGAYBAN). Vi moi mat hang trong mot hoa n cho biet so lng ban (SLBAN) cua mat hang o. iv QUAN LY LCH DAY - HOC e quan ly lch day cua cac giao vien va lch hoc cua cac lp, mot trng to chc nh sau:

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 21

Moi giao vien co mot ma so giao vien (MAGV) duy nhat, moi MAGV xac nh cac thong tin nh: ho va ten giao vien (HOTEN), so ien thoai (DTGV). Moi giao vien co the day nhieu mon cho nhieu khoa nhng ch thuoc s quan ly hanh chanh cua mot khoa nao o. Moi mon hoc co mot ma so mon hoc (MAMH) duy nhat, moi mon hoc xac nh ten mon hoc (TENMH). ng vi moi lp th moi mon hoc ch c phan cho mot giao vien. Moi phong hoc co mot so phong hoc (SOPHONG) duy nhat, moi phong co mot chc nang (CHUCNANG); chang han nh phong ly thuyet, phong thc hanh may tnh, phong nghe nhn, xng thc tap c kh, Moi khoa co mot ma khoa (MAKHOA) duy nhat, moi khoa xac nh cac thong tin nh: ten khoa (TENKHOA), ien thoai khoa(DTKHOA). Moi lp co mot ma lp (MALOP) duy nhat, moi lp co mot ten lp (TENLOP), s so lp (SISO). Moi lp co the hoc nhieu mon cua nhieu khoa nhng ch thuoc s quan ly hanh chnh cua mot khoa nao o. Hang tuan, moi giao vien phai lap lch bao giang cho biet giao vien o se day nhng lp nao, ngay nao (NGAYDAY), mon g?, tai phong nao, t tiet nao (TUTIET) en tiet nao (DENTIET),ta e bai day (BAIDAY), ghi chu (GHICHU) ve cac tiet day nay, ay la gi day ly thuyet (LYTHUYET) hay thc hanh - gia s neu LYTHUYET=1 th o la gi day thc hanh va neu LYTHUYET=2 th o la gi ly thuyet, mot ngay co 16 tiet, sang t tiet 1 en tiet 6, chieu t tiet 7 en tiet 12, toi t tiet 13 en 16.

----oOo----

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 22

Chng 2 . NGON NG TRUY VAN SQL


I CACH TAO QUAN HE BANG ACCESS Microsoft Access la mot he quan tr c s d lieu quan he. Ta co the dung HQTCSDL Access hay goi tat la Access e thc hanh mo hnh quan he. Sau ay ta se tao lc o csdl quan ly sinh vien nh trang 6 cua tai lieu. + Khi ong Access: Start-> Programs-> Microsoft Access. + Tao lc o csdl rong co ten la qLSV: Blank Database->OK->qLSV->Create + Tao quan he bang cach:Tables->New->Design View->OK
Tao khoa chnh: nhap chuot vao le trai thuoc tnh roi nhap chuot len bieu tng cha khoa

ten thuoc tnh

kieu d lieu

kch thc d lieu

o Data type la Text (kieu chuoi), Yes/No (Kieu luan ly), Date/Time (kieu ngay thang), Currency (kieu so) o Field size la kch thc kieu d lieu + Khi tao xong cac thuoc tnh va khoa chnh ta lu lai va at ten cho quan he Sv bang cach : File->Close->Yes->Sv->OK. + Tao cac quan he con lai theo bc 3 va 4 + Nhap d lieu cho quan he Sv bang cach: Tables->Sv->Open II CAU LENH TRUY VAN 1 BIEU THC (EXPRESSION)

Cac thanh phan tao nen bieu thc bao gom: Literal value La cac d lieu co gia tr ung nh van ban the hien. D lieu chuoi co dang: New York D lieu so co dang: 1056; 1056.25 D lieu ngay co dang: #1-Jan-94#; #12/2/2001# Constant La mot ten ai dien cho mot gia tr khong thay oi nh : Const Gia tr ai dien
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU True False Null Toan t so hoc: Toan t + Y ngha Cong so hoc Cong ngay Tr so hoc Ngay tr so Ngay tr ngay Phep nhan Phep chia Chia nguyen Luy tha Lay so d cua phep chia Y ngha Luat phu nh Luat va -1 0 0 V du 5+2 #28/08/01# + 4 5-2 #02/09/01# - 3 #29/9/01#-#24/3/84# 5*2 5/2 5\2 5^2 5 Mod 2 Ket qua 7 #01/09/01# 3 #30/08/01# 16.597 10 2.5 2 25 1

Trang 23

* / \ ^ Mod Toan t luan ly Toan t Not And

Or

Luat hay

V du Not True Not False True And True True And False False And True False And False True Or True True Or False False Or True False Or False V du 2<5 2 <= 5 2>5 2 >= 5 2=5 2 <> 5

Ket Qua False True True False False False True True True False Ket qua True True False False False True

Toan t so sanh Toan t < <= > >= = <> Cac toan t khac Toan t Between ... And ... Y ngha Nho hn Nho hn hay bang Ln hn Ln hn hay bang Bang nhau Khac nhau

Y ngha V du Ket qua Gia hai gia tr. True 2 Between 1 And 5 Dung trong query Giong nh True Like Hung Like Hu* Noi chuoi Nguyen Van & Hung Nguyen Van Hung & Vi toan t like ta co the dung cac ky t ai dien sau: Wildcard characters Ky t Y ngha V du ? ai dien cho mot ky t bat ky A? -> AN, AM, AC
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU * # [] ! Ham: ai dien cho mot chuoi ky t bat ky. ai dien cho mot ky so ai dien cho cac ky t nam trong ai dien cho cac ky t nam trong khoang ai dien cho ky t khong phai ky t nam sau !

Trang 24 A* -> AI, ANH, A## ->A13, A24, A35 A[IN] -> AI, AN A[M-O] -> AM, AN, AO A[!C] -> AA, AB, AD, AE, ...

Ham co dang tenHam(danhSachDoiSo). Ham luon luon ai dien cho mot tr goi la tr tra ve. IIf(ieu kien, tr 1, tr 2) Kiem tra ieu kien, neu ieu kien ung tra tr 1 ngc lai tra tr 2 V du: IIf(namNu = 1, Nam,Nu) Date() Tra ve ngay thang nam cua he thong. Now(bieu thc ngay) Tra ve gi, phut, giay, ngay thang nam cua he thong. Time(bieu thc ngay) Tra ve gi phut giay cua he thong. Day(bieu thc ngay) Tra ve mot so t 1 en 31 la ngay cua Date. Month(bieu thc ngay) Tra ve mot so t 1 en 12 la thang cua Date Year(bieu thc ngay) Tra ve nam cua ngay Len( bieu thc chuoi) Tra ve chieu dai cua chuoi. Chr(ma Ascii) Tra ve ky t co ma ASCII tng ng. InStr(Start, s1, s2) Tra ve v tr chuoi s2 nam trong s1 LCase(s), UCase(s) oi chuoi s thanh chuoi gom cac ky t thng (hoa) Left(s, n), Right(s, n) Tra ve chuoi gom n ky t ben trai (phai) cua chuoi s Mid(s, i, n) Tra ve chuoi con cua chuoi s, gom n ky t ke t ky t th i Nz(v1, v2) Neu v1 = Null th Tra ve v2, ngc lai tra ve v1 Cac ham tnh toan tren nhom: SUM (thuoc tnh ) Tnh tong gia tr cua thuoc tnh cua cac bo trong bang MAX( thuoc tnh) tnh gia tr ln nhat cua thuoc tnh cua cac bo trong bang MIN(thuoc tnh) tnh gia tr nho nhat cua thuoc tnh cua cac bo trong bang AVG(thuoc tnh>) tnh gia tr trung bnh cua thuoc tnh cua cac bo trong bang
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU COUNT(thuoc tnh) ch em nhng bo ma gia tr cua thuoc tnh la khac NULL Bieu thc Bieu thc la to hp cac toan t, literal value, hang, ten ham, ten thuoc tnh. Bieu thc c lng ga thanh mot ga tr. 2 CAU LENH SQL

Trang 25

SQL la ngon ng truy van da tren ai so quan he. Cau lenh cua SQL dung e rut trch d lieu cua mot mot hay nhieu quan he. Ket qua cua mot cau lenh SQL (truy van) la mot quan he. e n gian trong cach trnh bay, ta xem quan he ma cau truy van s dung e tao ra quan he khac goi la quan he nguon, quan he ket qua cua truy van la quan he ch. i Truy van nh ngha d lieu (data definition query) Tao lc o quan he rSV: + Create Table rSV (MASV Text (10) CONSTRAINT khoaChinh PRIMARY KEY,HOTEN Text (30), NU YesNo, NGAYSINH Date, MALOP Text (10), TINH Text (50), HOCBONG Double ) Tao lc o quan he rKQ: + Create Table rKQ (MASV text (10),MAMH Text (10), DIEMTHI Double,CONSTRAINT khoaChinh PRIMARY KEY (MASV,MAMH) ) Chu y: Hai cach tao tren cho ta thay hai cach tao khoa: khoa ch gom mot thuoc tnh va khoa co nhieu thuoc tnh Them cot DTHOAI co kieu d lieu text 20 ky t vao lc o quan he rSV: + Alter Table rSV Add Column DTHOAI Text (20) Sa kieu kieu d lieu cua mot cot: + Alter Table rSV Alter Column DTHOAI double Xoa cot cua mot lc o a co: + Alter Table rSv Drop Column DTHOAI Xoa rang buoc khoa chnh: + Alter Table rSv Drop Constraint khoaChinh Them rang buoc khoa chnh: + Alter Table rSv Add Constraint khoaChinh Primary Key (MASV) Them rang buoc mien gia tr: + ALTER TABLE doc_exd WITH NOCHECK ADD CONSTRAINT exd_check CHECK (column_a > 1) ii Truy van chon (select query) Khi co nhu cau the hien cac dong d lieu cua mot quan he hay cua nhieu quan he di dang mot quan he co so cot va so dong theo y muon nh bang iem cua sinh vien, danh sach sinh vien th ta s dung truy van chon. e truy van chon ta s dung cau lenh SQL sau: Select [Distinct|Top n[%]] field1 [As alias1][,field2 [As alias2][,...]] From table1 [Inner Join table2 On table1.field1 table2.field2] ... [Where dieuKien] [Order By field1[Asc|Desc][,field2[Asc|Desc]][,...]]]; Distinct: loai bo cac bo trung trong quan he ch Top n[%]: Chon n hay n% mau tin au tien.
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 26

table: Ten table hay query cha d lieu. field: Ten field hay mot bieu thc. Alias: Trng hp field la mot bieu thc th <Alias> la mot ten mi cua bieu thc. Inner Join: moi mau tin cua table1 noi vi bat ky mau tin nao cua table2 co d lieu cua field1 thoa man ieu kien so sanh vi d lieu cua field2 tao thanh mau tin cua query. ieu kien: Bieu thc ma d lieu mau tin phai thoa man Chu y: Khi neu ro thuoc tnh o thuoc ve quan he nao ta viet theo cu phap tenQuanHe.tenThuocTnh. V du: Lap danh sach sinh vien gom MASV,HOTEN,HOCBONG SELECT MASV,HOTEN,HOCBONG FROM Sv; V du: Lap danh sach sinh vien n , co hoc bong thuoc co ma lp la CTH2B. SELECT MASV,HOTEN,HOCBONG FROM Sv WHERE NU And MALOP='CTH2B' And HOCBONG>0; V du: Lap danh sach sinh vien gom MASV,HOTEN,HOCBONG trong o hoc bong c sap giam dan SELECT MASV,HOTEN,HOCBONG FROM Sv ORDER BY HOCBONG DESC; V du : Lap danh sach sinh vien gom MASV,HOTEN,TENLOP SELECT MASV,HOTEN,TENLOP FROM Sv Inner Join Lop On Sv.MALOP=Kh.LOP; V du: Lap danh sach sinh vien co MASV,HOTEN,NU,NGAYSINH,DIEMTHI vi iem thi mon CSDL >= 8 SELECT Kq.MASV,HOTEN,NU,NGAYSINH,DIEMTHI FROM Kq Inner Sv On Kq.MASV = Sv.MaSV WHERE MAMH='CSDL' AND DIEMTHI>=8; V du: Lap danh sach sinh vien co ho la NGUYEN SELECT * FROM Sv WHERE HOTEN Like NGUYEN*; iii Truy van nhom d lieu (Select query co group by) Khi co nhu cau chia cac bo theo tng nhom roi tnh toan tren tng nhom nay nh tnh iem trung bnh cua tat ca cac mon hoc cua tng sinh vien, hay la can tnh so lng sinh vien cua moi lp , hay la can biet tong so mon ma mot sinh vien a ang ky hoc th ta s dung truy van theo nhom. e truy van cong nhom ta s dung cau lenh SQL sau:
Select [Distinct|Top n[%]] field1 [As alias1][,field2 [As alias2][,...]] From table1 [Inner Join table2 On table1.field1 table2.field2] ... [Where dieuKienLocMauTinNguon] [Group By fieldGroupBy[,fieldGroupBy[,...]] [Having dieuKienLocMauTinTongHop] [Order By field1[Asc|Desc][,field2[Asc|Desc]][,...]]];
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 27

ieuKienLocMauTinNguon: ieu kien ma cac mau tin nguon phai thoa man (phep chon) fieldGroupBy: ten field ma cac mau tin co d lieu giong nhau tren ay c xep vao cung nhom. ieuKienLocMauTinTongHp: ieu kien ma cac mau tin tong hp phai thoa man (phep chon) V du: Lap danh sach sinh vien co ang ky t nhat la ba mon hoc SELECT Kq.MASV,HOTEN,NU,NGAYSINH,COUNT(MAMH) As SLMH FROM Sv Inner Join Kq On Sv.MASV = Kq.MASV GROUP BY Kq.MASV,HOTEN,NU,NGAYSINH HAVING COUNT(MAMH)>=3; V du: em so lng sinh vien n cua moi khoa SELECT Kh.MAKHOA,TENKHOA,COUNT(Kh.MAKHOA) AS SOLUONG FROM (Sv Inner Join Lop On Sv.MALOP = LOP.MALOP) INNER JOIN Kh On Lop.MAKHOA=Kh.MAKHOA WHERE NU GROUP BY Kh.MAKHOA,TENKHOA; iv Truy van long nhau (nested query, sub query)

La nhng cau lenh truy van ma trong thanh phan WHERE hay HAVING co cha them mot cau lenh Select khac. Cau lenh select khac nay goi la subquery. Ta long cau Select vao phan Where hay Having theo cu phap sau: o bieuthuc toanTuSoSanh [ANY | ALL | SOME] (cauLenhSQL) ANY, SOME la bat ky, ALL la tat ca Cac mau tin cua query chnh thoa man toan t so sanh vi bat ky/ tat ca mau tin nao cua subquery o bieuThuc [NOT] IN (cauLenhSQL) Cac mau tin cua query chnh co gia tr bang vi mot gia tr trong subquery o [NOT] EXISTS (cauLenhSQL). Cac mau tin cua query chnh thoa man khi subquery co mau tin V du: Lap danh sach sinh vien co hoc bong cao nhat SELECT * FROM Sv WHERE HOCBONG>=ALL(SELECT HOCBONG FROM SV); V du: Lap danh sach sinh vien co iem thi mon CSDL cao nhat SELECT SV.MASV,HOTEN,NU,NGAYSINH,DIEMTHI FROM sv Inner Join kq On Sv.MASV = Kq.MASV WHERE MAMH='CSDL' AND DIEMTHI >= ALL (SELECT DIEMTHI FROM KQ WHERE MAMH='CSDL'); Hieu va van dung tot lenh truy van d lieu la mot viec lam cc ky can thiet e tao ra cac ket qua cho bao cao, thong ke so lieu. v Truy van cap nhat d lieu (action query, data modification query) Cu phap: Update table Set field1 = bieuThc1, field2 = bieuThc2 Where ieuKien
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU Cu phap: Delete From table Where ieuKien vi Truy van hp (union query)

Trang 28

Khi co nhu cau thc hien truy van co ket qua nh toan t hp, ta s dung cau lenh SQL sau: Select .....Union Select .... V du: Lenh sau ay gap oi danh sach sinh vien SELECT MASV,HOTEN,NGAYSINH UNION SELECT MASV,HOTEN,NGAYSINH III BAI TAP 1/ Cho lc o CSDL quan ly sinh vien. Hay thc hien cac cau truy van sau a) Lap danh sach nhng sinh vien nam cua tnh LONG AN hoc khoa CNTT, danh sach can tat ca cac thuoc tnh cua quan he Sv. b) Lap danh sach nhng sinh vien co iem thi < 5 (thi lai), danh sach can MASV,HOTEN,TENMH, DIEMTHI va c sap tang dan theo cot MASV. c) Lap danh sach cac sinh vien co iem thi trung bnh cac mon < 5, danh sach can MASV,HOTEN, DIEMTRUNGBINH va c sap tang dan theo cot MASV. d) Tong so tien hoc bong cua moi khoa e) Nhng sinh vien nao ang ky hoc nhieu hn 3 mon hoc, danh sach can MASV,HOTEN,SOLAN_DANGKY f) Lap danh sach sinh vien co iem trung bnh cao nhat, danh sach can MASV, HOTEN, NGAYSINH, DIEMTRUNGBINH 2/ Cho lc o CSDL dung e quan ly lao ong bao gom cac lc o quan he sau: Nhanvien(MANV,HOTEN,NGAYSINH,PHAI,DIACHI,MAPB) Tan t: Moi nhan vien co mot ma so nhan vien (MANV) duy nhat. Mot ma so nhan vien xac nh cac thong tin nh ho ten (HOTEN), ngay sinh (NGAYSINH), phai (PHAI), a ch (DIACHI) va phong ban (MAPB) ni quan ly nhan vien. Phongban(MAPB,TENPB) Tan t: Moi phong ban co mot ma phong ban (MAPB) duy nhat, ma phong ban xac nh ten phong ban (TENPB) Cong(MACT,MANV,SLNGAYCONG) Tan t: Lc o quan he Cong ghi nhan so lng ngay cong (SLNGAYCONG) cua mot nhan vien (MANV) tham gia vao cong trnh (MACT). Congtrinh(MACT,TENCT,DIADIEM,NGAYCAPGP,NGAYKC,NGAYHT) Tan t: Moi cong trnh co mot ma so cong trnh (MACT) duy nhat. Ma so cong trnh xac nh cac thong tin nh ten goi cong trnh (TENCT), a iem (DIADIEM), ngay cong trnh c cap giay phep xay dng (NGAYCAPGP), ngay khi cong (NGAYKC), ngay hoan thanh (NGAYHT). Hay thc hien cac cau hoi sau bang SQL a) Danh sach nhng nhan vien co tham gia vao cong trnh co ma cong trnh (MACT) la X. Yeu cau cac thong tin: MANV,HOTEN, SLNGAYCONG, trong o MANV c sap tang dan. b) em so lng ngay cong cua moi cong trnh. Yeu cau cac thong tin: MACT, TENCT, TONGNGAYCONG (TONGNGAYCONG la thuoc tnh t at)
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 29

c) Danh sach nhng nhan vien co sinh nhat trong thang 8. yeu cau cac thong tin: MANV, TENNV, NGAYSINH, IACHI,TENPB, sap xep quan he ket qua theo th t tuoi giam dan. d) em so lng nhan vien cua moi phong ban. Yeu cau cac thong tin: MAPB, TENPB, SOLUONG. (SOLUONG la thuoc tnh t at.) 3/ Cho cac quan he sau: Monhoc(MSMH ,TENMH,SOTINCHI ,TINHCHAT) MSMH ma so mon hoc, TENMH ten mon hoc SOTINCHI so lng tn ch, TNH CHAT bang 1 neu o la mon hoc bat buoc, bang 0 neu o la mon hoc khong bat buoc Sinhvien(MSSV,HOTEN,NGAYSINH,LOP) MSSV ma so sinh vien, HOTEN ho ten sinh vien NGAYSINH ngay sinh, LOP(C,4,0) lp Diem(MSSV,MSMH,DIEMTHI) DIEMTHI iem thi Hay dung lenh SQL e thc hien cac cau lenh sau: a) Hay cho biet nhng mon hoc bat buoc co SOTINCHI cao nhat. b) Hay liet ke danh sach gom MSSV,HOTEN,LOP, DIEMTHI cua nhng sinh vien thi mon hoc CSDL, theo th t LOP,DIEMTHI c) Hay cho biet cac sinh vien co iem thi cao nhat ve mon hoc co ma la CSDL d) Hay cho biet phieu iem cua sinh vien co ma so la 9900277 e) Hay liet ke danh sach gom MSSV, HOTEN., LOP, IEM TRUNG BNH cua nhng sinh vien co iem trung bnh cac mon di 5, theo th t LOP,HOTEN. f) Hay liet ke danh sach iem trung bnh cua sinh vien theo th t , lp, ten. g) Hay cho biet iem cua sinh vien theo tng mon. 4/ Da vao lc o c s d lieu Docgia(MADG,HOTEN,NGAYSINH,DIACHI,NGHENGHIEP) Phieumuon(SOPM,NGAYMUON,MADG) Chitietmuon(SOPM,MADAUSACH,NGAYTRA) Dausach(MADAUSACH,BAN,TAP,MASH) Sach(MASH,TENSACH,TACGIA,NHAXB,NAMXB) Hay thc hien cac cau hoi sau ay bang SQL a) Danh sach cac oc gia a ang ky mn sach trong ngay d. Yeu cau cac thong tin: MAG, HOTEN, IACHI. b) Cac quyen sach cua phieu mn co SOPM la x. Yeu cau cac thong tin MASH, TENSACH, TACGIA, NGAYMUON, NGAYTRA. c) Tong so lt ma moi oc gia en mn sach trong nam 2001. Yeu cau thong tin MAG,HOTEN,SOLANMUON (SOLANMUON la thuoc tnh t at) d) Danh sach cac oc gia cao tuoi nhat a mn sach trong ngay d. Yeu cau cac thong tin MAG, HOTEN, NGAYSINH, IACHI, NGHENGHIEP.

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU 5/ Da vao lc o c s d lieu Khach(MAKH,HOTEN,DIACHI,DIENTHOAI) Hoadon(SOHD,NGAYLAPHD,NGAYBAN,MAKH) DongHoaDon(SOHD,MAHANG,SLBAN) Hang(MAHANG,TENHANG,DONGIA,DVT,MANHOM) Nhom(MANHOM,TENNHOM)

Trang 30

Hay thc hien cac cau hoi sau bang SQL a) Danh sach cac khach hang a mua hang trong ngay d. Yeu cau cac thong tin MAKH, HOTEN, IACHI, IENTHOAI. b) Danh sach cac mat hang trong so hoa n (SOH) la x. Yeu cau cac thong tin MAHANG, TENHANG, SLBAN, ONGIA, THANHTIEN (THANHTIEN= SLBAN*ONGIA; THANHTIEN la thuoc tnh t at).Yeu cau sap xep tang dan theo cot TENHANG c) Danh sach cac mat hang thuoc ma nhom hang la A co n gia cao nhat. Yeu cau cac thong tin : MAHANG, TENHANG,ONGIA d) em so lng mat hang cua moi nhom hang. Yeu cau cac thong tin : MANHOM, TENNHOM, SOLUONG. (trong o SOLUONG la thuoc tnh t at) (0,75) e) Danh sach cac khach hang a mua cac mat hang co ma nhom hang la A trong ngay d. Yeu cau cac thong tin MAKH, HOTEN, IACHI, IENTHOAI,TENHANG. f) Thong ke viec mua hang trong nam 2002 cua khach hang co ma khach hang la Kh01 (theo tng hoa n). Yeu cau cac thong tin MAKH,HOTEN,SOH,TRIGIAH trong o TRIGIAH la tong so tien trong mot hoa n (TRIGIAH la thuoc tnh t at) 6/ Da vao lc o c s d lieu Giaovien(MAGV,HOTEN,DTGV,MAKHOA) Khoa(MAKHOA,TENKHOA,DTKHOA) Lop(MALOP,TENLOP,SISO,MAKHOA) Monhoc(MAMH,TENMH) Phonghoc(SOPHONG,CHUCNANG) Lichbaogiang(MALICH,NGAYDAY,MAGV)
Dongbaogiang(MALICH,TUTIET,DENTIET,BAIDAY,GHICHU,LYTHUYET,MAMH,MALOP,SOPHONG)

Hay thc hien cac cau hoi sau bang SQL a) Xem lch bao giang tuan t ngay 16/09/2002 en ngay 23/09/2002 cua giao vien co MAGV (ma giao vien) la TH3A040. Yeu cau: MAGV,HOTEN,TENLOP,TENMH,SOPHONG, NGAYDAY, TUTIET, DENTIET, BAIDAY, GHICHU b) Xem lch bao giang ngay 23/09/2002 cua cac giao vien co ma khoa la CNTT. Yeu cau: MAGV,HOTEN,TENLOP,TENMH,PHONG,NGAYDAY,TUTIET,DENTIET,BAIDAY, GHICHU) c) Cho biet so lng giao vien (SOLUONGGV) cua moi khoa, ket qua can sap xep tang dan theo cot ten khoa. yeu cau: TENKHOA ,SOLUONGGV ( SOLUONGGV la thuoc tnh t at)

----oOo----

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 31

Chng 3 . RANG BUOC TOAN VEN QUAN HE (entegrity constraint)


I RANG BUOC TOAN VEN - CAC YEU TO CUA RANG BUOC TOAN VEN 1 Rang Buoc Toan Ven Trong moi CSDL luon ton tai nhieu moi lien he gia cac thuoc tnh, gia cac bo. S lien he nay co the xay ra trong mot lc o quan he hoac trong cac lc o quan he cua mot c s d lieu. Cac moi lien he nay la nhng ieu kien bat bien ma tat ca cac bo cua nhng quan he co lien quan trong CSDL eu phai thoa man moi thi iem. Nhng ieu kien bat bien o c goi la rang buoc toan ven. Trong thc te rang buoc toan ven la cac quy tac quan ly c ap at tren cac oi tng cua the gii thc. Nhiem vu cua ngi phan tch thiet ke la phai phat hien cang ay u va chnh xac cac rang buoc toan ven cang tot va mo ta chung mot cach chnh xac trong ho s phan tch thiet ke - o la mot viec lam rat quan trong va rat can thiet. Trong mot c s d lieu, rang buoc toan ven c xem nh la mot cong cu e dien at ng ngha cua CSDL. Mot CSDL c thiet ke cong kenh nhng no the hien c ay u ng ngha cua thc te van co gia tr cao hn rat nhieu so vi mot cach thiet ke gon nhe nhng ngheo nan ve ng ngha v thieu cac rang buoc toan ven cua c s d lieu. Cong viec kiem tra rang buoc toan ven thng c tien hanh vao thi iem cap nhat d lieu ( them, sa, xoa). Nhng rang buoc toan ven phat sinh can phai c ghi nhan va x ly mot cach tng minh (thng la bi mot ham chuan hoac mot oan chng trnh). 2 i Cac Yeu To Cua Rang Buoc Toan Ven ieu kien Moi rang buoc toan ven co 3 yeu to: ieu kien, boi canh va tam anh hng. ieu kien cua mot rang buoc toan ven R co the c bieu dien bang ngon ng t nhien, thuat giai, ngon ng ai so tap hp, ai so quan he, ngoai ra ieu kien cua rang buoc toan ven cung co the c bieu dien bang phu thuoc ham. Chang han, vi lc o quan he SV th co mot rang buoc toan ven nh sau: Vi r la mot quan he cua Sv ta co rang buoc toan ven sau t1,t2 r t1.MASV t2.MASV cuoi ii Boi canh Boi canh cua mot rang buoc toan ven la nhng quan he ma rang buoc o co hieu lc hay noi mot cach khac, o la nhng quan he can phai c kiem tra rang buoc toan ven. Boi canh cua mot rang buoc toan ven co the la mot hoac nhieu quan he. Chang han vi rang buoc toan ven tren th boi canh la mot quan he Sv

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU iii Tam anh hng

Trang 32

Trong qua trnh phan tch thiet ke mot CSDL, ngi phan tch can lap bang tam anh hng cho mot rang buoc toan ven nham xac nh thi iem can phai tien hanh kiem tra cac rang buoc toan ven o. Cac thi iem can phai kiem tra RBTV chnh la nhng thi iem cap nhat d lieu (them /sa/ xoa) Mot bang tam anh hng cua mot RBTV co dang sau: Xoa(X) (Ten RBTV) Them(T) Sa(S) r1 + r2 ... ... .. .. ... ... ... ... rn Bang nay cha toan cac ky hieu + hoac Chang han + tai o tng ng vi dong r1, cot them th co ngha la khi them mot bo vao quan he r1 th can phai kiem tra RBTV Dau - Tai o tng ng vi dong r1, cot sa th co ngha la khi sa mot bo tren quan he r1 th khong can phai kiem tra RBTV nay, II PHAN LOAI RANG BUOC TOAN VEN Trong qua trnh phan tch thiet ke c s d lieu, ngi phan tch phai phat hien tat ca cac rang buoc toan ven tiem an trong CSDL o. Viec phan loai cac rang buoc toan ven la rat co ch, no nham gup cho ngi phan tch co c mot nh hng, tranh bo sot nhng rang buoc toan ven. Cac rang buoc toan ven co the c chia lam hai loai chnh nh sau: + Rang buoc toan ven tren pham vi la mot quan he bao gom :Rang buoc toan ven mien gia tr, rang buoc toan ven lien thuoc tnh, rang buoc toan ven lien bo. + Rang buoc toan ven tren pham vi nhieu quan he bao gom :Rang buoc toan ven phu thuoc ton tai, rang buoc toan ven lien bo - lien quan he, rang buoc toan ven lien thuoc tnh - lien quan he. e minh hoa cho phan ly thuyet cua chng nay, ta neu v du sau ay V du Cho mot CSDL C dung e quan ly viec at hang va giao hang cua mot cong ty. Lc o CSDL C gom cac lc o quan he nh sau: Q1: Khach (MAKH,TENKH,DCKH,DT) Tan t: Moi khach hang co mot ma khach hang (MAKH) duy nhat, moi MAKH xac nh mot ten khach hang (TENKH), mot a ch (DCKH), mot so ien thoai (DT). Q2: Hang(MAHANG,TENHANG,QUYCACH,DVTINH) Tan t: Moi mat hang co mot ma hang (MAHANG) duy nhat, moi MAHANG xac nh mot ten hang (TENHANG), quy cach hang (QUYCACH), n v tnh (DVTINH). Q3: Dathang(SODH,MAHANG,SLDAT,NGAYDH,MAKH) Tan t: Moi lan at hang co so at hang (SODH) xac nh mot ngay at hang (NGAYDH) va ma khach hang tng ng (MAKH). Biet ma so at hang va ma mat hang th biet c so lng at hang(SLDAT). Moi khach hang trong mot ngay co the co nhieu lan at hang
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU Q4: Hoadon(SOHD, NGAYLAP, SODH, TRIGIAHD, NGAYXUAT)

Trang 33

Tan t: Moi hoa n co mot ma so duy nhat la SOHD, moi hoa n ban hang co the gom nhieu mat hang. Moi hoa n xac nh ngay lap hoa n (NGAYLAP), ng vi so at hang nao (SODH). Gia s rang hoa n ban hang theo yeu cau cua ch mot n at hang co ma so la SODH va ngc lai, moi n at hang ch c giai quyet ch trong mot hoa n. Do ieu kien khach quan co the cong ty khong giao ay u cac mat hang cung nh so lng tng mat hang nh yeu cau trong n at hang nhng khong bao gi giao vt ngoai yeu cau. Moi hoa n xac nh mot tr gia cua cac mat hang trong hoa n (TRIGIAHD) va mot ngay xuat kho giao hang cho khach (NGAYXUAT) Q5: Chitiethd (SOHD, MAHANG, GIABAN, SLBAN) Tan t: Moi SOHD, MAHANG xac nh gia ban (GIABAN) va so lng ban (SLBAN) cua mot mat hang trong mot hoa n. Q6: Phieuthu(SOPT, NGAYTHU, MAKH, SOTIEN) Tan t: Moi phieu thu co mot so phieu thu (SOPT) duy nhat, moi SOPT xac nh mot ngay thu (NGAYTHU) cua mot khach hang co ma khach hang la MAKH va so tien thu la SOTIEN. Moi khach hang trong mot ngay co the co nhieu so phieu thu. 1 Rang buoc toan ven lien bo Rang buoc toan ven lien bo la s rang buoc toan ven gia cac bo trong cung mot quan he . Rang buoc toan ven lien bo hay con goi la rang buoc toan ven ve khoa. ay la loai rang buoc toan ven rat pho bien, no co mat trong moi lc o quan he cua CSDL va thng c cac he quan tr CSDL t ong kiem tra. V du: Vi r la mot quan he cua Khach ta co rang buoc toan ven sau R1: t1, t2 r t1. MAKH t2. MAKH Cuoi R1 Them Sa Xoa r 2 + + Rang buoc toan ven ve phu thuoc ton tai:

Rang buoc toan ven ve phu thuoc ton tai con c goi la rang buoc toan ven ve khoa ngoai. Cung giong nh rang buoc toan ven ve khoa chnh, rang buoc toan ven ve phu thuoc ton tai rat pho bien trong CSDL V du: Vi r, s lan lt la mot quan he cua Dathang, Khach ta co rang buoc toan ven sau R2: r[MAKH] s[MAKH] R2 r s 3 Them + Sa + + Xoa +

Rang buoc toan ven ve mien gia tr

Rang buoc toan ven co lien quan en mien gia tr cua cac thuoc tnh trong mot quan he. Rang buoc nay thng gap. Mot so he quan tr CSDL a t ong kiem tra mot so rang buoc loai nay. V du: Vi r la mot quan he cua Hoadon ta co rang buoc toan ven sau
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU R3: t r t.TRIGIAHD > 0 Cuoi R3 r 4 Them + Sa + Xoa -

Trang 34

Rang buoc toan ven lien thuoc tnh

Rang buoc toan ven lien thuoc tnh la moi lien he gia cac thuoc tnh trong mot lc o quan he. V du: Vi r la mot quan he cua Hoadon ta co rang buoc toan ven sau R4: t r t.NGAYLAP <= t.NGAYXUAT Cuoi R4 Them Sa r + + 5 Rang buoc toan ven lien thuoc tnh lien quan he

Xoa -

Rang buoc loai nay la moi lien he gia cac thuoc tnh trong nhieu lc o quan he. V du: Vi r, s lan lt la quan he cua Dathang, Hoadon ta co rang buoc toan ven sau R5: t1 r, t2 s Neu t1.SODH = t2.SODH th t1.NGAYDH <= t2.NGAYXUAT Cuoi R5 Them Sa r + + s + + 6 Rang buoc toan ven ve thuoc tnh tong hp

Xoa + +

Rang buoc toan ven ve thuoc tnh tong hp c xac nh trong trng hp moi thuoc tnh A cua mot lc o quan he Q c tnh toan gia tr t cac thuoc tnh cua cac lc o quan he khac. III BAI TAP 1/ Hay tm cac rang buoc toan ven co trong CSDL cho cac bai tap c liet ke trong chng 3. 2/ QUAN LY THI TOT NGHIEP PTCS Mot phong giao duc huyen muon lap mot he thong thong tin e quan ly viec lam thi tot nghiep pho thong c s. Cong viec lam thi c to chc nh sau: Lanh ao phong giao duc thanh lap nhieu hoi ong thi (moi hoi ong thi gom mot trng hoac mot so trng gan nhau). Moi hoi ong thi co mot ma so duy nhat (MAHT), mot ma so hoi ong thi xac nh ten hoi ong thi(TENHT), ho ten chu tch hoi ong(TENCT), a ch (CHT),ien thoai(THT). Moi hoi ong thi c bo tr cho mot so phong thi, moi phong thi co mot so hieu phong(SOPT) duy nhat, mot phong thi xac nh a ch phong thi (CPT). So hieu phong thi c anh so khac nhau tat ca cac hoi ong thi.
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 35

Giao vien cua cac trng trc thuoc phong c ieu ong en cac hoi ong e coi thi, moi trng co the co hoac khong co th sinh d thi, moi trng co mot ma trng duy nhat (MATR), moi ma trng xac nh mot ten trng(TENTR),a ch (CTR), loai hnh ao tao (LHT) (Cong lap, chuyen, ban cong, dan lap, noi tru,). Giao vien cua mot trng co the lam viec tai nhieu hoi ong thi. Mot giao vien co mot ma giao vien(MAGV), mot ma giao vien xac nh ten giao vien (TENGV), chuyen mon giang day (CHUYENMON), chc danh trong hoi ong thi(CHUCDANH) Cac th sinh d thi co mot so bao danh duy nhat(SOBD), moi so bao danh xac nh ten th sinh(TENTS), ngay sinh (NGSINH), gii tnh (PHAI), moi th sinh c xep thi tai mot phong thi nhat nh cho tat ca cac mon, moi th sinh co the co chng ch nghe (CCNGHE) hoac khong (thuoc tnh CCNGHE kieu chuoi, CCNGHE=x neu th sinh co chng ch nghe va CCNGHE bang rong neu th sinh khong co chng ch nghe).Th sinh cua cung mot trng ch d thi tai mot hoi ong thi. Moi mon thi co mot ma mon thi duy nhat(MAMT), moi ma mon thi xac nh ten mon thi(TENMT). Gia s toan bo cac th sinh eu thi chung mot so mon do s giao duc quy nh. Moi mon thi c to chc trong mot buoi cua mot ngay nao o. ng vi moi mon thi mot th sinh co mot iem thi duy nhat(IEMTHI) Da vao phan tch tren, gia s ta co lc o CSDL sau: Q1: H(MAHT,TENHT, TENCT, CHT,THT) Q2: PT(SOPT,CPT,MAHT) Q3: TS(SOBD, TENTS,NGSINH,PHAI,CCNGHE, MATR,SOPT) Q4: MT(MAMT,TENMT,BUOI,NGAY) Q5: GV(MAGV,TENGV,CHUYENMON,CHUCDANH,MAHT,MATR) Q6: TR(MATR,TENTR,CTR,LHT) Q7: KQ(SOBD,MAMT,IEMTHI) Yeu cau: a) Hay xac nh khoa cho tng lc o quan he. b) Tm tat ca cac rang buoc toan ven co trong CSDL tren. c) Da vao lc o CSDL a thanh lap, hay thc hien cac cau hoi sau ay bang ngon ng ai so quan he. 1. Danh sach cac th sinh thi tai phong thi co so hieu phong thi (SOPT) la 100. Yeu cau cac thong tin:SOBD,TENTS,NGSINH,TENTR 2. Ket qua cua mon thi co ma mon thi (MAMT) la T cua tat ca cac th sinh co ma trng(MATR) la NTMK, ket qua c sap theo chieu giam dan cua iem thi(IEMTHI). Yeu cau cac thong tin:SOBD,TENTS, IEMTHI 3. Ket qua thi cua mot hoc sinh co SOBD la MK01. Yeu cau : TENMT,IEMTHI 4. Tong so th sinh co chng ch nghe(CCNGHE) cua moi trng, thong tin can c sap theo chieu tang dan cua TENTR. Yeu cau cac thong tin: MATR, TENTR, SOLUONGCC

----oOo----

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 36

Chng 4 . PHU THUOC HAM


(functional dependency)

Phu thuoc ham (functional dependency) la mot cong cu dung e bieu dien mot cach hnh thc cac rang buoc toan ven (van tat: rang buoc). Phng phap bieu dien nay co rat nhieu u iem, va ay la mot cong cu cc ky quan trong, gan chat vi ly thuyet thiet ke c s d lieu. Phu thuoc ham c ng dung trong viec giai quyet cac bai toan tm khoa, tm phu toi thieu va chuan hoa c s d lieu. I KHAI NIEM PHU THUOC HAM Cho quan he phanCong sau: phanCong (PHICONG, MAYBAY, NGAYKH, GIOKH) Cushing 83 9/8 10:15a Cushing 116 10/8 1:25p Clark 281 8/8 5:50a Clark 301 12/8 6:35p Clark 83 11/8 10:15a Chin 83 13/8 10:15a Chin 116 12/8 1:25p Copely 281 9/8 5:50a Copely 281 13/8 5:50a Copely 412 15/8 1:25p Quan he phanCong dien ta phi cong nao lai may bay nao va may bay khi hanh vao thi gian nao. Khong phai s phoi hp bat ky nao gia phi cong, may bay va ngay gi khi hanh cung eu c chap nhan ma chung co cac ieu kien rang buoc qui nh sau: + Moi may bay co mot gi khi hanh duy nhat. + Neu biet phi cong, biet ngay gi khi hanh th biet c may bay do phi cong ay lai. + Neu biet may bay, biet ngay khi hanh th biet phi cong lai chuyen bay ay. Cac rang buoc nay la cac v du ve phu thuoc ham va c phat bieu lai nh sau: + MAYBAY xac nh GIOKH + {PHICONG,NGAYKH,GIOKH} xac nh MABAY + {MAYBAY,NGAYKH} xac nh PHICONG hay + GIOKH phu thuoc ham vao MAYBAY + MABAY phu thuoc ham vao {PHICONG,NGAYKH,GIOKH} + PHICONG phu thuoc ham vao {MAYBAY,NGAYKH} va c ky hieu nh sau: + {MAYBAY} GIOKH + {PHICONG,NGAYKH,GIOKH} MABAY + {MAYBAY,NGAYKH} PHICONG Trong ky hieu tren ta a ky hieu MAYBAY thay cho {MAYBAY}. Mot cach tong quat:
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU 1 nh ngha phu thuoc ham

Trang 37

Q(A1,A2,,An) la lc o quan he. X, Y la hai tap con cua Q+={A1,A2,,An}. r la quan he tren Q. t1,t2 la hai bo bat ky cua r. X Y (t1.X = t2.X t1.Y = t2.Y) (Ta noi X xac nh Y hay Y phu thuoc ham vao X (X functional determines Y,Y functional dependent on X ) Tnh chat: + phu thuoc ham X ung vi moi quan he r + phu thuoc ham Y ch ung tren quan he r co cung gia tr tren Y. V du: Quan he sau thoa man phu thuoc ham GIOKH phanCong (PHICONG, MAYBAY, NGAYKH, GIOKH) Cushing 83 9/8 10:15a Cushing 116 10/8 10:15a Clark 281 8/8 10:15a Clark 301 12/8 10:15a Clark 83 11/8 10:15a Chin 83 13/8 10:15a Chin 116 12/8 10:15a Copely 281 9/8 10:15a Copely 281 13/8 10:15a Copely 412 15/8 10:15a tren thc te khong co quan he r nao thoa tnh chat tren nen t ay ve sau neu khong noi ro th vi mot quan he r bat ky ta luon xem phu thuoc ham Y luon luon khong thoa tren r. 2 Phu thuoc ham hien nhien (Trivial Dependencies) He qua: Neu X Y th X Y. Chng minh: Gia s t1.X = t2.X do X Y nen t1.Y = t2.Y theo nh ngha suy ra X Y Trong trng hp nay X Y c goi la phu thuoc ham hien nhien. V du phu thuoc ham X X la phu thuoc ham hien nhien. Vay vi r la quan he bat ky, F la tap phu thuoc ham thoa tren r, ta luon co F {cac phu thuoc ham hien nhien} 3 Thuat toan Satifies Cho quan he r va X, Y la hai tap con cua Q+. Thuat toan SATIFIES se tra ve tr true neu X Y ngc lai la false SATIFIES Vao: quan he r va hai tap con X,Y ra: true neu X Y, ngc lai la false SATIFIES(r,X,Y) 1. Sap cac bo cua quan he r theo X e cac gia tr giong nhau tren X nhom lai vi nhau 2. Neu tap cac bo cung gia tr tren X cho cac gia tr tren Y giong nhau th tra ve true ngc lai la False
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 38

V du 1: SATIFIES(phanCong,MAYBAY,GIOKH) phanCong (PHICONG, MAYBAY, NGAYKH, GIOKH) Cushing 9/8 83 10:15a Clark 11/8 83 10:15a Chin 13/8 83 10:15a Cushing 10/8 116 1:25p Chin 12/8 116 1:25p Clark 8/8 281 5:50a Copely 9/8 281 5:50a Copely 13/8 281 5:50a Clark 12/8 6:35p 301 Copely 15/8 412 1:25p cho ket qua la true ngha la MAYBAYGIOKH V du 2: SATIFIES(phanCong,GIOKH,MAYBAY) phanCong (PHICONG, MAYBAY, NGAYKH, GIOKH) Clark 281 8/8 5:50a Copely 281 9/8 5:50a Copely 281 13/8 5:50a Cushing 83 9/8 10:15a Clark 83 11/8 10:15a Chin 83 13/8 10:15a Cushing 116 10/8 1:25p Chin 116 12/8 1:25p Copely 412 15/8 1:25p Clark 301 12/8 6:35p cho ket qua la false ngha la khong co phu thuoc ham GIOKHMAYBAY 4 i Cac phu thuoc ham co the co Cach tm tat ca tap con cua Q+

Lc o quan he Phancong(PHICONG,MAYBAY,NGAYKH,GIOKH)co tap thuoc tnh Phancong+={PHICONG,MAYBAY,NGAYKH,GIOKH} va tat ca cac tap con co the co cua Phancong+ c cho bi bang sau:
PHICONG {PHICONG} MAYBAY {MAYBAY} {PHICONG,MAYBAY} NGAYKH {NGAYKH} {PHICONG,NGAYKH} {MAYBAY,NGAYKH} {PHICONG,MAYBAY,NGAYKH} GIOKH {GIOKH} {PHICONG,GIOKH} {MAYBAY,GIOKH} {PHICONG,MAYBAY,GIOKH} {NGAYKH,GIOKH} {PHICONG,NGAYKH,GIOKH} {MAYBAY,NGAYKH,GIOKH} {PHICONG,MAYBAY,NGAYKH,GIOKH}

So tap con co the co cua Q+ = {A1,A2,...,An} la 2n ii Cach tm tat ca cac phu thuoc ham co the co cua Q ng vi moi tap con cua Phancong+ cho 2n = 24 = 16 phu thuoc ham co the co. So phu thuoc ham co the co la 24 * 24 = 16 * 16 = 256
PTHHN

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU


{PHICONG} {MAYBAY} {MAYBAY,PHICONG} {NGAYKH} {PHICONG,NGAYKH} {MAYBAY,NGAYKH} {MAYBAY,PHICONG,NGAYKH} {GIOKH} {PHICONG,GIOKH} {MAYBAY,GIOKH} {MAYBAY,PHICONG,GIOKH} {NGAYKH,GIOKH} {PHICONG,NGAYKH,GIOKH} {MAYBAY,NGAYKH,GIOKH} {MAYBAY,PHICONG,NGAYKH,GIOKH} {PHICONG} {PHICONG} {PHICONG} {PHICONG} {MAYBAY} {PHICONG} {MAYBAY,PHICONG} {PHICONG} {NGAYKH} {PHICONG} {PHICONG,NGAYKH} {PHICONG} {MAYBAY,NGAYKH} {PHICONG} {MAYBAY,PHICONG,NGAYKH} {PHICONG} {GIOKH} {PHICONG} {PHICONG,GIOKH} {PHICONG} {MAYBAY,GIOKH} {PHICONG} {MAYBAY,PHICONG,GIOKH} {PHICONG} {NGAYKH,GIOKH} {PHICONG} {PHICONG,NGAYKH,GIOKH} {PHICONG} {MAYBAY,NGAYKH,GIOKH} {PHICONG} {MAYBAY,PHICONG,NGAYKH,GIOKH} {MAYBAY} {MAYBAY} {PHICONG} {MAYBAY} {MAYBAY} {MAYBAY} {MAYBAY,PHICONG} {MAYBAY} {NGAYKH} {MAYBAY} {PHICONG,NGAYKH} {MAYBAY} {MAYBAY,NGAYKH} {MAYBAY} {MAYBAY,PHICONG,NGAYKH} {MAYBAY} {GIOKH} {MAYBAY} {PHICONG,GIOKH} {MAYBAY} {MAYBAY,GIOKH} {MAYBAY} {MAYBAY,PHICONG,GIOKH} {MAYBAY} {NGAYKH,GIOKH} {MAYBAY} {PHICONG,NGAYKH,GIOKH} {MAYBAY} {MAYBAY,NGAYKH,GIOKH} {MAYBAY} {MAYBAY,PHICONG,NGAYKH,GIOKH} {PHICONG,MAYBAY} {PHICONG,MAYBAY} {PHICONG} {PHICONG,MAYBAY} {MAYBAY} {PHICONG,MAYBAY} {PHICONG,MAYBAY} {PHICONG,MAYBAY} {NGAYKH} {PHICONG,MAYBAY} {PHICONG,NGAYKH} {PHICONG,MAYBAY} {MAYBAY,NGAYKH} {PHICONG,MAYBAY} {MAYBAY,PHICONG,NGAYKH} {PHICONG,MAYBAY} {GIOKH} {PHICONG,MAYBAY} {PHICONG,GIOKH} {PHICONG,MAYBAY} {MAYBAY,GIOKH} {PHICONG,MAYBAY} {MAYBAY,PHICONG,GIOKH} {PHICONG,MAYBAY} {NGAYKH,GIOKH} {PHICONG,MAYBAY} {PHICONG,NGAYKH,GIOKH} FFFFFFFFFFFFFFFPTHHN PTHHN FFFFFFFFFFFFFFPTHHN FPTHHN FFFFFF FF+ FFFFFPTHHN PTHHN PTHHN PTHHN FFFFF+ F+ F+ F+ FF-

Trang 39

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU


{PHICONG,MAYBAY} {MAYBAY,NGAYKH,GIOKH} {PHICONG,MAYBAY} {MAYBAY,PHICONG,NGAYKH,GIOKH} {NGAYKH} {NGAYKH} {PHICONG} {NGAYKH} {MAYBAY} {NGAYKH} {PHICONG,MAYBAY} {NGAYKH} {NGAYKH} {NGAYKH} {PHICONG,NGAYKH} {NGAYKH} {MAYBAY,NGAYKH} {NGAYKH} {MAYBAY,PHICONG,NGAYKH} {NGAYKH} {GIOKH} {NGAYKH} {PHICONG,GIOKH} {NGAYKH} {MAYBAY,GIOKH} {NGAYKH} {MAYBAY,PHICONG,GIOKH} {NGAYKH} {NGAYKH,GIOKH} {NGAYKH} {PHICONG,NGAYKH,GIOKH} {NGAYKH} {MAYBAY,NGAYKH,GIOKH} {NGAYKH} {MAYBAY,PHICONG,NGAYKH,GIOKH} {PHICONG,NGAYKH} {PHICONG,NGAYKH} {PHICONG} {PHICONG,NGAYKH} {MAYBAY} {PHICONG,NGAYKH} {PHICONG,MAYBAY} {PHICONG,NGAYKH} {NGAYKH} {PHICONG,NGAYKH} {PHICONG,NGAYKH} {PHICONG,NGAYKH} {MAYBAY,NGAYKH} {PHICONG,NGAYKH} {MAYBAY,PHICONG,NGAYKH} {PHICONG,NGAYKH} {GIOKH} {PHICONG,NGAYKH} {PHICONG,GIOKH} {PHICONG,NGAYKH} {MAYBAY,GIOKH} {PHICONG,NGAYKH} {MAYBAY,PHICONG,GIOKH} {PHICONG,NGAYKH} {NGAYKH,GIOKH} {PHICONG,NGAYKH} {PHICONG,NGAYKH,GIOKH} {PHICONG,NGAYKH} {MAYBAY,NGAYKH,GIOKH} {PHICONG,NGAYKH} {MAYBAY,PHICONG,NGAYKH,GIOKH} {MAYBAY,NGAYKH} {MAYBAY,NGAYKH} {PHICONG} {MAYBAY,NGAYKH} {MAYBAY} {MAYBAY,NGAYKH} {PHICONG,MAYBAY} {MAYBAY,NGAYKH} {NGAYKH} {MAYBAY,NGAYKH} {PHICONG,NGAYKH} {MAYBAY,NGAYKH} {MAYBAY,NGAYKH} {MAYBAY,NGAYKH} {MAYBAY,PHICONG,NGAYKH} {MAYBAY,NGAYKH} {GIOKH} {MAYBAY,NGAYKH} {PHICONG,GIOKH} {MAYBAY,NGAYKH} {MAYBAY,GIOKH} {MAYBAY,NGAYKH} {MAYBAY,PHICONG,GIOKH} {MAYBAY,NGAYKH} {NGAYKH,GIOKH} {MAYBAY,NGAYKH} {PHICONG,NGAYKH,GIOKH} {MAYBAY,NGAYKH} {MAYBAY,NGAYKH,GIOKH} {MAYBAY,NGAYKH} {MAYBAY,PHICONG,NGAYKH,GIOKH} {PHICONG,MAYBAY,NGAYKH} {PHICONG,MAYBAY,NGAYKH} {PHICONG} {PHICONG,MAYBAY,NGAYKH} {MAYBAY} {PHICONG,MAYBAY,NGAYKH} {PHICONG,MAYBAY} {PHICONG,MAYBAY,NGAYKH} {NGAYKH} {PHICONG,MAYBAY,NGAYKH} {PHICONG,NGAYKH} {PHICONG,MAYBAY,NGAYKH} {MAYBAY,NGAYKH} {PHICONG,MAYBAY,NGAYKH} {PHICONG,MAYBAY,NGAYKH} {PHICONG,MAYBAY,NGAYKH} {GIOKH} {PHICONG,MAYBAY,NGAYKH} {PHICONG,GIOKH} {PHICONG,MAYBAY,NGAYKH} {MAYBAY,GIOKH} FFFFFFPTHHN FFFFFFFFFFFPTHHN PTHHN FFPTHHN PTHHN FFFFFFFFFFPTHHN F PTHHN F+ PTHHN F+ PTHHN F+ F+ F+ F+ F+ F+ F+ F+ F+ PTHHN PTHHN PTHHN PTHHN PTHHN PTHHN PTHHN PTHHN F+ F+ F+

Trang 40

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU


{PHICONG,MAYBAY,NGAYKH} {MAYBAY,PHICONG,GIOKH} {PHICONG,MAYBAY,NGAYKH} {NGAYKH,GIOKH} {PHICONG,MAYBAY,NGAYKH} {PHICONG,NGAYKH,GIOKH} {PHICONG,MAYBAY,NGAYKH} {MAYBAY,NGAYKH,GIOKH} {PHICONG,MAYBAY,NGAYKH} {MAYBAY,PHICONG,NGAYKH,GIOKH} .................................................... {PHICONG,NGAYKH,GIOKH} {PHICONG,NGAYKH,GIOKH} {PHICONG} {PHICONG,NGAYKH,GIOKH} {MAYBAY} {PHICONG,NGAYKH,GIOKH} {PHICONG,MAYBAY} {PHICONG,NGAYKH,GIOKH} {NGAYKH} {PHICONG,NGAYKH,GIOKH} {PHICONG,NGAYKH} {PHICONG,NGAYKH,GIOKH} {MAYBAY,NGAYKH} {PHICONG,NGAYKH,GIOKH} {MAYBAY,PHICONG,NGAYKH} {PHICONG,NGAYKH,GIOKH} {GIOKH} {PHICONG,NGAYKH,GIOKH} {PHICONG,GIOKH} {PHICONG,NGAYKH,GIOKH} {MAYBAY,GIOKH} {PHICONG,NGAYKH,GIOKH} {MAYBAY,PHICONG,GIOKH} {PHICONG,NGAYKH,GIOKH} {NGAYKH,GIOKH} {PHICONG,NGAYKH,GIOKH} {PHICONG,NGAYKH,GIOKH} {PHICONG,NGAYKH,GIOKH} {MAYBAY,NGAYKH,GIOKH} {PHICONG,NGAYKH,GIOKH} {MAYBAY,PHICONG,NGAYKH,GIOKH} {MAYBAY,NGAYKH,GIOKH} {MAYBAY,NGAYKH,GIOKH} {PHICONG} {MAYBAY,NGAYKH,GIOKH} {MAYBAY} {MAYBAY,NGAYKH,GIOKH} {PHICONG,MAYBAY} {MAYBAY,NGAYKH,GIOKH} {NGAYKH} {MAYBAY,NGAYKH,GIOKH} {PHICONG,NGAYKH} {MAYBAY,NGAYKH,GIOKH} {MAYBAY,NGAYKH} {MAYBAY,NGAYKH,GIOKH} {MAYBAY,PHICONG,NGAYKH} {MAYBAY,NGAYKH,GIOKH} {GIOKH} {MAYBAY,NGAYKH,GIOKH} {PHICONG,GIOKH} {MAYBAY,NGAYKH,GIOKH} {MAYBAY,GIOKH} {MAYBAY,NGAYKH,GIOKH} {MAYBAY,PHICONG,GIOKH} {MAYBAY,NGAYKH,GIOKH} {NGAYKH,GIOKH} {MAYBAY,NGAYKH,GIOKH} {PHICONG,NGAYKH,GIOKH} {MAYBAY,NGAYKH,GIOKH} {MAYBAY,NGAYKH,GIOKH} {MAYBAY,NGAYKH,GIOKH} {MAYBAY,PHICONG,NGAYKH,GIOKH} ................ F+ F+ F+ F+ F+ PTHHN PTHHN F F+ PTHHN PTHHN F+ F+ PTHHN PTHHN F+ F+ PTHHN PTHHN F+ F+ PTHHN F+ PTHHN F+ PTHHN F+ PTHHN F+ PTHHN F+ PTHHN F+ PTHHN F+ PTHHN F+ ....

Trang 41

So phu thuoc ham co the co cua Q(A1,A2,...,An) la 2n x 2n =22n II HE LUAT DAN ARMSTRONG (Armstrong inference rule) Ngi ta thng dung F e ch tap cac phu thuoc ham cua lc o quan he Q. Ta co the anh so cac phu thuoc ham cua F la f1, f2, .., fm. Quy c rang ch can mo ta cac phu thuoc ham khong hien nhien trong tap F (cac phu thuoc ham hien nhien c ngam hieu la a co trong F). 1 Phu thuoc ham c suy dien logic t F Noi rang phu thuoc ham X Y c suy dien logic t F neu mot quan he r thoa man tat ca cac phu thuoc ham cua F th cung thoa phu thuoc ham X Y. Ky hieu F|= X Y. Bao ong cua F ky hieu F+ la tap tat ca cac phu thuoc ham c suy dien logic t F. Cac tnh chat cua tap F+ 1. Tnh phan xa: Vi moi tap phu thuoc ham F+ ta luon luon co F F+ 2. Tnh n ieu: Neu F G th F+ G+ 3. Tnh luy ang: Vi moi tap phu thuoc ham F ta luon luon co (F+)+ = F+. Goi G la tap tat ca cac phu thuoc ham co the co cua r, phan phu cua F ky hieu F- = G - F+ Chng minh
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU 1. X Y F r thoa X Y X Y F+ 2. Neu X Y la phu thuoc ham thuoc F+ ta phai chng minh X Y thuoc G+ Gia s r thoa tat ca cac phu thuoc ham cua G (1) r thoa tat ca phu thuoc ham cua F v F G r thoa phu thuoc ham X Y (2) v X YF+ (1) va (2) X Y G+ F+ G+ 3. F F+ (tnh phan xa) F+ (F+)+ (1) Neu X Y (F+)+ (2) X Y F+ that vay: (3) Gia s r thoa tat ca cac phu thuoc ham cua F (4) + r thoa tat ca cac phu thuoc ham cua F (theo nh ngha) r thoa tat ca cac phu thuoc ham cua (F+)+ (theo nh ngha) r thoa X Y (v (2)) X Y F+ (1) va (3) (F+)+ = F+ 2 He luat dan Armstrong

Trang 42

He luat dan la mot phat bieu cho biet neu mot quan he r thoa man mot vai phu thuoc ham th no phai thoa man phu thuoc ham khac. Vi X,Y,Z,W la tap con cua Q+. r la quan he bat ky cua Q. Ta co 6 luat dan sau: 1. Luat phan xa (reflexive rule): X X 2. Luat them vao (augmentation rule): Cho X Y XZ Y 3. Luat hp (union rule): Cho X Y, X Z X YZ 4. Luat phan ra (decomposition rule): Cho X YZ X Y 5. Luat bac cau (transitive rule): Cho X Y, Y Z X Z 6. Luat bac cau gia (pseudo transitive rule): Cho X Y, YZ W XZ W He tien e Armstrong (Armstrongs Axioms) gom 3 luat: (1), (2) va (5) Chng minh Vi t1,t2 la hai bo bat ky cua quan he r. Luat phan xa: Ta co (t1.X = t2.X t1.X = t2.X) theo nh ngha suy ra X X Luat them vao: gia s co t1.XZ = t2.XZ (1) t1.X = t2.X t1.Y = t2.Y (do X Y) (2) XZ Y (do (1) (2)) Luat hp: gia s co t1.X = t2.X (1) t1.X = t2.X va t1.Z = t2.Z t1.XZ = t2.XZ (2) X YZ (do (1) (2)) Luat phan ra: ga s co: t1.X = t2.X (1) t1.YZ = t2.YZ (do X YZ) t1.Y = t2.Y (2) X Y (do (1) (2)) Luat bac cau: gia s co t1.X = t2.X (1) t1.Y = t2.Y t1.Z = t2.Z (2) X Z (do (1) (2)) Luat bac cau gia: gia s co: t1.XZ = t2.XZ (1)
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU Trong 6 luat tren, ch can 3 nay. i

Trang 43 t1.X = t2.X va t1.Z = t2.Z (2) t1.Y = t2.Y (do X Y) (3) t1.YZ = t2.YZ (Ket hp (2) va (3)) t1.W = t2.W (do YZ W) (4) XZ W luat 1, 2 va 6 la u, ngha la cac luat con lai co the suy dan t ba luat

He luat dan Armstrong la ung

Noi rang X Y la phu thuoc ham c suy dien nh vao luat dan Armstrong neu ton tai cac tap phu thuoc ham F0 F1 ... Fn sao cho X Y Fn vi F0,F1,...,Fn lan lt c hnh thanh thoa phng phap sau: Bc 1: F0 = F Bc 2:chon mot so phu thuoc ham trong Fi ap dung he luat dan Armstrong e thu c mot so phu thuoc ham mi. at Fi+1= Fi {cac phu thuoc ham mi} V du: Cho F = {AB C,C B,BC A} th co F0 F1 F2 sao cho C A F2 F0 = {AB C,C B, BC A} ap dung luat hp cho C B va C C F1 = {AB C,C B, BC A, C BC} ap dung luat bac cau. F2 = {AB C,C B, BC A, C BC, C A} He qua: He luat dan Armstrong la ung ngha la neu F la tap cac phu thuoc ham ung tren quan he r va X Y la mot phu thuoc ham c suy dien t F nh he luat dan Armstrong th X Y ung tren quan he r. Vay X Y la phu thuoc ham c suy dien logic t F Phan tiep theo chung ta se chng minh he luat dan Armstrong la ay u, ngha la moi phu thuoc ham X Y c suy dien logic t F se c suy dien t F nh he luat dan Armstrong. ii Bao ong cua tap thuoc tnh X (closures of attribute sets)
(a) nh ngha

Q la lc o quan he, r la quan he tng ng, F la tap cac phu thuoc ham trong Q. X,Ai la cac tap con cua Q+. + Bao ong cua tap thuoc tnh X oi vi F ky hieu la X+ (hoac X F ) c nh ngha nh sau: X+ = Ai vi X Ai la phu thuoc ham c suy dien t F nh he tien e Armstrong Tnh chat: + bao ong cua Q la Q+
(b)Cac tnh chat cua bao ong

Neu X,Y la cac tap con cua tap thuoc tnh Q+ th ta co cac tnh chat sau ay: 1. Tnh phan xa: X X+ 2. Tnh n ieu: Neu X Y th X+ Y+ 3. Tnh luy ang: X++ = X+ 4. (XY)+ X+Y+ 5. (X+Y)+ = (XY+)+ = (X+Y+)+ 6. X Y Y+ X+ 7. X X+ va X+ X 8. X+ = Y+ X Y va Y X Chng minh:
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU 1. 2. 3.

Trang 44

X X X+ X A X+ X A Y A A Y+ A X++ X+ A va X X+ (ap dung 8) X A AX+ X++ X+. Ap dung 1 X++ X+ ............................................... 7. X A1 va X A2 X A1A2 .... XAi = X+ X+ X X+ X (Phu thuoc ham hien nhien) ...............................................
(c) Thuat toan tm bao ong

Tnh lien tiep tap cac tap thuoc tnh X0,X1,X2,... theo phng phap sau: Bc 1: X0 = X Bc 2: lan lt xet cac phu thuoc ham cua F Neu YZ co Y Xi th Xi+1 = Xi Z Loai phu thuoc ham Y Z khoi F Bc 3: Neu bc 2 khong tnh c Xi+1 th Xi chnh la bao ong cua X Ngc lai lap lai bc 2 V du 1: Cho lc o quan he Q(ABCDEGH) va tap phu thuoc ham F F = { f1: B A f2: DA CE f3: D H f4: GH C f5: AC D } Tm bao ong cua cac tap X = {AC} da tren F. Giai: Bc 1: X0 = AC Bc 2: Do f1, f2, f3, f4 khong thoa. f5 thoa v X+ AC X1 = AC D = ACD Lap lai bc 2: f1 khong thoa, f2 thoa v X1 AD: X2 = ACD CE = ACDE f3 thoa v X2 D X3 = ACDE H = ACDEH f4 khong thoa, f5 khong xet v a thoa Lap lai bc 2: f2,f3 khong xet v a thoa, f1,f4 khong thoa,f5 khong xet v a thoa.Trong bc nay X3 khong thay oi => X+=X3={ACDEH} la bao ong cua X V du 2: Q(A,B,C,D,E,G) F = {f1: A C; f2: A EG; f3: B D; f4: G E} X = {A,B}; Y = {C,G,D} Ket qua: X+ = {ABCDEG} Y+ = {CGDE}
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU


(d)nh ly

Trang 45

Thuat toan tm bao ong cho ket qua Xi = X+ Chng minh 1. Ta chng minh Xi X+ bang phng phap qui nap. Bc c s chng minh X X0 Theo tnh phan xa cua he luat dan th X X theo thuat toan th X0 = X X X0 Vay X0 X+ Bc qui nap gia s co X Xi-1 (1) ta phai chng minh X Xi Theo thuat toan tm bao ong th co fj = Xj Yj e Xi-1 Xj va Xi = Xi-1 Yj Xi-1 Yj (2).(1)va (2) X Yj (3) (1) va (3) X Xi-1Yj = Xi X Xi Vay Xi X+ 2. Ta chng minh A X+ A Xi e ket luan Xi X+ A X+ nen co mot phu thuoc ham X A. Theo thuat toan tm bao ong th X Xi A Xi
(e) He qua

1. Q la lc o quan he. F la tap phu thuoc ham, A la thuoc tnh ch xuat hien ve phai cua cac phu thuoc ham trong F th X+ = (X A)+ A 2. Q la lc o quan he. F la tap phu thuoc ham, X la tap con cua Q+ va Y = {cac thuoc tnh xuat hien ve phai cua cac phu thuoc ham trong F} th X+ X Y. Chng minh 1. Theo thuat toan tm bao ong th bao ong X+ hay (X-A)+ c hnh thanh qua mot so bc. Ta chng minh bieu thc X+ = (X A)+ A theo qui nap. Bc c s: X0 = X, (X-A)0 = X - A X0 =(X - A)0 A ung Bc qui nap: gia s ta co Xi-1 =(X - A)i-1 A. Bao ong Xi c hnh thanh do co fj = Xj Yj e: Xi-1 Xj va Xi = Xi-1 Yj = (X - A)i-1 A Yj (1). S hnh thanh Xi luon keo theo s hnh thanh (X-A)i v: Xi-1 = (X - A)i-1 A Xj do Xj khong cha A nen: (X - A)i-1 Xj vay (X - A)i = (X - A)i-1 Yj (2) (1) va (2) cho: Xi = (X - A)i A la ieu phai chng minh 2. Bc c s: X0 = X X0 X Y Bc qui nap: gia s co Xi-1 X Y ta chng minh Xi X Y. Bao ong Xi c hnh thanh do co fj = Xj Yj e: Xi-1 Xj va Xi = Xi-1 Yj X Y Yj do Yj la ve phai cua phu thuoc ham nen Y Yj = Y vay Xi X Y 3 i He luat dan Armstrong la ay u nh ly

He luat dan Armstrong la ay u ngha la moi phu thuoc ham X Y c suy dien logic t F se c suy dien t F nh he luat dan Armstrong. Chng minh: e chng minh X Y c suy dien t F nh he luat dan Armstrong ta chng minh bang phng phap phan chng ngha la neu X Y khong suy dien c t he luat dan Armstrong th co quan
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 46

he r thoa cac phu thuoc ham F nhng khong thoa phu thuoc ham X Y (ieu nay nghch ly vi gia thuyet la moi quan he r thoa cac phu thuoc ham trong F th r cung thoa phu thuoc ham X Y). That vay gia s Q(A1,A2,...,An) la lc o quan he, ai,bi la cac gia tr khac nhau tren mien gia tr Ai. r la quan he tren Q co hai bo t va tc xac nh nh sau: t=(a1,a2,...,an) a Neu A i X + t '.Ai = i bi Ngc lai
Vay quan he r co t.X = t.X nhng t.Y t.Y (t.Y gom cac gia tr ai con t.Y phai co t nhat mot bi neu khong Y X+ X Y c suy dan t he luat dan Armstrong ). Nh vay r khong thoa phu thuoc ham X Y. Bay gi ta chng minh quan he r thoa moi phu thuoc ham trong F. Goi W Z la phu thuoc ham trong F. Neu W X+ t.W t.W menh e (t.W = t.W t.Z = t.Z)ung Neu W X+ t.Z = t.Z = bo cac ai menh e (t.W = t.W t.Z = t.Z)ung

ii

He qua:

Bao ong cua tap thuoc tnh X oi vi F la: X+ = Ai vi X Ai la phu thuoc ham c suy dien logic t F Tnh chat X Y F+ Y X+ Chng minh X Y co k sao cho Y = Ak Ai = X+ Y X+ X+ = Y (X+ - Y) X Y (X+ - Y) X Y Bai toan thanh vien Noi rang X Y la thanh vien cua F neu X Y F+ Mot van e quan trong khi nghien cu ly thuyet CSDL la khi cho trc tap cac phu thuoc ham F va mot phu thuoc ham X Y, lam the nao e biet X Y co thuoc F+ hay khong bai toan nay c goi la bai toan thanh vien. e tra li cau hoi nay ta co the tnh F+ roi xac nh xem X Y co thuoc F+ hay khong. Viec tnh F+ la mot cong viec oi hoi thi gian va cong sc. Tuy nhien, thay v tnh F+ chung ta co the dung thuat toan sau e xac nh X Y co la thanh vien cua F hay khong. Thuat toan nay s dung tnh chat va chng minh tren. Thuat toan xac nh f = XY co la thanh vien cua F hay khong Bc 1: tnh X+ Bc 2: so sanh X+ vi Y neu X+ Y th ta khang nh X Y la thanh vien cua F Ban oc hay nam that ky thuat toan nay no m au cho mot loat ng dung ve sau. III THUAT TOAN TM F+ 1 Thuat toan c ban
e tnh bao ong F+ cua tap cac phu thuoc ham F ta thc hien cac bc sau: Bc 1: Tm tat ca tap con cua Q+ Bc 2: Tm tat ca cac phu thuoc ham co the co cua Q. Bc 3: Tm bao ong cua tat ca tap con cua Q.

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 47

Bc 4: Da vao bao ong cua tat ca cac tap con a tm e xac nh phu thuoc ham nao thuoc F+ V du 3: Cho lc o quan he Q(A,B,C) F = {AB C,C B} la tap phu thuoc ham tren Q. F+ c tnh lan lt theo cac bc tren la nh sau: Bc 1: Cac tap con cua Q+ A B C {A} {B} {C} {A,B} {A,C} {B,C} {A,B,C} Bc 2: cac phu thuoc ham co the co cua F (khong ke cac phu thuoc ham hien nhien) A B ABC BC ABCF C A CBCF+ ACBCF+ BCAC + + AAB AABC BAC ABACF CBF CABC ACABCF BCABC A C BA BBC ABBCF+ CAB ACBF+ BCA AAC BAB BABC ABABCF+ CAC ACABF+ BCAB Bc 3: bao ong cua cac tap con cua Q oi vi F + = A+ = A C+ = BC + + ABC =ABC B = B AC+ = ABC + AB = ABC BC+ = BC Bc 4: F = {AB C,C B} suy ra: F+ = {ABC,ABAC,ABBC,ABABC,CB,CBC,ACB,ACAB,ACBC,ACABC}

Thuat toan cai tien

Da vao thuat toan c ban tren, ta nhan thay co the tnh F+ theo cac bc sau: Bc 1: Tm tat ca tap con cua Q+ Bc 2: Tm bao ong cua tat ca tap con cua Q+. Bc 4: Da vao bao ong cua cac tap con a tm e suy ra cac phu thuoc ham thuoc F+. V du bao ong A+ = A ch gom cac phu thuoc ham hien nhien bao ong {AB}+ = ABC cho cac phu thuoc ham khong hien nhien sau ABC,ABAC,ABBC,ABABC (Tm tat ca cac tap con cua {ABC} roi bo cac tap con cua {AB}) Cac tap con cua {ABC} la: , {A},{B},{AB},{C},{AC},{BC},{ABC} Bo cac tap con cua {AB} la: , {A},{B},{AB},{C},{AC},{BC},{ABC} Cac tap con lai chnh la ve phai cua phu thuoc ham co ve trai la AB IV BAI TAP B b1 b2 b1 b1 b2 C c1 c2 c3 c4 c5 D d1 d2 d3 d3 d1 E) e1 d1 e1 e1 e1
1/ Cho quan he sau:

r( A a1 a1 a2 a2 a3 Phu thuoc ham nao sau ay thoa r: AD,ABD,CBDE,EA,AE 2/ Cho Q+={ABCD}

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 48

a) Tm tat cac cac tap con cua Q b) Tm tat ca cac phu thuoc ham co the co cua Q (khong liet ke phu thuoc ham hien nhien) 3/ Tm bao ong F+ cua quan he phanCong(PHICONG,MAYBAY,NGAYKH,GIOKH) 4/ Cho F = {ABC,BD,CDE,CEGH,GA} a) Hay chng to phu thuoc ham ABE,ABG c suy dien t F nh luat dan Armstrong b) Tm bao ong cua AB(vi bai toan khong noi g ve lc o quan he Q ta ngam hieu Q+ la tap thuoc tnh co trong F ngha la Q+={ABCDEGH}) 5/ Cho F = {AD,ABDE,CEG,EH}. Hay tm bao ong cua AB. 6/ Cho F={ABE,AGI,BEI,EG,GIH}. a) Hay chng to phu thuoc ham ABGH c suy dien t F nh luat dan Armstrong b) Tm bao ong cua {AB} 7/ Cho F={AD,ABE,BIE,CDI,EC} tm bao ong cua {AE}+={ACDEI}

----oOo----

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 49

Chng 5 . PHU CUA TAP PHU THUOC HAM


I NH NGHA
Noi rang hai tap phu thuoc ham F va G la tng ng (Equivalent) neu F+ = G+ ky hieu F G. Ta noi F phu G neu F+ G+ Thuat toan xac nh F va G co tng ng khong Bc 1: Vi moi phu thuoc ham XY cua F ta xac nh xem XY co la thanh vien cua G khong Bc 2: Vi moi phu thuoc ham XY cua G ta xac nh xem XY co la thanh vien cua F khong Neu ca hai bc tren eu ung th F G V du 1: Cho lc o quan he Q(ABCDE) hai tap phu thuoc ham: F={ABC,AD,CDE} va G = {ABCE,AABD,CDE} a) F co tng ng vi G khong? b) F co tng ng vi G={ABCDE} khong? Giai: + a) Ta co AG =ABCDE trong G+ co ABC va AD F G+ F+ G+ (1).
+ AF =ABCDE trong F+ co ABCE va AABD F+ G F+ G+ (2)

(1) va(2) F+ = G+ F G. + b) Do (CD) G ' = CD G+ khong cha phu thuoc ham CDE F khong tng ng
vi G

II

PHU TOI THIEU CUA MOT TAP PHU THUOC HAM (minimal cover) 1 Phu thuoc ham co ve trai d tha

F la tap cac phu thuoc ham tren lc o quan he Q, Z la tap thuoc tnh, ZYF. Noi rang phu thuoc ham Z Y co ve trai d tha (phu thuoc khong ay u) neu co mot AZ sao cho: F F-{Z Y}{(Z-A) Y} Ngc lai Z Y la phu thuoc ham co ve trai khong d tha hay Y phu thuoc ham ay u vao Z hay phu thuoc ham ay u. V du 2: Q(A,B,C) F={ABC; BC} F F-{ABC}{(AB-A)C}={BC} AB C la phu thuoc ham khong ay u B C la phu thuoc ham ay u Chu y: phu thuoc ham co ve trai cha mot thuoc tnh la phu thuoc ham ay u.
V du 3: cho tap phu thuoc ham F = {A BC,B C,AB D} th phu thuoc ham ABD co ve trai d tha B v: F F {AB D}{A D} {A BC,B C,A D} Ta noi F la tap phu thuoc ham co ve trai khong d tha neu F khong cha phu thuoc ham co ve trai d tha. Thuat toan loai khoi F cac phu thuoc ham co ve trai d tha. Bc 1: lan lt thc hien bc 2 cho cac phu thuoc ham XY cua F
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 50

Bc 2:Vi moi tap con that s X cua X. Neu X'Y F+ th thay XY trong F bang X'Y thc hien lai bc 2 V du: v du 3 phu thuoc ham ABD co A+=ABCD ADF+. Trong F ta thay ABD bang AD F {A BC,B C,A D} 2 Tap phu thuoc ham co ve phai mot thuoc tnh (the right sides of dependencies has a single attribute)
Moi tap phu thuoc ham F eu tng ng vi mot tap phu thuoc ham G ma ve phai cua cac phu thuoc ham trong G ch gom mot thuoc tnh. V du 4: cho F = {A BC,B C,AB D} ta suy ra F {A B, A C ,B C,AB D} = G G c goi la tap phu thuoc ham co ve phai mot thuoc tnh.

Tap phu thuoc ham khong d tha

Noi rang F la tap phu thuoc ham khong d tha neu khong ton tai F F sao cho F F. Ngc lai F la tap phu thuoc ham d tha. V du: cho F = {ABC, BD, ABD} th F d tha v F F= {ABC, BD}

Thuat toan loai khoi F cac phu thuoc ham d tha: Bc 1: Lan lt xet cac phu thuoc ham X Y cua F Bc 2: neu X Y la thanh vien cua F - {X Y} th loai X Y khoi F Bc 3: thc hien bc 2 cho cac phu thuoc ham tiep theo cua F 4 Tap phu thuoc ham toi thieu (minimal cover)
F c goi la mot tap phu thuoc ham toi thieu (hay phu toi thieu) neu F thoa ong thi ba ieu kien sau: 1. F la tap phu thuoc ham co ve trai khong d tha 2. F la tap phu thuoc ham co ve phai mot thuoc tnh. 3. F la tap phu thuoc ham khong d tha

Thuat toan tm phu toi thieu cua mot tap phu thuoc ham Bc 1: loai khoi F cac phu thuoc ham co ve trai d tha. Bc 2: Tach cac phu thuoc ham co ve phai tren mot thuoc tnh thanh cac phu thuoc ham co ve phai mot thuoc tnh. Bc 3: loai khoi F cac phu thuoc ham d tha.
Chu y: Theo thuat toan tren, t mot tap phu thuoc ham F luon tm c t nhat mot phu toi thieu Ftt e FFtt va neu th t loai cac phu thuoc ham trong tap F la khac nhau th co the se thu c nhng phu toi thieu khac nhau. V du 5: Cho lc o quan he Q(A,B,C,D) va tap phu thuoc F nh sau: F={AB CD,B C,C D} Hay tnh phu toi thieu cua F. Giai: Bc 1: ABCD la phu thuoc ham co ve trai d tha? B CD F+? tra li: B+=BCD B CD F+
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU


Vay AB CD la phu thuoc ham co ve trai d tha A ket qua cua bc 1 la: F{B CD;B C;C D} Bc 2: ket qua cua bc 2 la: F{B D; B C;C D}=F1tt Bc 3: trong F1tt, B C la phu thuoc ham d tha? B C G+? vi G = F1tt - {B C}={B D;C D} BG+=BD B C G+ trong F1tt B C khong d tha. trong F1tt,B D la phu thuoc ham d tha? B D G+? vi G = F1tt - {B D}={B C;C D} BG+=BCD B D G+ trong F1tt,B D d tha. ket qua cua bc 3 cho phu toi thieu: F{B C;C D}=Ftt V du 6: Cho lc o quan he Q(MSCD,MSSV,CD,HG) va tap phu thuoc F nh sau: F = {MSCD CD; CD MSCD; CD,MSSV HG; MSCD,HG MSSV; CD,HG MSSV; MSCD,MSSV HG} Hay tm phu toi thieu cua F ket qua: Ftt = {MSCD CD; CD MSCD; CD,HG MSSV; MSCD,MSSV HG}

Trang 51

III KHOA CUA LC O QUAN HE (Key) 1 nh Ngha Q(A1,A2,,An)la lc o quan he. Q+ la tap thuoc tnh cua Q. F la tap phu thuoc ham tren Q. K la tap con cua Q+. Noi rang K la mot khoa cua Q neu: 1. K+ = Q+ va 2. Khong ton tai K' K sao cho K+= Q+
Tap thuoc tnh S c goi la sieu khoa neu S K Thuoc tnh A c goi la thuoc tnh khoa neu AK vi K la khoa bat ky cua Q. Ngc lai A c goi la thuoc tnh khong khoa. Mot lc o quan he co the co nhieu khoa va tap thuoc tnh khong khoa cung co the bang rong. (Khi thiet ke mot he thong thong tin, th viec lap lc o c s d lieu at en mot tieu chuan nao o la mot viec lam quan trong. Viec xac nh chuan cho mot lc o quan he co lien quan mat thiet vi thuat toan tm khoa). Thuat toan tm mot khoa cua mot lc o quan he Q
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 52

Bc 1: gan K = Q+ Bc 2: A la mot thuoc tnh cua K, at K = K A. Neu K+= Q+ th gan K = K' thc hien lai bc 2 Neu muon tm cac khoa khac (neu co) cua lc o quan he, ta co the thay oi th t loai bo cac phan t cua K. V du 7: Q(A,B,C,D,E,G,H,I)F={AC B;BI ACD;ABCD;HI;ACEBCG;CGAE} Tm K Lan lt loai cac thuoc tnh trong K theo th t sau: A, B, D, E, I Ta c mot khoa la cua lc o quan he la {C,G,H} (Lu y la thuat toan nay ch nen s dung trong trng hp ch can tm mot khoa). 2 i Thuat toan tm tat ca khoa Thuat toan c ban

Bc 1: Xac nh tat ca cac tap con khac rong cua Q+. Ket qua tm c gia s la cac tap thuoc tnh X1, X2, ,X2n-1 Bc 2: Tm bao ong cua cac Xi Bc 3: Sieu khoa la cac Xi co bao ong ung bang Q+. Gia s ta a co cac sieu khoa la S = {S1,S2,,Sm} Bc 4: Xay dng tap cha tat ca cac khoa cua Q t tap S bang cach xet moi Si, Sj con cua S (i j), neu Si Sj th ta loai Sj (i,j=1..n), ket qua con lai cua S chnh la tap tat ca cac khoa can tm. V du 8: Tm tat ca cac khoa cua lc o quan he va tap phu thuoc ham nh sau: Q(C,S,Z); F = {f1:CS Z; f2:Z C}

Xi

X i+

Sieu khoa

khoa

C C S S CS CSZ CS CS Z ZC CZ CZ SZ SZC SZ SZ CSZ CSZ CSZ Vay lc o quan he Q co hai khoa la: {C,S} va {S,Z} Thuat toan tren th de hieu, de cai at, tuy nhien neu vi n kha ln th phep duyet e tm ra tap tat ca cac tap con cua tap Q+ la khong hieu qua. Do vay can thu hep khong gian duyet. Chung ta se nghien cu thuat toan cai tien theo hng giam so thuoc tnh cua tap can duyet tat ca cac tap con. ii Thuat toan cai tien
Trc khi i vao thuat toan cai tien, ta can quan tam mot so khai niem sau: + Tap thuoc tnh nguon (TN) cha tat ca cac thuoc tnh co xuat hien ve trai va khong xuat hien ve phai cua cac phu thuoc ham va cac thuoc tnh khong xuat hien ca ve trai lan ve phai cua cac phu thuoc ham. + Tap thuoc tnh ch (TD) cha tat ca cac thuoc tnh co xuat hien ve phai va khong xuat hien ve trai cua cac phu thuoc ham.

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 53

+ Tap thuoc tnh trung gian (TG) cha tat ca cac thuoc tnh xuat hien ca ve trai lan ve phai cua cac phu thuoc ham. He qua: Neu K la khoa cua Q th TN K va TD K = Chng minh TN K Theo he qua 2 cua thuat toan tm bao ong ta co K+ KTDTG Ta chng minh A TN A K. That vay: Neu A K K+ KTDTG Q+-A K khong la khoa mau thuan Chng minh TD K = Gia s co thuoc tnh A TD K ta se dan en ieu mau thuan. That vay: Theo he qua 1 cua thuat toan tm bao ong th K+ = (K-A)+ A A TD co X la ve trai cua mot phu thuoc ham trong F sao cho X A (1) va A X X K+ = (K-A)+ A v A X X (K-A)+ (K-A) X (2) (1) va (2) cho (K-A) A A(K-A)+ (K-A)+ A = (K-A)+ K+ = (K-A)+ mau thuan vi ieu K la khoa. Da vao he qua tren ta co thuat toan tm tat ca khoa sau: D lieu vao: Lc o quan he Q va tap phu thuoc ham F D lieu ra: Tat ca cac khoa cua quan he Thuat toan tm tat ca khoa cua mot lc o quan he Bc 1: tao tap thuoc tnh nguon TN, tap thuoc tnh trung gian TG Bc 2: if TG = then lc o quan he ch co mot khoa K K = TN ket thuc Ngc lai Qua bc 3 Bc 3: tm tat ca cac tap con Xi cua tap trung gian TG Bc 4: tm cac sieu khoa Si bang cach Xi if (TN Xi)+ = Q+ then Si = TN Xi Bc 5: tm khoa bang cach loai bo cac sieu khoa khong toi tieu Si, Sj S if Si Sj then Loai Sj ra khoi Tap sieu khoa S S con lai chnh la tap khoa can tm. V du 9: Giai lai bai tap v du 8 Ap dung thuat toan cai tien ta co li giai nh sau: TN = {S}; TG = {C,Z} Goi Xi la cac tap con cua tap TG: Xi (TN Xi) (TN Xi)+ S S C SC Q+ Z SZ Q+ CZ SCZ Q+ Ket qua quan he tren co hai khoa la : {S,C} va {S,Z}

Sieu khoa khoa SC SZ SCZ SC SZ

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU IV BAI TAP

Trang 54

1/ Chng minh cac tnh chat sau: a) Tnh cong ay u X Y va Z W XZ YW b) Tnh tch luy X Y va Y ZW X YZW 2/ Cho G={ABC,AB,BC,AC}. F={ABC,AB,BC} co tng ng vi G khong? 3/ Cho lc o CSDL Kehoach(NGAY,GIO,PHONG,MONHOC,GIAOVIEN) F={NGAY,GIO,PHONG MONHOC GIAOVIEN MONHOC,NGAY NGAY,GIO,PHONG GIAOVIEN GIAOVIEN} MONHOC a) Tnh {NGAY,GIO,PHONG}+ ; {MONHOC}+ b) Tm phu toi thieu cua F c) Tm tat ca cac khoa cua Kehoach 4/ Cho lc o CSDL Q(TENTAU,LOAITAU,MACHUYEN,LUONGHANG,BENCANG,NGAY) F={TENTAU LOAITAU MACHUYEN TENTAU, LUONGHANG TENTAU,NGAY BENCANG, MACHUYEN} a) Hay tm tap phu toi thieu cua F b) Tm tat ca cac khoa cua Q 5/ Q(A,B,C,D,E,G) Cho F={ABC;CA;BCD;ACDB;DEG;BEC;CGBD;CE AG} X={B,D}, X+=? Y={C,G}, Y+=? 6/ cho lc o quan he Q va tap phu thuoc ham F a) F={ABE;AGI;BEI;EG;GI H} chng minh rang AB GH. b) F={ABC;BD;CDE;CEGH;GA}chng minh rang AB E; AB G 7/ Cho quan he r

A B C D x u x Y y x z x z y y y y z w z Trong cac phu thuoc ham sau ay, PTH nao khong thoa A B; A C; B A; C D; D C; D A 8/ Hay tm tat ca cac khoa cho lc o quan he sau: Q(BROKER,OFFICE,STOCK,QUANTITY,INVESTOR,DIVIDENT) F={STOCK DIVIDENT INVESTOR BROKER INVESTOR,STOCK QUANTITY BROKER OFFICE }
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU


9/ Xet lc o quan he va tap phu thuoc d lieu: Q(C,T,H,R,S,G) f={ f1: C T; f2: HR C; f4: CS G; f5: HS R} Tm phu toi thieu cua F

Trang 55

f3: HT R;

10/ Q(A,B,C,D,E,H) F={A E; C D; E DH} Chng minh K={A,B,C} la khoa duy nhat cua Q 11/ Q(A,B,C,D) F={ABC; DB; CABD} Hay tm tat ca cac khoa cua Q 12/ Q(A,B,C,D,E,G) F={ABC;C A;BCD;ACDB;DEG;BEC;CGBD;CEG} Hay tm tat ca cac khoa cua Q. 13/ Xac nh phu toi thieu cua tap phu thuoc ham sau: a) Q(A,B,C,D,E,G), F={ABC;CA;BCD;ACDB;DEG;BEC;CGBD;CEAG} b) Q(A,B,C) F={AB,AC,BA,CA,BC} 14/ Xac nh phu toi thieu cua cac tap phu thuoc ham sau: a) Q1(ABCDEGH) F1={A H,ABC,BCD;GB} b) Q2(ABCSXYZ) F2={SA;AXB;SB;BYC;CZX} c) Q3(ABCDEGHIJ) F3={BGD;GJ;AIC;CEH;BDG;JHA; DI } d) Q4(ABCDEGHIJ) F4={BHI;GCA;IJ;AEG;DB;IH}

----oOo----

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 56

Chng 6 . CHUAN HOA C S D LIEU


I DANG CHUAN CUA LC O QUAN HE (normal forms for relation schemes)
Trong thc te, mot ng dung cu the co the c thiet ke thanh nhieu lc o c s d lieu khac nhau, va tat nhien chat lng thiet ke cua cac lc o CSDL nay cung khac nhau. Chat lng thiet ke cua mot lc o CSDL co the c anh gia da tren nhieu tieu chuan trong o s trung lap thong tin va chi ph kiem tra cac rang buoc toan ven la hai tieu chuan quan trong. Sau ay la mot so tieu chuan e anh gia o tot/xau cua mot lc o quan he. Trc tien ta tm hieu mot so khai niem lien quan:

1 i

nh ngha cac dang chuan Dang Chuan Mot (First Normal Form)

Mot lc o quan he Q dang chuan 1 neu toan bo cac thuoc tnh cua moi bo eu mang gia tr n. V du 1: Xet quan he
MASV 99023 HOVATEN NGUYENTHITHU KHOA CONG NGHE THONG TIN TENMONHOC KY THUAT LAP TRINH TOAN ROI RAC CO SO DU LIEU VI XULY DIEMTHI 6 8 4 4

99030

LE VAN THANH

DIEN TU

Quan he nay khong at chuan 1 v cac thuoc tnh TENMONHOC, DIEMTHI cua bo th nhat khong mang gia tr n (chang han sinh vien NGUYEN THI THU co thuoc tnh TENMONHOC la KY THUAT LAP TRINH, TOAN ROI RAC, CO SO DU LIEU). Ta hoan toan co the a quan he tren ve dang chuan 1 nh sau:
MASV 99023 99023 99023 99030 HOVATEN NGUYENTHITHU NGUYENTHITHU NGUYENTHITHU LE VAN THANH KHOA CONG NGHE THONG TIN CONG NGHE THONG TIN CONG NGHE THONG TIN DIEN TU TENMONHOC KY THUAT LAP TRINH TOAN ROI RAC CO SO DU LIEU VI XULY DIEMTHI 6 8 4 4

Chu y rang khi xet cac dang chuan, neu ta khong noi g them, ta hieu dang chuan ang xet t nhat la at dang chuan 1.

ii

Dang Chuan 2 (Second Normal Form)

Mot lc o quan he Q dang chuan 2 neu Q at chuan 1 va moi thuoc tnh khong khoa cua Q eu phu thuoc ay u vao khoa. Thuat toan kiem tra dang chuan 2 Vao: lc o quan he Q, tap phu thuoc ham F Ra: khang nh Q at chuan 2 hay khong at chuan 2. Bc 1: Tm tat ca khoa cua Q Bc 2: Vi moi khoa K, tm bao ong cua tat ca tap con that s S cua K. Bc 3: Neu co bao ong S+ cha thuoc tnh khong khoa th Q khong at chuan 2 Ngc lai th Q at chuan 2

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU


V du 2: Cho lc o quan he Q(A,B,C,D) va tap phu thuoc ham F={ABC; BD; BCA}. Hoi Q co at chuan 2 khong? Giai: TN={B}, TG={AC}

Trang 57

(TN Xi) (TN Xi)+ Sieu khoa khoa B BD A AB ABCD AB AB C BC ABCD BC BC AC ABC ABCD ABC Khoa la K1=AB va K2=BC. Ta thay BK1, BD,D la thuoc tnh khong khoa thuoc tnh khong khoa khong phu thuoc ay u vao khoa Q khong at chuan 2. Xi
V du 3: Quan he sau at chuan 2. Q(G,M,V,N,H,P) F={GM; GN; GH; GP; MV; NHPM} Giai: TN={G} TG={M,N,H,P}

(TN Xi)+ (TN Xi) Sieu khoa khoa G Q+ G G M GM Q+ GM + N GN Q GN MN GMN Q+ GMN H GH Q+ GH + MH GMH Q GMH NH GNH Q+ GNH MNH GMNH Q+ GMNH + P GP Q GP MP GMP Q+ GMP NP GNP Q+ GNP + MNP GMNP Q GMNP HP GHP Q+ GHP MHP GMHP Q+ GMHP + NHP GNHP Q GNHP MNHP GMNHP Q+ GMNHP Lc o quan he Q ch co mot khoa va khoa ch co mot thuoc tnh nen moi thuoc tnh eu phu thuoc ay u vao khoa Q at chuan 2 He qua: Neu Q at chuan 1 va tap thuoc tnh khong khoa cua Q bang rong th Q at chuan 2 Neu tat ca khoa cua quan he ch gom mot thuoc tnh th quan he o t nhat at chuan 2. V du 4: Q(A,B,C,D,E,H) F={A E; C D; E DH} Giai: TN={ACB} TG={E} Xi (TN Xi) (TN Xi)+ Sieu khoa khoa ACB ABCDEH ACB ACB E ACBE ABCDEH ACBE Xi

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 58

khoa cua Q la K = {ABC}.CK, CD, D la thuoc tnh khong khoa D phu thuoc khong ay u vao khoa nen Q khong at chuan 2.

iii

Dang Chuan 3 (Third Normal Form)

Thuoc tnh phu thuoc bac cau Q la lc o quan he, X,Y la hai tap con cua Q+, A la mot thuoc tnh. Noi rang A phu thuoc bac cau vao X neu ca ba ieu sau thoa: + X Y,Y A + Y X + A XY nh ngha 1: Lc o quan he Q dang chuan 3 neu moi phu thuoc ham X A F+ vi A X eu co: Hoac X la sieu khoa Hoac A la thuoc tnh khoa nh ngha 2: Lc o quan he Q dang chuan 3 neu moi thuoc tnh khong khoa cua Q eu khong phu thuoc bac cau vao mot khoa bat ky cua Q Hai nh ngha tren la tng ng, tuy nhien viec cai at thuat toan kiem tra dang chuan 3 theo nh ngha 1 th hieu qua hn nhieu v khong phai kiem tra tnh phu thuoc bac cau. Ta chng minh hai nh ngha tng ng bang cach: T nh ngha 1 khong co phu thuoc bac cau vao mot khoa bat ky cua Q. That vay: Gia s co phu thuoc bac cau vao khoa ngha la co K Y,Y A,Y K va A KY. Y A la mot phu thuoc ham nen theo nh ngha 1 co hai trng hp xay ra cho Y: + Y la sieu khoa YK ieu nay mau thuan vi Y K. + Y khong la sieu khoa A la thuoc tnh khoa ieu nay trai vi gia thiet A KY T nh ngha 2 neu XAF+ vi AX th X la sieu khoa hoac A la thuoc tnh khoa Neu XAF+ vi AX co X khong la sieu khoa va A khong la thuoc tnh khoa th dan en mot so ieu sau: A khong la thuoc tnh khoa A K X khong la sieu khoa X K Tom lai ta co KX, XA,X K va A KX A phu thuoc bac cau vao K ieu nay mau thuan vi nh ngha 2. He qua 1: Neu Q at chuan 3 th Q at chuan 2 He qua 2: Neu Q khong co thuoc tnh khong khoa th Q at chuan 3. Chng minh: He qua 1: Gia s Q at dang chuan 3 va co thuoc tnh khong khoa A khong phu thuoc ham ay u vao khoa K K K sao cho KA nh vay ta co KK,KA,K K, A KK Q co phu thuoc bac cau. He qua 2: moi phu thuoc ham trong Q eu co ve phai la thuoc tnh khoa Q at dang chuan 3 nh ly: Q la lc o quan he F la tap cac phu thuoc ham co ve phai mot thuoc tnh.

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 59

Q at chuan 3 neu va ch neu moi phu thuoc ham XAF vi AX eu co X la sieu khoa hay A la thuoc tnh khoa Chng minh: Q at dang chuan 3 theo nh ngha ta suy ra moi phu thuoc ham XAF vi AX co X la sieu khoa hoac A la thuoc tnh khoa. Ngc lai ta phai chng minh neu moi phu thuoc ham XAF vi AX co X la sieu khoa hoac A la thuoc tnh khoa th moi phu thuoc ham XAF+ vi AX cung co X la sieu khoa hoac A la thuoc tnh khoa Gia s co phu thuoc ham XAF+ vi AX sao cho X khong la sieu khoa va A khong la thuoc tnh khoa se dan en A X+ X {cac thuoc tnh khoa} ieu nay mau thuan vi A K.Trc khi chng minh A X+ X {cac thuoc tnh khoa} ta co nhan xet sau: X khong la sieu khoa X+ cung khong la sieu khoa. Theo thuat toan tm bao ong, X+ c hnh thanh t cac Xi moi bc Xi cung khong la sieu khoa. Bc c s: X0 = X X0 X {cac thuoc tnh khoa} Bc qui nap: gia s co Xi-1 X {cac thuoc tnh khoa}. Bao ong Xi c hnh thanh do co fj = Xj Yj e Xi-1 Xj va Xi = Xi-1 Yj fj = Xj Yj la phu thuoc ham co Xj khong la sieu khoa fj = Xj Yj la phu thuoc ham co Yj la thuoc tnh khoa Xi = Xi-1 Yj X {cac thuoc tnh khoa} Qua chng minh tren AX+ X {cac thuoc tnh khoa} A X{cac thuoc tnh khoa} A{cac thuoc tnh khoa} ieu nay nghch ly vi ieu A K. Thuat toan kiem tra dang chuan 3 Vao: lc o quan he Q, tap phu thuoc ham F Ra: khang nh Q at chuan 3 hay khong at chuan 3. Bc 1: Tm tat ca khoa cua Q Bc 2: T F tao tap phu thuoc ham tng ng F1tt co ve phai mot thuoc tnh. Bc 3: Neu moi phu thuoc ham X A F1tt vi AX eu co X la sieu khoa hoac A la thuoc tnh khoa th Q at chuan 3 ngc lai Q khong at chuan 3 V du 5: Cho lc o quan he Q(A,B,C,D) F={ABC; DB; CABD}.Hoi Q co at chuan 3 khong? Giai: TN= TG={ABCD} Xi (TN Xi) (TN Xi)+ Sieu khoa khoa A A A B B B AB AB ABCD AB AB C C ABCD C C AC AC ABCD AC BC BC ABCD BC ABC ABC ABCD ABC D D BD AD AD ABCD AD AD BD BD BD ABD ABD ABCD ABD CD CD ABCD CD ACD ACD ABCD ACD
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU BCD ABCD BCD ABCD ABCD ABCD BCD ABCD

Trang 60

K1 = {AB}; K2 = {AD}; K3={C} la cac khoa moi phu thuoc ham XAF eu co A la thuoc tnh khoa. Vay Q at chuan 3
V du 6: Quan he sau at chuan 3. Q(N,G,P,M) F = {NGPM,MP}

iv

Dang Chuan BC (Boyce-Codd Normal Form)

Mot quan he Q dang chuan BC neu moi phu thuoc ham XA F+ vi AX eu co X la sieu khoa.
He qua 1: Neu Q at chuan BC th Q at chuan 3 (hien nhien do nh ngha) He qua 2: Moi lc o co hai thuoc tnh eu at chuan BC (xet phu thuoc ham co the co cua Q ) nh ly: Q la lc o quan he F la tap cac phu thuoc ham co ve phai mot thuoc tnh. Q at chuan BC neu va ch neu moi phu thuoc ham XAF vi AX eu co X la sieu khoa Chng minh: Q at dang chuan BC theo nh ngha ta suy ra moi phu thuoc ham XAF vi AX co X la sieu khoa. Ngc lai ta phai chng minh neu moi phu thuoc ham XAF vi AX co X la sieu khoa th moi phu thuoc ham ZBF+ vi BZ cung co Z la sieu khoa. That vay, do ZB khong la phu thuoc ham hien nhien nen theo thuat toan tm bao ong phai co XAF sao cho ZX (X la sieu khoa) Z la sieu khoa.

Thuat toan kiem tra dang chuan BC Vao: lc o quan he Q, tap phu thuoc ham F Ra: khang nh Q at chuan BC hay khong at chuan BC. Bc 1: Tm tat ca khoa cua Q Bc 2: T F tao tap phu thuoc ham tng ng F1tt co ve phai mot thuoc tnh Bc 3: Neu moi phu thuoc ham X A F1tt vi AX eu co X la sieu khoa th Q at chuan BC ngc lai Q khong at chuan BC V du 7: Q(A,B,C,D,E,I) F={ACDEBI;CEAD}. Hoi Q co at chuan BC khong? Giai: TN={C} TG={ADE} Xi (TN Xi) (TN Xi)+ Sieu khoa khoa C C A AC AC D CD CD AD ACD ABCDEI ACD ACD E CE ABCDEI CE CE AE ACE ABCDEI ACE DE CDE ABCDEI CDE ADE ACDE ABCDEI ACDE F F1tt={ACDE,ACDB,ACDI,CEA,CED} Moi phu thuoc ham cua F1tt eu co ve trai la sieu khoa Q at dang chuan BC
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU


V du 8: Q(SV,MH,THAY)F = {SV,MH THAY;THAY MH} Quan he tren at chuan 3 nhng khong at chuan BC.. V du 9: Chang han cho Q(A,B,C,D) va F={AB C; D B; C ABD} th Q la 3NF nhng khong la BCNF Neu F={B D,A C,C ABD} la 2 NF nhng khong la 3 NF

Trang 61

Thuat toan kiem tra dang chuan cua mot lc o quan he. Vao: lc o quan he Q, tap phu thuoc ham F Ra: khang nh Q at chuan g? Bc 1: Tm tat ca khoa cua Q Bc 2: Kiem tra chuan BC neu ung th Q at chuan BC, ket thuc thuat toan ngc lai qua bc 3 Bc 3: Kiem tra chuan 3 neu ung th Q at chuan 3, ket thuc thuat toan ngc lai qua bc 4 Bc 4: Kiem tra chuan 2 neu ung th Q at chuan 2, ket thuc thuat toan. ngc lai Q at chuan 1 nh ngha: Dang chuan cua mot lc o c s d lieu la dang chuan thap nhat trong cac dang chuan cua cac lc o quan he con. II PHEP TACH KET NOI BAO TOAN 1 Phep tach ket noi bao toan thong tin (lossless-join decomposition)

Cho lc o quan he Q(TENNCC,DIACHI,SANPHAM,DONGIA) co quan he tng ng la r at r1 la quan he co c bang cach chieu r len Q1(TENNCC,SANPHAM,DONGIA), at r2 la quan he co c bang cach chieu r len Q2(TENNCC,DIACHI) at rla quan he co c bang cach ket t nhien gia r1 va r2 qua TENNCC. chang han: r TENNCC DIACHI SANPHAM DONGIA Hung 12 Nguyen Kiem Gach ong 200 Hung 12 Nguyen Kiem Gach the 250 Hung 40 Nguyen Oanh Gach ong 200

r2 = r.Q2+ TENNCC DIACHI Hung 12 Nguyen Kiem Hung 40 Nguyen Oanh

r1 = r.Q1+ TENNCC SANPHAM DONGIA Hung Gach ong 200 Hung Gach the 250

TENNCC r = r1|><|r2 TENNCC DIACHI Hung 12 Nguyen Kiem Hung 12 Nguyen Kiem Hung 40 Nguyen Oanh Hung 40 Nguyen Oanh

SANPHAM DONGIA Gach ong 200 Gach the 250 Gach ong 200 Gach the 250
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 62

Ket qua la r r hay r r.Q1|><|r.Q2. Vi ket qua tren, ta noi phep tach (Q1,Q2) tach Q thanh Q1, Q2 la tach-ket noi (phan ra) mat mat thong tin. Neu r = r.Q1|><|r.Q2 ta noi phep tach (Q1,Q2) la tach-ket noi khong mat mat thong tin (tach ket noi bao toan thong tin hay phan ra bao toan thong tin). Vay vi ieu kien nao th phep tach tr thanh tach-ket noi khong mat mat thong tin?

nh ngha phep tach Q thanh 2 lc o con

Q la lc o quan he, Q1, Q2 hai lc o con co: Q1+ Q2+ = X Q1+ Q2+ = Q+ Noi rang lc o quan he Q c tach thanh hai lc o con Q1, Q2 theo phep tach (Q1,Q2) la phep tach ket noi khong mat (hay phep tach bao toan thong tin) neu vi r la quan he bat ky cua Q ta co: r = r.Q1 >< r.Q2
Tc la r c tao nen t phep ket noi t nhien cua cac hnh chieu cua no tren cac Q1,Q2
X

ii

Tnh chat

Neu Q la mot lc o quan he, Q1,Q2 la hai lc o quan he con co Q1+ Q2+ = X Q1+ Q2+ = Q+ X Q2+ Th r = r.Q1 >< r.Q2
Chng minh:
X

t r t r.Q1 >< r.Q2 t r t1r1 t1 = t.Q1 t2r2 t2 = t.Q2 t1.X = t2.X = t.X
t r.Q1 >< r.Q2 (Theo nh ngha)
X

t r.Q1 >< r.Q2 t r t r.Q1 >< r.Q2 t1r1 t1 = t.Q1 (1)


ma t1 r1=r.Q1 nen theo nh ngha phep chieu ta lai co tr t1 = t.Q1 (2) (1) va (2) t.Q1 = t.Q1 t.X = t.X t.Q2 = t.Q2 (do X Q2) t = t t r V du 10: cho Q(SAIP), Q1 =(SA) , Q2 =(SIP) F={SA,SIP}. Hoi viec tach Q thanh Q1 va Q2 co gay ra mat mat thong tin khong? Ap dung tnh chat tren, ta co Q1+ Q2+ = S Q1+ Q2+ = SAIP = Q+ S SA = Q1+ Theo tnh chat tren, vi moi quan he r cua Q ta luon co r = r.Q1 >< r.Q2. Suy ra phep tach tren la phep tach ket noi bao toan thong tin.
S X

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU iii Phep tach Q thanh n lc o con


Q

Trang 63

Q1

Q12

Q21

Q2

Q3

Q4

Q la mot lc o quan he, F la tap phu thuoc ham. Q c tach thanh cac lc o con Q1, Q2, Q3...,Qn theo tng bc ma moi bc mot lc o c tach thanh hai lc o con va thoa man ieu kien cua tnh chat bao toan thong tin th vi r la quan he bat ky cua Q ta luon co: r = r.Q1|><|r.Q2|><|r.Q3..... |><|r.Qn Chng minh: Ta chng minh bang phng phap qui nap. bc i = 1 th r = r.Q1|><|r.Q1m ung theo nh ly bao toan thong tin Gia s bieu thc tren ung bc i = k ngha la ta co: r = r.Q1|><|r.Q2|><|r.Q3..... |><|r.Qk |><|r.Qkm (1) ta phai chng minh r = r.Q1|><|r.Q2|><|r.Q3.....|><|r.Qk|><|r.Qk+1|><|r.Qk+1m Vi Qkm c tach thanh hai lc o con Qk+1 va Qk+1m theo ung ieu kien cua tnh chat bao toan thong tin ngha neu s la quan he cua Qkm th s = s.Qk+1|><|s.Qk+1m r.Qkm = (r.Qkm).Qk+1|><|(r.Qkm).Qk+1m = r.Qk+1|><|r.Qk+1m r = r.Q1|><|r.Q2|><|r.Q3.....|><|r.Qk|><|r.Qk+1|><|r.Qk+1m iv Thuat toan kiem tra phep tach ket noi bao toan thong tin
(a) Thuat toan

D lieu vao: lc o quan he Q(A1,A2,An), tap phu thuoc ham F, phep tach =(Q1,Q2,,Qk). D lieu ra: ket luan phep tach co phai la phep tach bao toan thong tin ?

1. Thiet lap bang vi k+1 dong, n+1 cot . Cot j ng vi thuoc tnh Aj (j=1...n), hang i ng vi lc o quan he Qi(i=1k). Tai v tr hang i, cot j ta ien ky hieu Aj neu Aj Qi, neu khong ta at ky hieu bt vao v tr o. (vi t au tien bang 1) va sau o tang t len mot n v. 2. Xet lan lt cac phu thuoc ham trong F, ap dung cho bang va mi thanh lap tren. Gia s xet (X Y) F, chung ta tm nhng hang giong nhau tat ca cac thuoc tnh cua X, neu thay nhng hang nh vay ta se lam cho cac ky hieu cua hai hang nay bang nhau tat ca cac thuoc tnh cua Y. Khi lam cho 2 ky hieu nay bang nhau, neu mot trong hai ky hieu la aj th cho ky hieu kia tr thanh aj, neu hai ky hieu la bk hoac bl th co the cho chung tr thanh bt hoac bt (vi t = min (k,l)). Bc nay c tiep tuc cho cac phu thuoc ham con lai cua F cho en khi khong con ap dung c na. 3. Xet bang ket qua, neu thay trong bang nay co mot hang cha toan aj (i=1..n) th ket luan o la phep ket noi bao toan thong tin, ngc lai la phep ket noi mat mat thong tin.
Chu y: mot ieu quan trong can phai nh la khi cho hai ky hieu bang nhau th phai cho bang nhau tat ca cac xuat hien cua chung trong bang ch khong phai ch cho bang nhau nhng ky hieu trong pham vi cac phu thuoc X Y F.

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU


V du 11: Vi Q(ABCDE) Q1 = (AD),Q2 =(AB), Q3 =(BE), Q4 =(CDE), Q5 =(AE) F = {AC,BC,AD,DEC,CEA} Kiem tra tnh bao toan thong tin cua phep phan ra Q thanh Q1,Q2,Q3,Q4,Q5. Bc 1:

Trang 64

Q1(AD) Q2(AB) Q3(BE) Q4(CDE) Q5(AE) a1

a1 A a1 a1

a2 B a2 a2

a3 C

a4 D a4

a5 E

a3

a4

a5 a5 a5

ien b1,b2,b3, ... A B C D Q1(AD) a1 b1 b2 a4 Q2(AB) a1 a2 b4 b5 Q3(BE) b7 a2 b8 b9 Q4(CDE) b10 b11 a3 a4 Q5(AE) a1 b12 b13 b14 Sa bang gia tr e no thoa Sa b8 thanh b2 A B C Q1(AD) a1 b1 b2 Q2(AB) a1 a2 b2 Q3(BE) b7 a2 b2 Q4(CDE) b10 b11 a3 Q5(AE) a1 b12 b2

Bc 2:

E b3 b6 a5 a5 a5

Sa bang gia tr e no thoa AC Sa b4,b13 thanh b2 A B C D Q1(AD) a1 b1 b2 a4 Q2(AB) a1 a2 b2 b5 Q3(BE) b7 a2 b8 b9 Q4(CDE) b10 b11 a3 a4 Q5(AE) a1 b12 b2 b14 Sa bang gia tr e no thoa AD Sa b5,b14 thanh a4

B C D a4 b5 b9 a4 b14 E b3 b6 a5 a5 a5

E b3 b6 a5 a5 a5

A B Q1(AD) a1 b1 Q2(AB) a1 a2 Q3(BE) b7 a2 Q4(CDE) b10 b11 Q5(AE) a1 b12

C b2 b2 b2 a3 b2

D a4 a4 b9 a4 a4

E b3 b6 a5 a5 a5

Sa bang gia tr e no thoa DEC sa b2 thanh a3 sa tat ca b2 thanh a3 A B C D E Q1(AD) a1 b1 a3 a4 b3 Q2(AB) a1 a2 a3 a4 b6 Q3(BE) b7 a2 a3 b9 a5 Q4(CDE) b10 b11 a3 a4 a5 Q5(AE) a1 b12 a3 a4 a5 Lan lt xet lai cac phu thuoc ham trong F, neu bang gia tr cha thoa phu thuoc ham nao th tiep tuc lam cho no thoa. Sa bang gia tr e no thoa AD A B C D E Q1(AD) a1 b1 a3 a4 b3 Q2(AB) a1 a2 a3 a4 b6 Q3(BE) a1 a2 a3 a4 a5 Q4(CDE) a1 b11 a3 a4 a5 Q5(AE) a1 b12 a3 a4 a5

Sa bang gia tr e no thoa CEA Sa b7,b10 thanh a1.

Q1(AD) Q2(AB) Q3(BE) Q4(CDE) Q5(AE)

A a1 a1 a1 a1 a1

B b1 a2 a2 b11 b12

C a3 a3 a3 a3 a3

D a4 a4 b9 a4 a4

E b3 b6 a5 a5 a5

Dong th Q3(BE) cua bang cha toan gia tr aj (j=1..n) nen phep phan ra tren la bao toan thong tin.

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU


(b)nh ly

Trang 65

Bang ket qua cua thuat toan tren cho phep ta ket luan c tnh bao toan hay khong bao toan thong tin cua phep tach. Chng minh: Ta chng minh neu bang ket qua thuat toan khong co hang ch cha toan gia tr a th phep tach khong bao toan thong tin. That vay: Ta xay dng mot quan he r co cac gia tr nh bang ket qua cua thuat toan, cac hang la cac bo. Quan he r thoa tap phu thuoc F v thuat toan a sa cac gia tr cua r e no khoi vi pham cac phu thuoc ham trong F r la mot quan he cua lc o Q. Ta tach quan he r thanh cac quan he ri vi ri = r.Qi va dung phep ket t nhien e ket chung lai. Neu: + k Qk+Qi+ = i r1|><|r2....|><|rk khong ton tai phep tach khong bao toan thong tin. + i,k Qi+Qk+ = Xik ma moi ri eu co mot bo ti cha toan a cac ti noi c vi nhau v co cung gia tr tren Xik co mot bo tr1|><|r2....|><|rk co toan gia tr a, bo nay lai khong co trong r r r1|><|r2....|><|rk phep tach khong bao toan thong tin. Ta chng minh neu bang ket qua thuat toan co hang ch cha toan gia tr a th phep tach bao toan thong tin. Ta chng minh ieu nay qua 2 bc: + Bc 1: chng minh neu tr tr1|><|r2....|><|rk. Suy ra rr1|><|r2....|><|rk. Gia s t=(a1,...,an) r . Ta tach quan he r thanh cac ri = r.Qi vi ti = t.Qi. Co hai trng hp: o i,k Qi+Qk+ = Xik cac ti noi c vi nhau v co cung gia tr tren Xik bo tr1|><|r2....|><|rk r r1|><|r2....|><|rk. o k Qk+Qi+ = i. Suy ra bang kiem tra bao toan thong tin giai oan cha thoa cac phu thuoc ham, co dang: A1 A2 ... AK AK+1 ... Q1 bk1 bk2 b.. Q2 b.. ... ... ... b.. ... ... QK(AK,AK+1,..) b.. b.. b.. ak ak+1 ... + Vi moi XQ tk.X ti.X vi ik nen khi lam bang cac gia tr theo cac phu thuoc ham XY th cac gia tr b dong Qk khong thay oi con cac gia tr b cac cot Ak,Ak+1,... khong oi thanh a c. Suy ra bang ket qua cua thuat toan khong bao gi cha dong co toan gia tr a. Vay trng hp k Qk+Qi+ = i khong xay ra khi bang kiem tra bao toan thong tin co mot dong toan a. + Bc 2: chng minh neu tr1|><|r2....|><|rk tr. Suy ra r1|><|r2....|><|rkr. Gia s t=(a1,...,an) r1|><|r2....|><|rk theo nh ngha suy ra i tiri sao cho t.Qi+ = ti. Nhng ri=r.Qi+ tir sao cho ti.Qi+=ti=t.Qi+ i . Trng hp xau nhat la cac tila cac dong khac nhau. Trong trng hp nay, ta co the xem tila dong Qi cua bang kiem tra bao toan thong tin vi cac gia tr b xem nh cha biet. Nhng cac dong Qi phai thoa cac phu thuoc ham trong F, phep lam bang cac gia tr theo cac phu thuoc ham a dan dan xac nh c tat ca cac gia tr b cua mot dong tinao o, la dong co toan gia tr a. Vay co mot i e ti= t tr r r1|><|r2....|><|rn (2) (1) va (2) r = r1|><|r2....|><|rn. Noi cach khac phep tach bao toan thong tin.

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU 2 i

Trang 66

Phep tach bao toan phu thuoc ham (decompositions that preserve dependencies) Tap phu thuoc ham Fi cua Qi

Phan tren ch e cap van e tach mot lc o quan he Q(A1,A2,An)thanh cac lc o con Q1,Q2,,Qk con khong e cap en tap phu thuoc ham cua cac lc o con nay. Neu Q(A1,A2,An) la lc o quan he, F phu thuoc ham, =(Q1,Q2,,Qk)la phep phan ra bao toan thong tin, ri la quan he cua Qi th tnh chat sau thoa: + ri ch thoa cac phu thuoc ham XYF+ vi XYQi+ Noi cach khac, tap phu thuoc ham cua Qi chnh la Fi co Fi+={XYF+| XYQi+}. Ta co the hieu F c phan ra thanh cac F1,...,Fk Chng minh tnh chat tren: Do ri c tach t r ma r thoa F+ ri thoa cac phu thuoc ham XYF+ vi XYQi+.Theo nh ngha phu thuoc ham, ng nhien ri khong thoa cac phu thuoc ham XYF+ vi XYQi+. Ngoai ra ri khong thoa bat ky mot phu thuoc ham nao XYF+ . That vay neu co XY nh vay th r = r1|><|r2....|><|rn cung phai thoa XYF+. ieu nay mau thuan vi nh ngha cua tap F+ .

ii

nh ngha:

Cho phan ra =(Q1,Q2,,Qk) cua mot lc o quan he, va mot tap phu thuoc ham F. Hnh chieu cua F tren mot tap cac thuoc tnh Qi+ ky hieu Qi(F) la tap cac phu thuoc ham X Y F+ sao cho XY Z. Qi(F)=Fi+={ X Y| X Y F+ va XY Qi} Ta noi phan ra bao toan tap phu thuoc ham F neu F Qi(F) F+ = ( Qi(F))+ vi i=1..k He qua: F+ ( Qi(F))+ vi i=1..k Nhan xet: t he qua tren ta suy ra: e xac nh phep phan ra =(Q1,Q2,,Qk) co bao toan phu thuoc ham hay khong, vi moi phu thuoc ham XYF ta xac nh xem no co la thanh vien cua tap phu thuoc ham G = Qi(F) hay khong. Ta khong can xac nh chieu ngc lai. V du12: Cho lc o quan he Q(A,B,C) va F={AB,BC,CA}. Phep phan ra =(Q1,Q2) tach Q thanh hai lc o quan he Q1(A,B) va Q2(B,C). Hay tnh hnh chieu cua F tren Q1+ va Q2+.Phep phan ra co bao toan phu thuoc ham F khong? Giai: ve nguyen tac ta co the giai bai toan theo cac bc di ay Bc 1: Ke tat ca tap con cua Q+ A B C C A B AB AC BC ABC + Bc 2: Tnh bao ong cua cac tap con cua Q + B+ =ABC C+ =ABC += A =ABC + AB =ABC AC+ =ABC BC+ =ABC ABC+ =ABC Bc 3: Tnh F+
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 67

AB BA CA ABABC ACB BCA AAB BAB CB ABC ACAB BCAB BC CAB ABBC ACBC BCAC AC AAC BAC CAC ABABC ACABC BCABC ABC BBC CBC AABC BABC CABC Bc 4: Tnh Q1(F), Q2(F) Q1(F)= F1+ ={AB,AAB,BA,BAB}{AB,BA} (ch lay pth co ve phai 1 tt) Q2(F)= F2+ ={BC,BBC,CB,CBC}{BC,CB}(ch lay pth co ve phai 1 tt) Bc 5: G = Q1(F) Q2(F)={AB,AAB,BA,BAB,BC,BBC,CB,CBC} F={AB,BC,CA} co AB, BC eu la thanh vien cua G, con CA co la thanh vien cua G hay khong ta tnh CG+. CG+=ABC CA cung la thanh vien cua G. Vay phep phan ra tren bao toan phu thuoc ham.
Bai toan tren co the c giai theo cac bc n gian sau cho tng lc o quan he con: Tnh cho Q1 Bc 1: Ke tat ca tap con cua Q1+ A B A B AB + Bc 2: Tnh bao ong cua cac tap con cua Q1 + B+ =ABC += A =ABC AB+ =ABC + Bc 3: Tnh F1 =Q1(F) AB BA AAB BAB Tnh cho Q2 Bc 4: Ke tat ca tap con cua Q2+ B C B C BC + Bc 5: Tnh bao ong cua cac tap con cua Q2 + C+ =ABC += B =ABC BC+ =ABC Bc 6: Tnh F2+=Q2(F) BC CB BBC CBC Bc 7: G=Q1(F)Q2(F)={AB,AAB,BA,BAB,BC,BBC,CB,CBC} F={AB,BC,CA} co AB, BC eu la thanh vien cua G con CA co la thanh vien cua G hay khong ta tnh CG+. CG+=ABC CA cung la thanh vien cua G. Vay phep phan ra tren bao toan phu thuoc ham.

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU iii Y ngha cua phan ra co bao toan phu thuoc ham

Trang 68

V du 13: Cho lc o quan he Q(C,S,Z) va F={CSZ,ZC}. Phep tach =(Q1,Q2) tach Q thanh hai lc o Q1(S,Z) va Q2(C,Z). Hoi phep tach co bao toan phu thuoc ham khong? Giai: Q1 co cac tap thuoc tnh con: S Z S Z SZ + Bao ong cua cac tap thuoc tnh con Q1 + + += S =S Z =ZC SZ+ =CSZ F1+ ch gom cac phu thuoc ham hien nhien v tat ca cac phu thuoc ham sau eu khong thoa: ZC SZC ZZC SZCS SZCZ SZCSZ Q2 co cac tap thuoc tnh con: C Z C Z CZ + Bao ong cua cac tap thuoc tnh con Q2 + Z+ =ZC += C =C CZ+ =CZ F2+ gom cac phu thuoc: ZC ZZC Q1(F)Q2(F)={ZC,ZZC}{ZC} khong tng ng vi F = {CSZ,ZC} Vay phep phan ra tren khong bao toan phu thuoc ham, ieu nay co ngha khi ta a d lieu vao Q1 va Q2 sao cho khong vi pham phu thuoc ham hnh chieu cua no, nhng khi ket noi chung lai th d lieu ket qua cua lc o quan he Q lai vi pham phu thuoc ham CSZ Q1(F)={PTHHN} Q2(F)={ZC, ZZC} F={CSZ,ZC} Q1 (S Z) Q2 (C Z) Q (C S Z) s1 z1 c1 z1 c1 s1 z1 s1 z2 c1 z2 c1 s1 z2

iv

Thuat toan kiem tra bao toan phu thuoc ham

Thuat toan tm bao ong cua tap thuoc tnh X oi vi G = Qi(F) Vao: =(Q1,Q2,,Qk),F,X Ra: XG+ Bc 1: Vi moi phu thuoc ham XYF ta thc hien t bc 2 en bc 4 Bc 2: at Z = X + + Bc 3: the Z = Z((Z Qi )+ Qi ) Bc 4: neu Qi, Zthay oi th thc hien lai bc 3 cho Qau tien Ngc lai ket thuc thuat toan va tra ve Z(la bao ong XG+) Thuat toan kiem tra bao toan phu thuoc ham
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 69

Vao: =(Q1,Q2,,Qk),F Ra: ket luan phep tach bao toan hay khong bao toan phu thuoc ham Bc 1: Vi moi phu thuoc ham XYF ta thc hien t bc 2 en bc 3: Bc 2: Tm bao ong XG+ vi G = Qi(F) Bc 3: Neu Y XG+ th XY Qi(F)+ Bc 4: Neu tat ca phu thuoc XYF eu thuoc Qi(F)+ th ta ket luan phan ra bao toan phu thuoc ham ngc lai khong bao toan phu ham V du 14: thc hien lai v du 13, ngha la kiem tra phep tach co bao toan phu thuoc ham khong? Vao: Q(C,S,Z),F={CSZ,ZC},Q1(S,Z) va Q2(C,Z) ng nhien ZCG = Q1(F)Q2(F) ZC (Q1(F)Q2(F))+ 1. Z=CS + + 2. gan Z= Z((Z Q1 )+ Q1 ): Z = CS(SSZ)=CS Bc 1 va 2 co Z khong thay oi, ta sang lc o Q2 va tnh tiep Z + + 3. gan Z= Z((Z Q2 )+ Q 2 ): Z = CS(CCZ)=CS

Zkhong thay oi va het lc o quan he ngng khong tnh tiep Z + 4. Vay CSG =CS CSZ (Q1(F) Q2(F))+ phep phan ra khong bao toan phu thuoc
ham. V du 15: thc hien lai v du 12 vi noi dung ket luan phep tach co bao toan phu thuoc ham khong (khong tnh F+) Vao: Q(A,B,C),F={AB,BC,CA},Q1(A,B) va Q2(B,C) Hien nhien G = Q1(F) Q2(F) {AB,BC} Ta xac nh CA co thuoc (Q1(F) Q2(F))+ 1. Z=C + + 2. gan Z= Z((Z Q1 )+ Q1 ): Z = C(AB)=C Bc 1 va 2 co Z khong thay oi, ta sang lc o Q2 va tnh tiep Z + + 3. gan Z= Z((Z Q2 )+ Q2 ): Z = C(ABCBC)=BC Zthay oi tnh tiep Zbat au t lc o Q1 + + 4. gan Z= Z((Z Q1 )+ Q1 ): Z = BC(ABCAB)=ABC do Z=Q+ Z se khong bao gi thay oi. + 5. vay CG =ABC CA(Q1(F) Q2(F))+ phep phan ra bao toan phu thuoc ham.

III THIET KE CSDL BANG CACH PHAN RA 1 i Phan ra thanh dang chuan BC (hay chuan 3) bao toan thong tin Cach thong thng

Thuat toan phan ra Q,F thanh dang chuan BC (hay chuan 3) bao toan thong tin Bc 1:Tm tat ca khoa cua Q Bc 2:Tm phu thuoc ham X Y F co X khong la sieu khoa va Y khong cha thuoc tnh khoa. Neu tm thay th tach Q thanh Q1 va Q2 theo quy tac sau: Q1=Q[XY]; F1Q1(F)tm bao ong cua tat ca tap con cua XY e suy ra Q1(F)F1 Q2=Q[Q+ -Y] F2Q2(F)tm bao ong cua tat ca tap con cua Q+-Y e suy ra Q2(F)F2 thc hien thuat toan phan ra (Q1,F1)
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 70

thc hien thuat toan phan ra (Q2,F2) Ngc lai neu khong tm thay th co hai trng hp: Trng hp 1: moi phu thuoc ham trong Fi eu cove trai la sieu khoa th Qi at chuan BC Trng hp 2: neu co phu thuoc ham co ve trai khong la sieu khoa va ve phai la thuoc tnh khoa th Qi at chuan 3. V du 16: cho Q(S,D,I,M) F={SID;SDM} hay phan ra Q thanh cac lc o con at chuan BC bao toan thong tin Giai: Bc 1: tm tat ca khoa cua Q Xi TNXi (TNXi)+ Sieu khoa Khoa SDIM SI SI SI D SID SDIM SID Bc 2: phu thuoc ham SD M F co SD khong la sieu khoa.

Chu y: e tnh c F1,F2,K1,K2 nh hnh tren, ta phai tnh bao ong cua tat ca tap con cua{SDM} va {SDI} F1,F2 roi tm tat ca khoa cua Q1 va Q2. S+=S D+ =D M+ =M S+=S D+ =D I+ =I + + + SD =SDM SM =SM SD =SDM SI+ =SDIM DM+ =DM DI+ =DI + SDM =SDM SDI+ =SDIM + F1 =Q1(F)={SDM,SDSM,SDDM,SDSDM}{SDM}= F1 F2+=Q2(F)={SID,SISD,SIDI,SISDI}{SID}= F2 Q1 va Q2 eu at dang chuan BC v trong Qi ch co phu thuoc ham co ve trai la khoa. F1 c tao thanh bang cach lay cac phu thuoc ham cua Q1(F)co ve phai mot thuoc tnh. Tng t cho F2 V du 17: cho Q(CTHRSG), F={CT;HRC;HTR;CSG;HSR} hay phan ra Q thanh cac lc o con at chuan BC bao toan thong tin. (giai nh v du tren)

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 71

Tnh chat: Theo thuat toan tren, khi phan ra Q thanh Q1(XY)vi XY va Q2 th tap khoa SQ cua Q luon luon bang vi tap khoa SQ2 cua Q2. Chng minh That vay, K la mot khoa cua Q K la mot sieu khoa cua Q2. Gia s co K K va K la khoa cua Q2 K(Q+-Y) ma XY KQ+. ieu nay mau thuan vi K la khoa cua Q K la khoa cua Q2. Ngc lai cung ung. Da vao tnh chat tren, ta cai tien thuat toan phan ra nham giam bt khoi lng tnh cac phu thuoc ham cua tap F+ Thuat toan phan ra Q,F thanh dang chuan BC (hay chuan 3) bao toan thong tin Bc 1: Tm tap tat ca khoa SK cua Q Bc 2: Tm phu thuoc ham X Y F co X khong la sieu khoa va Y khong cha thuoc tnh khoa. Neu tm thay th tach Q thanh Q1 va Q2 theo quy tac sau: Q1=Q[XY]; Tnh F1 bang cach tnh bao ong tat ca tap con cua XY + Q2=Q[Q -Y] SK cung la tap khoa cua Q2 thc hien bc 1 cho Q1 thc hien bc 2 cho Q2 Ngc lai neu khong tm thay th co hai trng hp: Trng hp 1: moi phu thuoc ham trong Fi eu cove trai la sieu khoa th Qi at chuan BC Trng hp 2: neu co phu thuoc ham co ve trai khong la sieu khoa va ve phai la thuoc tnh khoa th Qi at chuan 3. Chu y: Thuat toan nay ch tien trong trng hp khoi lng tnh toan trong viec tm tat ca khoa cua lc o quan he Q khong ln. Noi cach khac tap trung gian TG co t thuoc tnh. Ngc lai ta phai dung thuat toan cua phan tiep theo. V du 18: phan ra lc o v du tren thanh cac lc o con dang chuan BC bao toan thong tin.

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU


F={C->T;HR->C;HT->R;CS->G;HS->R} Q(C,T,H,R,S,G) K = HS

Trang 72

Tnh F1, K1 F1={C->T} Q1(C,T) K1 = C F12={HR->C;CS->G;HS->R;...} Q12(C,H,R,S,G) K12 = HS Tnh F3,K3 Tnh F2,K F2={HR->C;CH->R} Q2(C,H,R) K21=HR; K22= CH F3={HS->RG} Q3(H,R,S,G) K3 = HS

Trong F co 4 phu thuoc ham CT,HRC,HTR,CSG lam Q khong at dang chuan 3 hay BC va phep phan ra tren a chon ngau nhien phu thuoc ham CT e phan ra thanh Q1 va tap thuoc tnh cua Q12 chnh la tap thuoc tnh cua Q bo thuoc tnh T.Tap phu thuoc ham F12 se cha cac phu thuoc ham cua F bo i cac phu thuoc ham co ve trai hay ve phai cha thuoc tnh T. Nh vay tuy theo cach chon phu thuoc ham e phan ra thanh Q1 ma so lng phu thuoc ham mang xuong Q12 khac nhau va chat lng phan ra cung khac nhau. Ket qua cua phep phan ra tren chnh la Q1, Q2, Q3 cua hnh tren. Phep phan ra bao toan thong tin, va cac lc o con at chuan BC nhng phep phan ra khong bao toan phu thuoc ham v G = F1 F2 F3 = {CT; HRC; CHR; HSRG} khong tng ng vi F (HTR G+ va CSG G+). Ta hay xem phep phan ra sau se cho ket qua tot hn.

Phep phan ra cung cho ket qua phep phan ra bao toan thong tin, cac lc o con Q1,Q2,Q3,Q4 at chuan BC va phep phan ra khong bao toan phu thuoc ham v G = F1 F2 F3 F4 ={CSG;HRC;CHR;CT;HSC} khong tng ng vi F (HTR G+).Phep phan ra nay tot hn v ch co mot phu thuoc ham HTR khong thuoc G+ trong khi phep phan ra tren co ti 2 phu thuoc ham HTR va CSG khong thuoc G+.S d phep phan ra th 2 tot hn v bc chon phu thuoc ham e phan ra thanh Q1 phep phan ra a chon phu thuoc ham sao cho khi chieu F xuong Q12 so phu thuoc ham mang xuong cang nhieu cang tot. V du 19: cho Q(A,B,C,D,E,G), F={AEC;CGA;BDG;GAE} hay phan ra Q thanh cac lc o con at chuan BC bao toan thong tin.
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 73

Neu Q c phan ra thanh: (Q1(BDG), Q2(A,B,C,D,E)) lc o c s d lieu at chuan 3 (Q1(BDG), Q2(A,C,E), Q3(A,B,D,E)) lc o c s d lieu at chuan BC

ii

Bo e:

Neu Q khong dang chuan BC th co thuoc tnh A,B thuoc Q+ sao cho (Q+-AB)A Chng minh: Q khong dang chuan BC co XA sao cho X khong la sieu khoa co thuoc tnh B XA (v neu khong co B XA th X phai la sieu khoa) (Q+-AB) X (Q+-AB)A Nhan xet: + Mot lc o Q dang chuan BC van co the co AB sao cho (Q+-AB)A + Mot lc o Q khong co AB sao cho (Q+-AB)A th Q dang chuan BC

iii

Thuat toan

Thuat toan phan ra sau khong can tm tat ca khoa cua lc o quan he Q Thuat Toan phan ra Q, F thanh dang chuan BC bao toan thong tin Bc 1: Z = Q+ Bc 2: phan ra Z theo thuat toan chi tiet e c 2 lc o Z-A va XA trong o XA dang chuan BC va X A Neu thuat toan chi tiet cho ket qua th qua bc 3 Ngc lai ket thuc thuat toan Bc 3: nhan XA la mot lc o con cua cac lc o ket qua Q1,...,Qk Bc 4: thc hien phan ra Z-A,F

Thuat toan chi tiet Bc 1: neu Z khong cha AB sao cho (Z-AB)A. th bao khong phan ra c. Ngc lai qua bc 2 Bc 2: at Y = Z Bc 3: neu Y cha AB sao cho (Y-AB)A. th gan Y = YB thc hien lai bc 2 Bc 4: bc 3 cho ket qua Y = XA vi XA dang chuan BC va X A. Tra ve XA
Nhan xet

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 74

moi bc 2 cua thuat toan phan ra Q,F ta thu c 2 lc o Qi+=Z-A,Q1+=XA vi Qi+Q1+ = (Z-A)XA = X va XQ1+ va Q1 la lc o dang chuan BC. Thuat toan lai tiep tuc phan ra Qi theo ung cach a lam thuat toan phan ra bao toan thong tin va cac lc o con Qi at dang chuan BC. Thuat toan chi tiet tm Ql at chuan BC sao cho Ql+ cha nhieu thuoc tnh nhat. e tm c Ql nh vay thuat toan chi tiet tm hai thuoc tnh ABQ+ sao cho (Q+-AB)A. Neu tm thay chng to Q cha at chuan BC va thuat toan giam B trong Q vi hy vong thu c lc o con Ql at chuan BC va thoa phu thuoc ham (Q+-AB)A. Thuat toan chi tiet tiep tuc tm va giam cho ti khi thu c lc o con khong co hai thuoc tnh AB sao cho (Q+-AB)A Ql la lc o con at chuan BC can tm. V du 19: Cho quan he Q(B,O,S,Q,I,D) va tap phu thuoc ham F F = {S D, I B IS Q B O} Hay phan ra Q thanh cac lc o con at dang chuan BC va bao toan thong tin. Giai ***at Z= Q+= BOSQID Thc hien thuat toan chi tiet Y= BOSQID Chon 2 thuoc tnh . Tm bao ong cua tap hp thuoc tnh con lai. Neu bao ong cha 1 trong 2 thuoc tnh chon chang han A, ngha la ta a tm c 2 thuoc tnh AB sao cho (Y-AB)A Chon BO:(SQID)+ B Giam O trong Y ta c Y= BSQID Chon BS:(QID)+ B Giam S trong Y ta c Y= BQID Chon BQ:(ID)+ B Giam Q trong Y ta c Y= BID Chon BD: I+ B Giam D trong Y ta c Y= BI Q1=(BI) va F1={IB} e tnh F1 ta phai tnh bao ong cua tat ca tap con cua {BI}F1 ***Giam B trong Z ta c Z= OSQID at Y=OSQID Chon OD: (SQI)+ D; Giam O trong Y ta c Y= SQID chon QD: (SI)+ D giam Q trong Y ta c Y= SID chon ID: S+ D; giam I trong Y ta c Y= SD Q2=(SD) va F2={SD} e tnh F2 ta phai tnh bao ong cua tat ca tap con cua {SD} F2 *** Giam D trong Z ta c Z= OSQI at Y=OSQI chon OQ: (SI)+ Q giam O trong Y ta c Y= SQI Q3=(SQI) va F3={SIQ}
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU


bc tren khong chon AB e bao ong tap hp thuoc tnh con lai cha A hay B e tnh F3 ta phai tnh bao ong cua tat ca tap con cua {SQI} F3 *** Giam Q trong Z ta c Z= OSI at Y=OSI Chon OS: I+=IBO O giam S trong Y ta c Y= OI Q4=(OI) va F4={IO} *** Giam O trong Z ta c Z= SI Q5=(SI)va F5={PTHHN} Ta co the hieu Q3(SQI)la to hp cua 2 lc o con Q5(SI) va Q3(SQI) Vay ket qua phan ra la: 1:Q1(BI) 2:Q2(SD) 3:Q3(SQI) 4:Q4(OI) F1={IB} F2={SD} F3={SIQ} F4={IO}

Trang 75

iv

Chu y
+ Nen tranh phan ra neu lc o a dang chuan mong muon. + Nen xem xet to hp cac lc o quan he con thanh lc o ln hn neu lc o ln hn van at dang chuan mong muon. + Mot ket qua phan ra bao toan phu thuoc ham se co gia tr hn ket qua phan ra khong bao toan phu thuoc ham. Gia hai ket qua phan ra eu khong bao toan phu thuoc ham th ket qua phan ra thoa nhieu phu thuoc ham trong F se co gia tr hn . + Khong co thuat toan phan ra lc o Q thanh cac lc o con dang chuan BC va bao toan thong tin va bao toan phu thuoc ham. + Van co lc o Q c phan ra thanh cac lc o con dang chuan BC va bao toan thong tin va bao toan phu thuoc ham.

V du 20: cho lc o Q(CSZ) co F={CSZ,ZC}. Q khong the phan ra thanh cac lc o con dang chuan BC va bao toan thong tin va bao toan phu thuoc ham. That vay: TN={S} TG={CZ} Tat ca khoa cua Q la: Xi TNXi (TNXi)+ sieu khoa khoa S S Z SZ SZC SZ SZ C SC SZC SC SC ZC SZC SZC SZC Vay Q at dang chuan 3 nhng khong dang chuan BC v co ZC co ve trai khong la sieu khoa. Nhng neu ta phan ra Q thanh cac lc o con co t hn 3 thuoc tnh th phu thuoc CSZ khong suy ra c t cac phu thuoc hnh chieu.

Phan ra thanh dang chuan 3 va bao toan thong tin va bao toan phu thuoc ham Thuat Toan phan ra Q, F thanh dang chuan 3, bao toan thong tin, bao toan phu thuoc ham D lieu vao: lc o quan he Q va tap phu thuoc ham F. D lieu ra: mot phan ra sao cho moi lc o quan he con eu at chuan 3 va bao toan thong tin va bao toan phu thuoc ham.

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU Tm phu toi thieu Ftt cua F

Trang 76

Neu co mot phu thuoc ham nao cua Ftt ma lien quan en tat ca cac thuoc tnh cua Q th ket qua phan ra chnh la Q ( Q khong the phan ra) Neu co nhng thuoc tnh cua Q khong nam trong mot phu thuoc nao cua Ftt - du ve phai hay ve trai cua F th chung tao thanh mot lc o can tm. C moi phu thuoc ham X A Ftt th XA la mot lc o can tm Neu co mot lc o con cha khoa K cua Q th ket thuc thuat toan Ngc lai tao mot lc o con K
V du 21: cho lc o Q(CTHRSG),F={CT,HRC,THR,CSG,HSR}.Hay phan ra Q thanh cac lc o con at dang chuan 3 va bao toan thong tin va bao toan phu thuoc ham. Gai: + F=Ftt={CT,HRC,THR,CSG,HSR} la phu toi thieu. + Ap dung thuat toan tren Q c phan ra thanh cac lc o con Q1(CT),Q2(HRC),Q3(THR),Q4(CSG),Q5(HSR) + Khoa cua Q Xi TNXi (TNXi)+ sieu khoa khoa HS CTHRSG HS HS C HSC CTHRSG HSC T HST CTHRSG HST CT HSCT CTHRSG HSCT R HSR CTHRSG HSR CR HSCR CTHRSG HSCR TR HSTR CTHRSG HSTR CTR HSCTR CTHRSG HSCTR + Q5 cha khoa cua Q nen Q1,Q2,Q3,Q4,Q5 la ket qua cua phan ra. nh ly: Thuat toan tren tao ra mot phan ra dang chuan 3 va bao toan thong tin va bao toan phu thuoc ham Chng minh: 1. Neu Ftt co phu thuoc ham fi lien quan en tat ca thuoc tnh th Q at chuan 3. That vay: fiFtt fi la phu thuoc ham co ve phai 1 thuoc tnh fi co dang KA K la sieu khoa. Neu khoa cua Q la K K th ta co KA KA la phu thuoc ham co ve trai d tha ieu nay mau thuan vi fiFtt. Vay K la khoa cua Q neu Q co thuoc tnh khong khoa th A la thuoc tnh khong khoa duy nhat cua Q va moi phu thuoc ham co ve phai la A phai co ve trai la K lc o quan he Q khong co phu thuoc ham co ve trai khong la sieu khoa va ve phai khong la thuoc tnh khoa Q at chuan 3. 2. Neu lc o Q(W) gom cac thuoc tnh khong xuat hien trong Ftt th Q at chuan 3. That vay: V la tap con bat ky cua W ta co V+=V F cua Q ch gom cac phu thuoc ham hien nhien trong F khong co phu thuoc ham co ve trai khong la sieu khoa va ve phai la thuoc tnh khong khoa Q at chuan 3. 3. Ta chng minh moi lc o con dang chuan 3. That vay:
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 77

Theo thuat toan th moi lc o con Qi co dang YB vi YB Y la sieu khoa. Gia s trong Qi co phu thuoc ham XA co ve trai khong la sieu khoa va ve phai khong la thuoc tnh khoa. Ta phan lam hai trng hp: Trng hp 1: A=B XB X Y YB la phu thuoc co ve trai d tha, ieu nay trai vi YB la phu thuoc ham trong phu toi thieu. Trng hp 2: AB AY (1). Goi K la khoa cua Qi K Y (2). A la thuoc tnh khong khoa nen A K (3).(1)(2)(3) K Y (4).K la khoa nen KB YB la phu thuoc ham co ve trai d tha. ieu nay trai vi ieu phu thuoc ham YB la phu thuoc ham cua phu toi thieu Ftt 4. Ta chng minh phep phan ra bao toan phu thuoc ham. That vay: Hien nhien Ftt G = Qi(Ftt) Ftt+ G+ (1) Hn na Ftt+ G = Qi(Ftt) Ftt++ G+ Ftt+ G+ (2) (1)va (2) Ftt+ = G+ 5. Ta chng minh phep phan ra bao toan thong tin. That vay: Lap bang kiem tra bao toan thong tin. Ta lan lt ong nhat cac gia tr cua bang tren theo cac phu thuoc ham c phat hien moi bc cua thuat toan tm bao ong cua tap thuoc tnh Qi+ vi Qi+ cha khoa K cua lc o Q. Phu thuoc ham au tien c phat hien la YAjFtt sao cho Qi+Y va AjQi+. dong cua lc o Ql(YAj) co gia tr aj cot Aj nen khi lam bang gia tr ket qua la cot Aj cua dong co lc Qi co them gia tr aj. Tiep tuc cho cac phu thuoc ham phat hien tiep theo ta se co them cac gia tr a cac cot khac cua dong Qi. Do Qi cha khoa nen cac gia tr a mi them vao cua dong Qi se xuat hien tat ca cac thuoc tnh cua lc o Q. Suy ra hang cua lc o Qi se cha toan a la ieu phai chng minh. e lam sang to y tng cua phan chng minh nay ta xet trng hp cu the cua v du 21 : Bc 1: ta lap bang kiem tra bao toan thong tin: C T H R S G Q1(CT) a1 a2 Q2(HRC) a1 a3 a4 Q3(THR) a2 a3 a4 Q4(CSG) a1 a5 a6 Q5(HSR) a3 a4 a5 Bc 2:Ta chng minh dong Q5 cua bang tren se cha toan gia tr a. That vay: ta lan lt ong nhat cac gia tr cua bang tren theo cac phu thuoc ham c phat hien theo thuat toan tm bao ong cua X={HSR} K; F={CT,HRC,THR,CSG,HSR} X0=HSR X1=HSRC do HRC. ong nhat cac gia tr theo phu thuoc ham nay. Tren dong Q2 cot C cha gia tr a nen tren dong Q5 se co them gia tr a cot C X2=HSRCT do CT. ong nhat cac gia tr theo phu thuoc ham nay. X3=HSRCTG do CSG ong nhat cac gia tr theo phu thuoc ham nay.

C T Q1(CT) a1 a2 Q2(HRC) a1 a2 Q3(THR) a1 a2 Q4(CSG) a1 a2 Q5(HSR) a1 a2 + + Do X =Q nen dong Q5 cha toan gia tr a

a3 a4 a3 a4 a3 a4 a5 a6 a5 a6

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 78

V du 22: Cho Q(ABCDEGH), F={ABD; EHG; GC; DC} hay phan ra Q thanh cac lc o con dang chuan 3 va bao toan thong tin va bao toan phu thuoc. Giai: Tm phu toi thieu Ftt cua F Ftt=F={ABD; EHG; GC; DC} Ap dung thuat toan, Q c phan ra thanh lc o CSDL sau: Q1{ABD), Q2(EHG), Q3(GC), Q4(DC) Tm khoa cua Q TN={ABEH} TG={GD} Xi TN Xi (TN Xi)+ Sieu khoa Khoa ABCDEGH ABEH ABEH ABEH G ABEHG ABCDEGH ABEHG D ABEHD ABCDEGH ABEHD GD ABEHGD ABCDEGH ABEHGD Q1,Q2,Q3,Q4 khong cha khoa e bao toan thong tin ta can co Q5(A,B,E,H).Vay ket qua cua phan ra la Q1,Q2,Q3,Q4,Q5

IV BAI TAP
1/ Cho biet dang chuan cua cac lc o quan he sau: F={ABC, CDE, EG} a) Q(ABCDEG); b) Q(ABCDEGH); F={CAB, DE, BG} c) Q(ABCDEGH) F={ABC, DE, HG} d) Q(ABCDEG); F={ABC, CB, ABDE, GA} F={ACB,BIACD,ABCD,HI,ACEBCG,CGAE} e) Q(ABCDEGHI); 2/ Kiem tra s bao toan thong tin ? Q(ABCDE) R1(AD);R2(AB);R3(BE); R4(CDE);R5(AE) F={A C; B C;C D;DE C;CE A} 3/ Cho lc o quan he Q(A,B,C,D) va tap phu thuoc ham F = {AB;BC;AD;DC} Va mot lc o CSDL nh sau: C ={Q1(AB);Q2(AC);Q3(BD)} a) C co bao toan thong tin oi vi F b) C co bao toan phu thuoc ham ? 4/ Kiem tra dang chuan Q(C,S,Z) F={CSZ;ZC} 5/ Phan ra Q(G,H,A,B,C,D) F={GHAD;AGB;CDGH; CA; BHC} 6/ Cho lc o CSDL Kehoach(NGAY,GIO,PHONG,MONHOC,GIAOVIEN) F={NGAY,GIO,PHONGMONHOC MONHOC,NGAYGIAOVIEN NGAY,GIO,PHONGGIAOVIEN MONHOCGIAOVIEN}
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU


a) Xac nh dang chuan cao nhat cua Kehoach

Trang 79

b) Neu Kehoach cha at dang chuan 3, hay phan ra Kehoach thanh lc o CSDL dang chuan 3 va bao toan phu thuoc ham va bao toan thong tin. c) Neu Kehoach cha at dang chuan BC, hay phan ra KeHoach thanh lc o CSDL dang BC 7/ Cho lc o quan he Q(A,B,C,D) va tap phu thuoc ham F F = {AB;BC; DB} C = {Q1(A,C,D); Q2(B,D)} a) Xac nh cac Fi (nhng phu thuoc ham F c bao trong Qi) b) Lc o CSDL C co at dang chuan BC ? Neu khong co the phan ra tiep cac Qi cua C e bien C thanh dang chuan BC ? 8/ Gia s ta co lc o quan he Q(C,D,E,G,H,K) va tap phu thuoc ham F nh sau; F = {CK H; C D; EC; E G; CK E} a) T tap F, hay chng minh EK DH b) Tm tat ca cac khoa cua Q. c) Xac nh dang chuan cua Q. d) Hay tm cach phan ra Q thanh mot lc o CSDL at dang chuan BC (hoac dang chuan 3). tm tap phu thuoc ham va khoa cho moi lc o quan he con. 9/ Cho lc o quan he Q(S,I,D,M) F = {f1:SI DM; f2:SD M; f3:D M} a) Tnh bao ong D+, SD+, SI+ b) Tm tat ca cac khoa cua Q c) Tm phu toi thieu cua F d) Xac nh dang chuan cao nhat cua Q e) Neu Q cha at dang chuan 3, hay phan ra Q thanh lc o CSDL dang chuan 3 va bao toan phu thuoc ham va bao toan thong tin. f) Neu Q cha at dang chuan BCNF, hay phan ra Q thanh lc o CSDL dang BCNF g) Kiem tra phep tach Q thanh cac lc o con (SID,SIM) co bao toan thong tin ? h) Kiem tra phep tach Q thanh cac lc o con (SID,SIM) co bao toan phu thuoc ham ? 10/ Cho lc o quan he R(W,A,Z,Y,Q,P) R1(A,Z); R2(W,Y,Q,P) R3(Y,Q,P,A) F = {W AYQP, A Z, YQP A} Hay kiem tra tnh ket noi khong mat thong tin.
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU


11/ Cho lc o quan he Q(Mon, GiangVien,Gi giang, Phong, SinhVien, Hang) vi F ={MGV; G,PM; G,GVP; M,SVH; G,SVP} C = {Q1(M,G,P); Q2(M,GV);Q3( M,SV,H)} Kiem tra xem lc o c s d lieu sau ay co bao toan thong tin oi vi F ? 12/ Kiem Tra Dang Chuan a) Q(A,B,C,D) F={CAD; AB} b) Q(S,D,I,M) F={SID;SDM} c) Q(N,G,P,M,GV) F={N,G,PM;MGV} d) Q(S,N,D,T,X) F={SN; SD; ST; SX} 13/ Phan ra lc o thanh dang BCK a) Q(S,D,I,M) F={S,ID;S,DM} b) Q(A,B,C,D) F={AB;BC;DB} c) Q(C,S,Z) F={C,SZ; ZC} 14/ Phan ra lc o thanh dang 3NF va bao toan phu thuoc ham va bao toan thong tin a) Q(A,B,C), F={AB;AC;BA;CA;BC} b) Q(MSCD,MSSV,CD,HG) F={MSCDCD; CDMSCD; CD,MSSVHG; MSCD,HGMSSV; CD,HGMSSV; MSCD,MSSVHG} c) Q(A,B,C,D) F={ ABC; CB}

Trang 80

----oOo----

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU E THI MAU MON C S D LIEU (thi gian 60 phut) e 1

Trang 81

BAI 1: (6 iem) e quan ly lch day cua cac giao vien va lch hoc cua cac lp, mot trng to chc nh sau: Moi giao vien co mot ma so giao vien (MAGV) duy nhat, moi MAGV xac nh cac thong tin nh: ho va ten giao vien (HOTEN), so ien thoai (DTGV). Moi giao vien co the day nhieu mon cho nhieu khoa nhng ch thuoc s quan ly hanh chanh cua mot khoa nao o. Moi mon hoc co mot ma so mon hoc (MAMH) duy nhat, moi mon hoc xac nh ten mon hoc (TENMH). ng vi moi lp th moi mon hoc ch c phan cho mot giao vien. Moi phong hoc co mot so phong hoc (PHONG) duy nhat, moi phong co mot chc nang (CHUCNANG); chang han nh phong ly thuyet, phong thc hanh may tnh, phong nghe nhn, xng thc tap c kh, Moi khoa co mot ma khoa (MAKHOA) duy nhat, moi khoa xac nh cac thong tin nh: ten khoa (TENKHOA), ien thoai khoa(DTKHOA). Moi lp co mot ma lp (MALOP) duy nhat, moi lp co mot ten lp (TENLOP), s so lp (SISO). Moi lp co the hoc nhieu mon cua nhieu khoa nhng ch thuoc s quan ly hanh chnh cua mot khoa nao o. Hang tuan, moi giao vien phai lap lch bao giang cho biet giao vien o se day nhng lp nao, ngay nao (NGAYDAY), mon g, tai phong nao, t tiet (TUTIET) nao en tiet (DENTIET) nao, ta e bai day (BAIDAY), nhng ghi chu (GHICHU) ve cac tiet day nay, ay la gi day ly thuyet (LYTHUYET) hay thc hanh - gia s neu LYTHUYET=1 th o la gi day thc hanh va neu LYTHUYET=2 th o la gi ly thuyet, mot ngay co 16 tiet, sang t tiet 1 en tiet 6, chieu t tiet 7 en tiet 12, toi t tiet 13 en 16.Gia s ta co lc o c s d lieu e quan ly bai toan tren nh sau: Giaovien(MAGV,HOTEN,DTGV,MAKHOA)
Monhoc(MAMH,TENMH) Phonghoc(PHONG,CHUCNANG) Khoa(MAKHOA,TENKHOA,DTKHOA) Lop(MALOP,TENLOP,SISO,MAKHOA) Lichday(MAGV,MAMH,PHONG,MALOP,NGAYDAY,TUTIET,DENTIET,BAIDAY,LYTHUYET,GHICHU) 1.Hay xac nh khoa cho moi lc o quan he tren. (2,0 ) 2.Phat bieu cac rang buoc toan ven mien gia tr, rang buoc toan ven lien thuoc tnh (1.0 ) 3.Da vao lc o CSDL tren, hay thc hien cac cau hoi sau bang SQL (3,0 ) a.Xem lch bao giang tuan t ngay 16/09/2002 en ngay 23/09/2002 cua giao vien co MAGV (ma giao vien) la TH3A040. Yeu cau: MAGV,HOTEN,TENLOP,TENMH,PHONG, NGAYDAY, TUTIET, DENTIET, BAIDAY, GHICHU) b.Xem lch bao giang ngay 23/09/2002 cua cac giao vien co ma khoa la CNTT. Yeu cau: MAGV,HOTEN,TENLOP,TENMH,PHONG, NGAYDAY, TUTIET, DENTIET,BAIDAY, GHICHU c.Cho biet so lng giao vien (SOLUONGGV) cua moi khoa, ket qua can sap xep tang dan theo cot ten khoa. yeu cau: TENKHOA ,SOLUONGGV ( SOLUONGGV la thuoc tnh t at)
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU BAI 2: (4 iem)


Cho lc o quan he Q(A,B,C,D,E,G,H,K) va tap phu thuoc ham F nh sau; F = {C AD; E BH; B K; CE G} 1. Kiem tra xem cac phu thuoc ham E K; EG co thuoc tap F+ ? (1,0) 2. Tm tat ca cac khoa cua Q. (1,0) 3. Xac nh dang chuan cua Q. (1,0) 4. Neu Q cha at chuan BC. Hay phan ra Q thanh lc o CSDL at chuan BC (1,0) AP AN BAI 1:Cau 1: Giaovien(MAGV,HOTEN,DTGV,MAKHOA) Monhoc(MAMH,TENMH) Phonghoc(PHONG,CHUCNANG) Khoa(MAKHOA,TENKHOA,DTKHOA) Lop(MALOP,TENLOP,SISO,MAKHOA)

Trang 82

a.

b.

Cau 2: t rGiaovien t.HOTEN NULL RBTV mien gia tr cuoi t rMonhoc t.TENMH NULL RBTV mien gia tr cuoi t rKhoa t.TENKHOA NULL RBTV mien gia tr cuoi t rLOP t.TENLOP NULL va t.SISO > 0 RBTV mien gia tr cuoi t rLichday t.TUTIET < t.DENTIET va RBTV lien thuoc tnh t.NGAYDAY NULL va RBTV mien gia tr t.BAIDAY NULL va RBTV mien gia tr (t.LYTHUYET =1 Or t.LYTHUYET=2) va RBTV mien gia tr (t.TUTIET >=1 va t.TUTIET<=16) va RBTV mien gia tr (t.DENTIET >=1 va t.DENTIET<=16) RBTV mien gia tr cuoi Cau 3: SELECT giaovien.magv,hoten,tenlop,tenmh,phong,ngayday,tutiet,entiet,baiday,ghichu FROM ((lichday INNER JOIN giaovien ON lichday.magv = giaovien.magv) INNER JOIN lop ON Lichday.malop = lop.malop) INNER JOIN monhoc ON lichday.mamh = monhoc.mamh WHERE ngayday >=#16/09/2002# AND ngayday<=#23/09/2002# AND magv= TH3A040 SELECT giaovien.magv,hoten,tenlop,tenmh,phong,ngayday,tutiet,entiet,baiday,ghichu FROM ((lichday INNER JOIN giaovien ON lichday.magv = giaovien.magv) INNER JOIN lop ON Lichday.malop = lop.malop) INNER JOIN monhoc on lichday.mamh = monhoc.mamh

Lichday(MAGV,MAMH,PHONG,MALOP,NGAYDAY,TUTIET,DENTIET,BAIDAY,LYTHUYET,GHICHU)

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU WHERE ngayday = #23/09/2002# AND makh= CNTT SELECT tenkhoa,COUNT(giaovien.makhoa) AS soluonggv FROM giaovien INNER JOIN khoa ON giaovien.makhoa=khoa.makhoa GROUP BY giaovien.makhoa,tenkhoa

Trang 83

c.

BAI 2. 1. E+ = E,B,H,K K nen E K F+ E+ = E,B,H,K G nen E G F+ 2. TN={CE}; TG={B} Xi TN Xi (TN Xi )+ Sieu khoa Khoa + CE Q CE CE B CEB Q+ CEB vay Q co khoa duy nhat la K={C,E} 3. C K va C+=CAD thuoc tnh khong khoa A Q khong at chuan 2 Q at chuan 1
F={C->AD; E->BH; B->K; CE->G} Q(A,B,C,D,E,G,H,K) K = CE

Tnh F1, K1 F1={C->AD} Q1(C,A,D) K1 = C F12={E->BH;B->K;CE->G;...} Q12(B,C,E,G,H,K) K12 = CE Tnh F22,K22 Tnh F2,K2

F2={E->BH} Q2(E,B,H) K2=E

F22={E->K;CE->G} Q22(C,E,G,K) K22 = CE Tnh F4,K4 F4={CE->G} Q4(C,E,G) K4 = CE

Tnh F3,K3 F3={E->K} Q3(E,K) K3 = E

4. Q(A,B,C,D,E,G,H,K); F={CAD; EBH; BK; CEG} Vay lc o quan he Q c tach thanh lc o c s d lieu at chuan BC sau: Q1(C,A,D) F1={CAD} at chuan BC Q2(E,B,H) F2={EBH} at chuan BC Q3(E,K) F3={EK} at chuan BC Q4(C,E,G) F4={CEG} at chuan BC

----oOo----

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 84

e 2 Cho mot lc o c s d lieu C dung e quan ly hoat ong sa cha, bao tr xe cua mot gara xe hi. Lc o c s d lieu C gom cac lc o quan he nh sau:
Q1: Tho(MATHO,TENTHO,NHOM,NHOM_TRUONG) Tan t: Moi ngi th eu co ma so la MATHO e nhan dien. Moi th ch co mot ten (TENTHO) va ch thuoc mot nhom (NHOM). Nhom trng (NHOM_TRUONG)cua moi nhom la mot trong so nhng ngi th cua nhom o. MGT(MATHO)=MGT(NHOM_TRUONG) Q2: Cong_viec(MACV,NOIDUNGCV) Tan t: Dch vu sa cha xe c chia nho thanh nhieu cong viec e de dang tnh toan chi ph vi khach hang. Moi cong viec eu co ma rieng (MACV) va noi dung cua cong viec c mo ta qua NOIDUNGCV. Q3: Hop_dong(SOHD,NGAYHD,MAKH,TENKH,DCHI,SOXE,TRIGIAHD, NG_GAIO_DK,NG_NGTHU) Tan t: Moi hp ong sa xe ky ket vi khach hang eu co ma so (SOHD) e phan biet. NGAYHD la ngay ky hp ong. Moi khach hang co mot ma so (MAKH), mot ten (TENKH) va mot a ch (DCHI) e theo doi cong n. SOXE la so ang bo cua xe em en sa cha, so nay do phong CSGT ng bo cap (neu xe oi chu th xem nh mot xe khac). Khach hang ky hp ong chnh la chu xe sa cha. Mot khach hang co the ky nhieu hp ong sa cha nhieu xe khac nhau hoac hp ong sa cha nhieu lan cua cung mot xe nhng trong cung mot ngay. Nhng cong viec sa cha cho mot au xe ch ky hp ong mot lan. TRIGIAHD la tong tr gia cua hp ong. NG_GIAO_DK la ngay d kien phai giao tra xe cho khach. NG_NGTHU la ngay nghiem thu that s sau khi a sa cha xong e thanh ly hp ong. Q4: Chitiet_HD(SOHD,MACV,TRIGIA_CV,MATHO,KHOANTHO) Tan t: Moi hp ong sa xe co the gom nhieu cong viec. MACV la ma so cua tng cong viec. TRIGIA_CV la chi ph ve vat t, phu tung, thiet b, cong th ... a tnh toan vi khach. Moi cong viec cua hp ong se giao cho mot ngi th phu trach (MATHO) va mot ngi th co the tham gia vao nhieu cong viec cua mot hay nhieu hp ong khac nhau. KHOANTHO la so tien giao khoan lai cho ngi th sa cha. Q5: Phieu_thu(SOPH,NGAYPH,SOHD,MAKH,HOTEN,SOTIENTHU) Tan t: Khach hang (MAKH) co the thanh toan tien cua mot hp ong (SOHD) lam nhieu lan trc hoac sau khi nghiem thu (trong cung ngay hoac khac ngay). Moi lan thanh toan eu co so phieu e phan biet (SOPH), NGAYPH la ngay phat hanh phieu va SOTIENTHU la so tien thanh toan. HOTEN la ho ten cua ngi mang tien en thanh toan (co the khac vi ten cua khach hang ng ra ky hp ong) Cau hoi: 1/ Xac nh tap hp F gom tat ca cac phu thuoc ham suy ra t tan t cua cac lc o quan he (khong can liet ke cac phu thuoc ham hien nhien). Xac nh khoa cho tng lc o quan he. 2/ Mo ta tat ca cac rang buoc toan ven cua lc o c s d lieu C. Lap bang tam anh hng tong hp.
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 85

3/ Dung ngon ng SQL e thc hien nhng yeu cau sau: a) Cho biet danh sach nhng ngi th hien khong tham gia vao mot hp ong sa cha nao. b) Cho biet danh sach nhng hp ong hien a thanh ly (a giao tra xe cho khach) nhng cha c thanh toan ay u. c) Gia s hom nay la ngay 21/12/95 cho biet danh sach nhng hp ong can phai hoan tat trc ngay 31/12/95. d) Cho biet ngi th nao thc hien nhieu cong viec nhat. e) Cho biet ngi th nao thc hien tong gia tr cong viec (tong so tien) cao nhat. 4/ Lc o c s d lieu C dang chuan may (cao nhat). Hay dung thuat toan phan ra e nang cap lc o c s d lieu tren. Lu y: Cac thuoc tnh eu c xem nh thuoc tnh n.

ap an: Cau 1: F1={MATHOTENTHO,NHOM,NHOM_TRUONG} Q1:Tho(MATHO,TENTHO,NHOM,NHOM_TRUONG)


F2={MACVNOIDUNGCV} Q2:Congviec(MACV,NOIDUNGCV) F3={SOHDNGAYHD,MAKH,SOXE,TRIGIAHD,NG_GIAO_DK,NG_NGTHU; MAKHTENKH,DCHI} Q3: Hopdong(SOHD,NGAYHD,MAKH,TENKH,DCHI,SOXE,TRIGIAHD,NG_GIAO_DK,NG_NGTHU) F4={SOHD,MACVTRIGIA_CV,MATHO,KHOANTHO} Q4:ChiTiet_hd(SOHD,MACV,TRIGIA_CV,MATHO,KHOANTHO) F5={SOPHNGAYPH,SOHD,HOTEN,SOTIENTHU;SOHDMAKH} Q5:Phieu_thu(SOPH,NGAYPH,SOHD,MAKH,HOTEN,SOTIENTHU) Cau 2: mo ta tat ca cac rang buoc toan ven: R11 t1,t2 rTho t1.MATHO t2.MATHO cuoi rTho[NHOM_TRUONG] rTho[MATHO] R12 R13 t rTho t.TENTHO NULL t.NHOM NULL cuoi R21 t1,t2 rCongviec t1.MACV t2.MACV cuoi t rCongviec t.NOIDUNGCV NULL cuoi RBTV khoa chnh RBTV khoa ngoai RBTV mien gia tr RBTV mien gia tr RBTV khoa chnh RBTV mien gia tr.

R22

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU


t1,t2 rHopdong t1.SOHD t2.SOHD cuoi t rHopdong t.NGAYHD NULL t.MAKH NULL t.TENKH NULL t.SOXE NULL t.TRIGIAHD > 0 t.NGAYHD <= t.NG_NGTHU t.NG_NGTHU <= t.NG_GIAO_DK cuoi t1,t2 rChiTiet_hd t1.{SOHD,MACV} t2.{SOHD,MACV} cuoi rChitiet_HD[MATHO] rTho[MATHO] rChitiet_HD[SOHD] rHopdong[SOHD] rChitiet_HD[MACV] rCongviec[MACV] t rChiTiet_hd t.TRIGIA_CV > t.KHOANTHO t.KHOANTHO > 0 cuoi RBTV khoa chnh.

Trang 86

R31

R32

RBTV RBTV RBTV RBTV RBTV RBTV RBTV

mien gia tr. mien gia tr. mien gia tr. mien gia tr. mien gia tr. lien thuoc tnh. lien thuoc tnh. RBTV khoa chnh.

R41

R42 R43 R44 R45

RBTV khoa ngoai RBTV khoa ngoai RBTV khoa ngoai RBTV lien thuoc tnh. RBTV mien gia tr.

R51

R52 R53

R54

t1,t2 rPhieu_thu RBTV khoa chnh t1.SOPH t2.SOPH cuoi rPhieu_thu[SOHD] rHopdong[SOHD] RBTV khoa ngoai t rPhieuthu t.NGAYPH NULL RBTV mien gia tr t.MAKH NULL RBTV mien gia tr t.HOTEN NULL RBTV mien gia tr t.SOTIENTHU > 0 RBTV mien gia tr cuoi trPhieuthu trHopdong RBTV lien thuoc tnh lien quan he. t.SOHD = t.SOHD va t.NGAYPH <= tNGAYHD cuoi Bang tam anh hng tong hp: rTho rCongviec rHopdong rChiTiet_hd rPhieu_thu T S X T S X T S X T S X T S X R11 + + R12 + + + R13 + + R21 + + R22 + + R31 + + R32 + + R41 + + Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU R42 - + + R43 R44 R45 R51 R52 R53 R54
+ + + + + + + + + + + + + + + + -

Trang 87

+ +

+ +

+ +

Cau 3: a) SELECT matho,tentho FROM tho WHERE matho NOT IN (SELECT matho
FROM hop_dong INNER JOIN chitiet_HD ON hop_dong.sohd = chitiet_HD.sohd WHERE ng_ngthu > date() OR ISNULL(ng_ngthu))

b)SELECT sohd,ngayhd,makh,tenkh,dchi,soxe,trigiahd,ng_giao_dk,ng_ngthu FROM hop_dong WHERE ng_giao_dk <= DATE() AND (TRIGIAHD > (SELECT SUM(SOTIENTHU) FROM phieu_thu WHERE phieu_thu.sohd = hop_dong.sohd) OR sohd Not In (Select sohd From phieu_thu)) c)SELECT sohd,ngayhd,makh,tenkh,dchi,soxe,trigiahd,ng_giao_dk,ng_ngthu FROM hop_dong WHERE ng_giao_dk > #12/21/95# AND ng_giao_dk <= #12/31/95# d)SELECT chitiet_hd.matho,tentho,COUNT(macv) AS soluongcv FROM chiTiet_hd INNER JOIN tho ON chiTiet_hd.matho = tho.matho GROUP BY chiTiet_hd.matho,tentho HAVING COUNT(macv) >= ALL (SELECT COUNT(macv) FROM chiTiet_hd GROUP BY matho) e)SELECT chiTiet_hd.matho,tentho,SUM(trigia_cv) AS congtrigia_cv FROM chiTiet_hd INNER JOIN tho ON chiTiet_hd.matho = tho.matho GROUP BY chiTiet_hd.matho,tentho HAVING SUM(trigia_cv) >= ALL (SELECT SUM(trigia_cv) FROM chiTiet_hd GROUP BY matho) Cau 4: F1={MATHOTENTHO,NHOM,NHOM_TRUONG} Q1:Tho(MATHO,TENTHO,NHOM,NHOM_TRUONG) K1 = MATHO Q1 dang chuan BC F2={MACVNOIDUNGCV} Q2:Congviec(MACV,NOIDUNGCV) K2 = MACV Q2 dang chuan BC

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 88

F3={SOHDNGAYHD,MAKH,SOXE,TRIGIAHD,NG_GIAO_DK,NG_NGTHU; MAKHTENKH,DCHI} Q3: Hopdong(SOHD,NGAYHD,MAKH,TENKH,DCHI,SOXE,TRIGIAHD,NG_GIAO_DK,NG_NGTHU) K3 = SOHD Q3 dang chuan 2 F4={SOHD,MACVTRIGIA_CV,MATHO,KHOANTHO} Q4:ChiTiet_hd(SOHD,MACV,TRIGIA_CV,MATHO,KHOANTHO) K4 = {SOHD,MACV} Q4 dang chuan BC F5={SOPHNGAYPH,SOHD,HOTEN,SOTIENTHU;SOHDMAKH} Q5:Phieu_thu(SOPH,NGAYPH,SOHD,MAKH,HOTEN,SOTIENTHU) K5 = SOPH Q5 dang chuan 2 Vay lc o c s d lieu C at dang chuan 2. e nang cap lc o c s d lieu tren ta phai phan ra Q3 va Q5 thanh: F31={SOHDNGAYHD,MAKH,SOXE,TRIGIAHD,NG_GIAO_DK,NG_NGTHU} Q31: Hopdong(SOHD,NGAYHD,MAKH,SOXE,TRIGIAHD,NG_GIAO_DK,NG_NGTHU) K31 = SOHD Q31 at chuan BC F32={MAKHTENKH,DCHI} Q32: Khachhang(MAKH,TENKH,DCHI) K32 = MAKH Q32 at chuan BC F51={SOPHNGAYPH,SOHD,HOTEN,SOTIENTHU} Q51:Phieu_thu(SOPH,NGAYPH,SOHD,HOTEN,SOTIENTHU) K51 = SOPH Q51 at chuan BC F52={SOHDMAKH} Q52:Hopdong(SOHD,MAKH) K52 = SOHD Q52 at chuan BC Lc o Q52 la lc o con cua Q31 nen ta loai Q52 khoi lc o c s d lieu C. Vay lc o c s d lieu C c phan ra thanh cac lc o Q1,Q2,Q31,Q32,Q4,Q51

----oOo----

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 89

e 3 Cho mot lc s o c s d lieu C dung e quan ly hoat ong kinh doanh kieu hoi cua mot n v. Lc o c s d lieu C gom cac lc o quan he nh sau : Q1: Nguyen_te(LOAINT,NGAY,TIGIA,TILE_HH) Tan t : Moi nguyen te c nhan dien duy nhat qua LOAINT. Cac loai nguyen te co the la: USD, FF, DM, YEN, ...Thuoc tnh TIGIA ch t gia so vi tien ong VN cua moi nguyen te trong ngay ( do Ngan hang Ngoai thng quyet nh vao au moi ngay va co nh trong ngay). Thuoc tnh TILE_HH la t le % hue hong ma cong ty c hng tren gia tr chi tra cua moi nguyen te (t le nay co nh trong nam). Lu y : Quan he nay ch cha cac nguyen te ma cong ty co chi tra kieu hoi. Moi khi can chi tra mot loai nguyen te mi, cong ty bat au lu t gia nguyen te mi ke t ngay chi tra tr i. Q2: Don_vi(MADV,NUOC) Tan t : Cong ty lam ai dien cho khoang 50 n v cua nc ngoai e chi tra kieu hoi cho khach hang tai VN. Moi n v co ma rieng e phan biet (MADV)va at tru s chnh tai 1 nc (NUOC). Q3: Danh_sach(MADV,SODS,NGAYDS) Tan t : Moi danh sach lien quan en 1 n v, co mot so th t (SODS) e phan biet vi cac danh sach khac cua cung n v. Thuoc tnh NGAYDS la ngay cong ty nhan c danh sach, cung la ngay ma n v tai nc ngoai gi danh sach cho cong ty. Trong mot ngay, mot n v tai nc ngoai ch gi toi a mot danh sach. Q4: Ctiet_ds(MADV,SODS,HOTENKH,DIACHI,LOAINT,TIENNT) Tan t : Moi danh sach chi tra cua mot n v co the gom nhieu khach hang. Gia s rang thuoc tnh HOTENKH co the them mot so thong tin phu u e phan biet vi cac khach hang khac trong cung danh sach. Moi khach hang ch co mot a ch (DIACHI) va nhieu khach hang co the co chung mot a ch. Trong mot danh sach, moi khach hang ch nhan mot loai nguyen te vi so tien nguyen te la TIENNT Q5: Giay_bao(SOGB,MADV,SODS,HOTENKH,NGAYGB,LAN) Tan t : Sau khi nhan danh sach cua mot n v, cong ty gi giay bao cho cac khach hang tai VN. Moi giay bao co so th t la SOGB (anh so tang dan) e phan biet vi cac giay bao khac (cua cung n v hoac khac n v). Neu sau 3 lan gi giay bao (moi lan cach nhau 1 tuan) ma khach hang khong en nhan tien, cong ty se gi tra cho n v tai nc ngoai). Q6:Chi_tra(SOPCHI,MADV,SODS,HOTENKH,NGAYCTRA,SOTIENVN) Tan t : Moi khach hang trong danh sach cua 1 n v, sau khi nhan giay bao, se en nhan tien ong VN 1 lan tai cong ty va moi phieu chi tien cho khach se co so la SOPCHI e phan biet vi bat ky phieu chi khac. Thuoc tnh SOTIENVN ch so tien VN ma khach hang nhan c tng ng vi TIENNT ghi trong danh sach. T gia qui oi c tnh vao ngay chi tra (NGAYCTRA). So tien hue hong ma cong ty c hng se c tnh toan da tren so tien thc chi (SOTIENVN) va t le hue hong cua nguyen te.
Cau hoi :
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 90

1. Xac nh tap F gom tat ca cac phu thuoc ham suy ra t tan t cua cac lc o quan he. Xac nh khoa cho tng lc o quan he. 2. Mo ta tat ca cac rang buoc toan ven cua lc o c s d lieu. Lap bang tam anh hng tong hp. 3. Dung ngon ng SQL e thc hien nhng yeu cau sau: a) Cho biet t gia cua cac nguyen te trong ngay 21/12/95 b) Cho biet nhng danh sach chi tra kieu hoi cua cac n v co tru s chnh at tai nc Phap. c) Cho biet nhng khach hang khong en nhan tien. d) Cho tong so tien hue hong ma cong ty c trong khoang thi gian t ngay d1 en ngay d2. e) Cho biet n v nc ngoai co tong so tien chi tra (tnh theo tien ong VN) cao nhat. 4. Lc o c s d lieu C dang chuan may (cao nhat) ? Hay dung thuat toan phan ra e nang cap c s d lieu tren. Lu y : Cac thuoc tnh co mien gia tr la ngay dng lch xem nh thuoc tnh n.

----oOo----

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 91

e 4 Cho mot lc o c s d lieu C dung e quan ly viec thue mn phong tai mot khach san. Lc o c s d lieu C gom cac lc o quan he nhu sau : Q1: Phong(MAPH,SO_NGUOI,DACDIEM,GIA_PHONG) Tan t: Cac phong cua khach san c phan biet vi nhau qua MAPH. SO_NGUOI la kha nang cha toi a cua phong. DACDIEM mo ta so ac iem cua phong. GIA_PHONG la gia ca thue phong trong 1 ngay. Q2: Tien_nghi(LOAI_TN,TEN_TN) Tan t: Ngoai cac vat dung toi thieu, khach san co the trang b them mot so tien nghi khac cho cac phong nh : ien thoai, tivi, tu lanh, LOAI_TN la ma so e phan biet tng loai tien nghi. TEN_TN la ten goi cua loai tien nghi. Q3: Tai_san(LOAI_TN,STT,MAPH,NGAY_TB) Tan t : Moi loai tien nghi, khach san co the mua mot so lng ln va STT dung e phan biet cac vat dung trong cung loai tien nghi. Mot vat dung co the c sap xep trang b cho nhieu phong khac nhau nhng trong mot ngay vat dung ch trang b cho mot phong. MAPH la phong c trang b va NGAY_TB la ngay bat au trang b. Lu y : Moi khi mot vat dung c thay oi phong th cap nhat lai MAPH va NGAY_TB cua vat dung o. Q4: Thue_phong(MAPH,HOTEN,NGAYBD,NGAYKT,NGAYTRA,LOAIDV,NGAYDV,TIENDV) Tan t : HOTEN la ho ten cua khach thue phong MAPH. Gia s rang ho ten cac khach thue phong trong cung mot phong trong mot ngay luon luon khac nhau. NGAYBD va NGAYKT la ngay bat au va ngay ket thuc (d kien) thue phong. NGAYTRA la ngay tra that s. Gia s rang khong co trng hp khach tra phong va thue lai chnh phong o trong cung mot ngay. So tien thue phong c chia eu cho so khach thue trong cung phong. Khach thue phong co the s dung them cac dch vu (goi ien thoai ng dai, thue xe, thu tuc hanh chnh, ) LOAI_DV la ma so cua loai dch vu s dung. NGAYDV ngay dch vu thc hien. TIENDV la so tien khach thue phai tra cho dch vu. Neu trong cung mot ngay khach thue phong s dung 1 dch vu nhieu lan th tien dch vu c cong don lai thanh mot lan va tao thanh mot bo (v du trong ngay goi ien thoai 3 cuoc vi so tien phai tra lan lt la : 5000VN, 4500VN, 2000VN th se c tnh chung mot lan la 11500VN). Cac dch vu c tnh rieng oi vi tng khach. Neu la dch vu chung cho mot so khach th se tnh tien cho mot n v khach ai dien nao o.
Cau hoi : 1. Xac nh tap F gom tat ca cac phu thuoc ham suy ra t tan t cua cac lc o quan he. Xac nh cac khoa cho tng lc o quan he. 2. Mo ta tat ca cac rang buoc toan ven cua lc o c s d lieu C. Lap bang tam anh hng tong hp cua cac rang buoc toan ven. 3. Dung ngon ng SQL e thc hien nhng yeu cau sau : a) Cho biet cac thong tin cua cac phong co kha nang cha tren 3 ngi. b) Cho biet cac thong tin cua cac phong co trang b may lanh (LOAITN=ML) c) Cho biet cac thong tin cua cac phong hien nay (02/01/96) co trang b may lanh.
Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 92

d) Gia s hom nay la ngay 02/01/96. Tnh tong so tien phai tra (tien thue phong va tien dch vu) cua tng khach a thue phong X t ngay 21/12/95 va tra phong vao hom nay . e) Cho biet doanh so thu c cua tng phong (khong tnh tien dch vu) 1. Lc o c s d lieu C dang chuan may (cao nhat) ?. Hay dung thuat toan phan ra e nang cap lc o c s d lieu C. Lu y : Cac thuoc tnh co mien gia tr la ngay dng lch xem nh thuoc tnh n.

----oOo----

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU

Trang 93

e 5 Cho mot lc o c s d lieu C dung e quan ly viec viec cho mn sach tai mot th vien (xem tai cho hoac mang ve nha). Lc o c s d lieu C gom cac lc o quan he nh sau : Q1 : The_loai(MATL,TENTL) Tan t : Sach cua th vien c phan chia theo the loai e ban oc de dang tra cu. MATL la ma so cua tng the loai va dung e phan biet gia cac the loai. TENTL la ten goi cua the loai. Q2 : Sach(MASH,TENSH,NGUYEN_TAC,TAC_GIA,MATL) Tan t : MASH dung e phan biet cac quyen sach. TENSH la ten (ta) bang tieng Viet cua sach va NGUYEN_TAC la ten nguyen tac (tieng Viet hoac tieng nc ngoai). TAC_GIA la ten tac gia (hay nhom cac tac gia) cua sach. Neu sach co nhieu tap hay nhieu ban th cung xem nh cac au sach khac nhau va co ma so khac nhau. MATL la ma the loai cua sach. Q3 : phieu_muon(MADG,TENDG,DCHI,NGAYCAP,MASH,NGAYMUON,NGAYTRA,TAI_CHO) Tan t : Moi oc gia ch co mot phieu mn sach vi ma so la MADG e phan biet vi cac oc gia khac. Cac thuoc tnh TENDG, DCHI la ten va a ch cua oc gia. NGAYCAP la ngay cap the cho oc gia. MASH la ma so cua sach mn. Gia s khong co trng hp mn roi tra lai cung 1 quyen sach trong cung 1 ngay. Neu sach mn oc tai cho th thuoc tnh TAI_CHO co gia tr True va NGAYMUON=NGAYTRA. Neu sach mn ve nha th thuoc tnh TAI_CHO co gia tr False va NGAYTRA se co gia tr trong cho en khi sach c mang tra lai cho th vien. Moi oc gia ch c gi tai nha toi a 3 quyen sach va moi quyen sach ch c gi tai nha toi a 30 ngay (khong can lu y en bien phap x ly neu khach vi pham noi qui) Q4 : Le_phi(MADG,NAM,NGAY_NOP,SOTIEN) Tan t: oc gia phai ong le ph hang nam (NAM) e gia han the mi c mn sach. NGAY_NOP,SOTIEN la ngay va so tien nop le ph cho NAM.
Cau hoi : 1. Xac nh tap F gom tat ca cac phu thuoc ham suy ra t tan t cua cac lc o quan he. Xac nh cac khoa cho tng lc o quan he. 2. Mo ta tat cac rang buoc toan ven cua lc o c s d lie C. Lap bang tam anh hng tong hp cua cac rang buoc toan ven. 3. Dung ngon ng SQL e thc hien nhng yeu cau sau : a) Cho biet danh sach oc gia va nhng quyen sach mn qua 20 ngay (ke t ngay 02/01/96). b) Cho biet nhng quyen sach co ten the loai la Tin hoc va co s tham gia bien soan cua tac gia X. c) Cho biet tong so lan mn cua tng quyen sach. d) Cho biet tong so lan mn cua tng the loai sach. e) Cho biet the loai sach nao c mn nhieu nhat. 4. Lc o c s d lieu C dang chuan may (cao nhat) ? Hay dung thuat toan phan ra e nang cap lc o c s d lieu C. Lu y : Cac thuoc tnh co mien gia tr la ngay dng lch xem nh thuoc tnh n.

Trung Tam CNTT-HCN Tp.HCM

Giao trnh C S D LIEU TAI LIEU THAM KHAO


[1].Nhap mon c s d lieu ong Th Bch Thuy - Nguyen An Te [2].C s d lieu ly thuyet va thc hanh Nguyen Ba Tng [3].C s d lieu o Trung Tuan [4].Mo hnh d lieu va ngon ng truy van JEFFREY D. ULLMAN [5].Ly thuyet thiet ke c s d lieu JEFFREY D. ULLMAN [6].The Theory Of Relational Databases DAVID MAIER

Trang 94

----oOo----

Trung Tam CNTT-HCN Tp.HCM

TRNG I HC CNG NGHIP TP/HCM


TRUNG TM CNG NGH THNG TIN -o0o-

PHN 2

SQL SERVER

Gio trnh SQL Server2000

Trang 1

MC LC
BI 1: GII THIU MICROSOFT SQL SERVER 2000............................................. 4 1.1 Tng quan v SQL Server 2000. ........................................................................4 1.2 Cc thnh phn ca SQL Server 2000................................................................7 1.3 Kin trc ca CSDL quan h (relational Database Architecture) ......................7 1.4 Gii thiu v Transact-Sql................................................................................11 BI 2: CI T SQL SERVER 2000 ........................................................................ 12 2.1 Lp k hoch ci t SQL SERVER 2000 .......................................................12 2.2 Quyt nh nhng chn la cu hnh ci t SQL SERVER 2000 ..................12 2.2.1 Xc nh ti khon ngi dng (User account) thch hp cho SQL Server Sevice v SQL Server Agent Service........................................................................12 2.2.2 Chn mt ch xc thc (Authentication Mode) ......................................13 2.2.3 Xc nh Collation .......................................................................................13 2.2.4 Chn Network Libraries...............................................................................13 2.2.5 Xc nh client Licensing Mode ..................................................................13 2.3 Cc bc ci t SQL Server 2000. .................................................................13 2.4 To tp tin ci t khng tham d (unattended) v ci t t xa (Remote) SQL Server 2000....................................................................................................................20 2.5 Kt qu ca vic ci t SQL SERVER 2000 ..................................................21 BI 3: CC CNG C CA SQL SERVER............................................................. 22 3.1 SQL ENTERPRISE MANAGER.....................................................................22 3.2 SQL SERVER SERVICES MANAGER .........................................................22 3.2.1 Cc dch v ca SQL Server ........................................................................23 3.2.2 Khi ng, tm ngng, dng cc dch v ca SQL Server..........................24 3.3 OSQL................................................................................................................24 3.4 SQL QUERY ANALYZER .............................................................................25 3.4.1 Gii thiu......................................................................................................25 3.4.2 Khi ng Query Analyzer ..........................................................................26 3.4.3 Thnh phn chnh ca Query Analyzer........................................................26 3.4.4 Mt vi phm nng dng trong Query Analyzer ..........................................28 BI 4: LM VIC VI C S D LIU SQL SERVER ........................................ 29 4.1 Thit k mt c s d liu. ...............................................................................29 4.2 C s d liu ca SQL SERVER 2000 ............................................................31 4.3 To, hiu chnh c s d liu SQL SERVER...................................................34 4.3.1 Gii thiu......................................................................................................34 4.3.2 To c s d liu ..........................................................................................34 4.3.3 Thao tc trn c s d liu ca SQL Server ................................................37 BI 5: KIU D LIU LM VIC VI BNG.................................................... 41 5.1 Kiu d liu (data type) ....................................................................................41 5.1.1 System-Supplied Datatype. ..........................................................................41 5.1.2 User-defined datatype. .................................................................................42 5.2 Lm vic vi bng ca SQL Server..................................................................43 5.2.1 To mt bng mi ........................................................................................43 5.2.2 Hiu chnh bng ...........................................................................................45 5.2.3 Xa bng khi c s d liu.........................................................................46 5.3 Bng tm (Temporary Tables)..........................................................................46 BI 6: TON VN D LIU..................................................................................... 48 6.1 Gii thiu ton vn d liu (data Integrity) ......................................................48 Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 2

6.2 Tm hiu cc ton vn d liu. .........................................................................48 6.2.1 nh ngha NULL/NOT NULL ...................................................................48 6.2.2 Gi tr mc nh (Default Values) ................................................................49 6.2.3 Thuc tnh Identity:......................................................................................52 6.2.4 Check............................................................................................................53 6.2.5 Primary key Constraint.................................................................................54 6.2.6 Unique Constraints.......................................................................................57 6.2.7 Foreign Key Constraint ................................................................................58 BI 7: TRUY XUT C S D LIU CA SQL SERVER ................................... 61 7.1 Cu lnh SELECT ............................................................................................61 7.2 S dng JOINS truy xut d liu.................................................................66 7.3 Dng Sub-Queries ............................................................................................68 7.4 Hiu chnh d liu trong c s d liu ca SQL SERVER..............................69 7.4.1 Chn (INSERT) d liu vo CSDL..............................................................69 7.4.2 Cp nht (UPDATE) d liu vo CSDL. .....................................................71 7.4.3 Xa d liu trong c s d liu....................................................................71 BI 8: KHUNG NHN - VIEW................................................................................... 73 8.1 Gii thiu v View............................................................................................73 8.2 To, hiu chnh, xa View................................................................................73 8.3 To Partition view ............................................................................................74 8.4 Truy xut d liu thng qua View....................................................................75 8.4.1 Xem d liu thng qua view. .......................................................................75 8.4.2 Hiu chnh d liu thng qua View. ............................................................75 BI 9: CHUYN I D LIU ................................................................................ 77 9.1 Khi nim chuyn i v bin i d liu........................................................77 9.1.1 Import/Export d liu...................................................................................77 9.1.2 Bin i d liu (Data Transformations) .....................................................77 9.1.3 Cc cng c chuyn i d liu (Data transfer tools) ..................................77 9.2 Dch v chuyn i d liu DTS (Data Transformation Services - DTS) .......78 9.2.1 DTS Package. ...............................................................................................78 9.2.2 DTS Connections. ........................................................................................78 9.2.3 DTS Tasks. ...................................................................................................78 9.2.4 DTS Package Workflow...............................................................................80 9.2.5 DTS Package Storage...................................................................................80 9.3 Thc hin vic bin i v chuyn i d liu bng cng c ha DTS. .....80 9.3.1 DTS Import/Export Wizard..........................................................................80 9.3.2 DTS Designer...............................................................................................81 9.4 Dng BULK COPY (BCP) v BULK INSERT...............................................88 BI 10: C BN V LP TRNH BNG TRANSACT- SQL................................... 91 10.1 Khi nim c bn..............................................................................................91 10.1.1 nh danh -IDENTIFIERS. .....................................................................91 10.1.2 Tham chiu n cc i tng trong SQL Server. ..................................91 10.1.3 Kiu d liu (DATA TYPE)....................................................................92 10.1.4 Batch ........................................................................................................92 10.1.5 Kch bn - SCRIPT ..................................................................................92 10.2 Bin (VARIABLES).........................................................................................92 10.3 Cu trc iu khin...........................................................................................97 10.3.1 Khi BEGIN END ..............................................................................97 10.3.2 Pht biu PRINT ......................................................................................97 10.3.3 Cu trc iu khin IF ELSE ..............................................................97 Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 3

10.3.4 Biu thc CASE.......................................................................................99 10.3.5 Cu trc vng lp WHILE ................................................................100 10.3.6 Lnh RETURN ......................................................................................101 10.3.7 Lnh WAITFOR ....................................................................................101 10.3.8 Lnh RAISERROR................................................................................101 BI 11: PROCEDURES, FUNCTIONS...................................................................... 104 11.1 STORED PROCEDURES..............................................................................104 11.1.1 Gii thiu Stored proccedures................................................................104 11.1.2 To, thc thi, hiu chnh, xa stored procedures. ..................................104 11.1.3 Tham s v bin trong Stored procedures..............................................106 11.2 FUNCTIONS..................................................................................................110 11.2.1 Scalar Functions.....................................................................................111 11.2.2 Table-valued Functons...........................................................................111 BI 12: TRANSACTIONS LOCK........................................................................... 114 12.1 TRANSACTIONS..........................................................................................114 12.2 LOCK .............................................................................................................116 BI 13: S DNG CURSORS TRUY XUT D LIU.................................... 118 13.1 Khi nim .......................................................................................................118 13.2 Lm vic vi T-SQL server cursors ...............................................................119 13.3 V d. ..............................................................................................................121 BI 14: BY LI - TRIGGER ................................................................................... 123 14.1 Gii thiu v trigger........................................................................................123 14.2 To v qun l cc trigger ..............................................................................124 14.2.1 To trigger..............................................................................................124 14.2.2 Qun l trigger .......................................................................................125 14.3 Vi v d v trigger.........................................................................................125 BI 15: BO MT TRONG SQL SERVER .............................................................. 128 15.1 Khi nim v bo mt.....................................................................................128 15.1.1 M hnh truy cp bo mt ca SQL Server............................................128 15.1.2 Cc ch bo mt. ...............................................................................128 15.1.3 Tm hiu cc Server-Wide Permission. .................................................130 15.1.4 Tm hiu cc quyn (Permission) ch nh trn c s d liu. ..............131 15.1.5 Fixed Database Roles.............................................................................132 15.2 To ti khon ng nhp (Login). ..................................................................133 15.2.1 Dng Create Login Wizard....................................................................133 15.2.2 Dng Enterprise Manager to mt Login..........................................137 15.2.3 To Login bng T-SQL..........................................................................141

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 4

BI 1: GII THIU MICROSOFT SQL SERVER 2000


Tng quan v SQL Server 2000. Microsoft SQL Server 2000 l mt h qun tr c s d liu quan h (Relational database management system - RDBMS), n cung cp cc dch v qun l v lu tr d liu cho cc t chc thng mi ln, cng vi vic truy xut d liu h tr i vi cc ngi dng thng qua internet. N cng h tr kh nng truy xut mt cch d dng i vi cc t chc nh hn v cc ngi dng ring bit. SQL Server 2000 chp nhn v thc thi cc yu cu ca cc khch hng (Client) i vi vic hiu chnh v xo d liu, cng nh cc lnh to cc i tng nh l cc c s d liu (database) v cc bng (Table). SQL Server cho php ngi dng truy xut v sp xp d liu theo cch quan h, vic lu tr d liu mt cch hiu qu theo dng dng v ct. Cc lnh ca ngi dng c gi nh l cc cu lnh truy vn giao tc (Transact-SQL). Transact-SQL (T-SQL) l mt ngn ng dng bi SQL Server 2000 truy vn mt c s d liu hoc hiu chnh ni dung ca n. Mt client t mt chng trnh ng dng hoc mt ngi dng gi cc cu lnh T-SQL (cc truy vn hoc hiu chnh) thng qua mng n SQL Server x l. Cc chng trnh ng dng m gi cc cu lnh c th c vit bng cc ngn ng nh Visual Basic, Visual C++, hoc Java. Chng ny s gip bn lm quen vi Microsoft SQL Server cng nh tho lun v cc thnh phn v thit kt ca n. Microsoft SQL Server pht trin mt cch nhy vt trong nhiu nm. Phin bn mi nht, SQL Server 2000 h tr ni bt hn v tnh bo mt, lu tr v tnh sn dng ca d liu. SQL Server 2000 c tch hp cht ch vi h iu hnh Windows 2000, vic nng cao bo mt v cc cng c da trn giao din ha cung cp trong SQL Server 2000 l cho cc tc v qun tr tr nn d dng hn. Cc cu lnh T-SQL dng hiu chnh hoc truy xut d liu c th c chia thnh ba nhm khc nhau: - Ngn ng nh ngha d liu (Data Definition Language - DDL) c dng nh ngha cc i tng ca c s d liu nh cc kiu d liu, bng v cc truy vn. - Ngn ng thao tc d liu (Data Manipulation Language -DML) c dng chn, chn, cp nht v xa d liu trong cc i tng ca CSDL. - Ngn ng iu khin d liu (Data Control Language - DCL) c dng gn hoc hy b cc quyn t cc ngi dng ca CSDL. SQL Server 2000 chy trn h thng mng Windows NT 4 hoc Windows 2000 Server bng cch dng nhiu b x l v c th c ci t nh mt h thng CSDL c nhn (personal desktop) trn cc my trm Windows NT 4, Windows 2000 Professional, Windows 98, v Windows Me. Bn c th dng cng mt CD ci t phin bn Server SQL Server 2000 hoc Personal SQL Server 2000. Ngoi ra bn c th ci t nhiu th hin (instance) ca SQL Server 2000 trn cng mt my tnh, mi th hin c mt ngi ch (owner) v tp cc ngi dng (user) ca n. 1.1

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 5

C s d liu (CSDL) - Databases Mt CSDL hay l mt database tng t mt tp tin d liu, ni lu tr d liu. Ging nh mt tp tin d liu, mt CSDL khng trnh by thng tin mt cch trc tip n ngi dng; mun xem d liu, ngi dng phi chy mt ng dng truy xut d liu t CSDL v khi d liu c trnh by trong mt dng d hiu v thun tin. Khi d liu c lu trong cc tp tin d liu th phi c ng dng (c lp trnh) lm vic vi cu trc c bit ca mi tp tin d liu. Ngc li, mt CSDL cha dng mt catalog m cc ng dng c th dng xc nh d liu c t chc nh th no. Cc ng dng CSDL cng loi c th dng catalog trnh by n ngi dng cc d liu t cc CSDL khc nhau mt cch linh ng m khng b ph thuc vo mt dng mu c bit. Cc h thng CSDL mnh tc l cc tp tin d liu c t chc theo mt mc cao. Mt CSDL c thit k tt, th khng c s trng lp thng tin khi ngi dng hoc ng dng cp nht ti cng thi im. Cc mnh thng tin lin quan c kt nhm vi nhau trong mt cu trc n hoc mu tin v cc mi quan h c th c nh ngha gia cc cu trc ny v cc mu tin ny. CSDL quan h (Relational Database) Mc d c nhiu cch khc nhau t chc d liu trong mt CSDL, cc CSDL quan h l CSDL hiu qu nht. Cc h thng CSDL quan h l mt ng dng thuc v l thuyt tp hp ton hc i vi vn t chc d liu mt cch hiu qu. Trong mt CSDL quan h, d liu c thu thp vo cc bng (table). Mt bng trnh by lp cc i tng quan trng i vi mt t chc. Mi bng c xy dng thnh cc ct v cc dng (c gi l cc thuc tnh v cc b trong l thuyt quan h). Mi ct trnh by vi thuc tnh ca i tng c th hin trong bng. V d, bng NHANVIEN s c cc ct in hnh i vi cc thuc tnh nh H, Tn, m nhn vin, phng ban, bc lng, cng vic Mi dng trnh by mt th hin ca i tng th hin trong bng. V d, mt dng trong bng NHANVIEN trnh by thng tin v nhn vin c m nhn vin l 12345. Khi t chc d liu vo cc bng, bn c nhiu cch khc nhau nh ngha cc bng. L thuyt CSDL quan h nh ngha mt phng thc gi l dng chun (normalization) m n m bo rng tp cc bng m bn nh ngha s c t chc d liu mt cch hiu qu. SQL lm vic vi d liu trong mt CSDL, bn phi dng mt tp cc lnh v cu lnh (mt ngn ng) c h tr bi DBMS. Bn c th dng vi ngn ng khc nhau vi CSDL quan h; thng thng nht l SQL. Ngn t ca SQL c h tr bi SQL Server c gi Transact-SQL, v Transact-SQL l ngn ng chnh c dng bi h qun tr CSDL SQL Server. XML Extensible Markup Language (XML) l mt ngn ng lp trnh siu vn bn, dng m t ni dung ca ca tp d liu v cch d liu s c kt xut ra thit b hoc hin th trn trang Web. SQL Server 2000 bt u h tr cho XML. Cc c tnh mi ny bao gm: Kh nng truy xut n SQL Server thng qua URL. Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 6

H tr cho lt d liu XML (XLM-Data schemas) v kh nng chnh nh cc truy vn XPath i vi cc lc ny. Kh nng truy xut v ghi d liu XML: Truy xut d liu XML bng cch dng cu lnh SELECT v mnh FOR Ghi d liu XML bng OpenXML rowset provider. Microsoft SQL Server 2000 OLEDB provider (SQLOLEDB) cho php ti liu XML c gn nh vn bn lnh v tr v cc tp kt qu nh mt lung. Cc n bn ca SQL Server 2000 Microsoft SQL Server 2000 sn c cc n bn sau: SQL Server 2000 Enterprise Edition Dng nh mt sn phm database server. H tr tt c cc c tnh c sn trong SQL Server 2000, v phn chia cc mc hiu nng h tr cc trang Web ln v cc tin trnh giao tc trc tuyn ca doanh nghip (online transaction processing OLTP) v cc h thng kho d liu. SQL Server 2000 Standard Edition Dng nh mt database server cho cc nhm v b phn nh. SQL Server 2000 Personal Edition Dnh cho cc ngi dng lu ng - nhng ngi c thi gian khng kt ni vi network nhng vn chy ng dng m i hi s lu tr d liu SQL Server. Cng s dng khi ang chy mt ng dng stand-alone m yu cu vic lu tr d liu SQL Server trn my tnh client. SQL Server 2000 Developer Edition Danh cho cc nh lp trnh pht trin ng dng m dng SQL Server 2000 nh l ni lu tr d liu. Mc d Developer Edition h tr tt c cc c tnh ca Enterprise Edition cho php ngi pht trin vit v kim tra cc ng dng c th s dng cc c tnh, Developer Edition ch cp quyn s dng nh l h thng pht trin hoc kim tra ng dng, khng phi l mt sn phm server. SQL Server 2000 Windows CE Edition Microsoft SQL Server 2000 Windows CE Edition (SQL Server CE) c dng khi lu tr d liu trn thit b Windows CE. C kh nng ng b ha d liu vi bt k n bn ca SQL Server 2000 s ng b ha d liu Windows CE vi CSDL chnh. SQL Server 2000 Enterprise Evaluation Edition n bn vi y c tnh, c th ti v t trang Web. Vi mc tiu ch cho s dng c lng cc c tnh ca SQL Server; phin bn ny s ngng chy sau 120 ngy ti v. Ngoi cc n bn ny ca SQL Server 2000, SQL Server 2000 Desktop Engine l mt thnh phn m cho php ngi pht trin ng dng phn tn mt bn sao ca SQL Server 2000 relational database engine vi ng dng ca h. Trong khi cc chc nng ca database engine trong SQL Server 2000 Desktop Engine l tng t nh database engine trong cc n bn SQL Server, kch c ca cc Desktop Engine databases khng vt qu 2 GB. Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 7

1.2 Cc thnh phn ca SQL Server 2000 Cc thnh phn ca Server SQL Server service Thc thi SQL Server database engine. C mt SQL Server service cho mi th hin (instance) ca SQL Server ang chy trn my tnh. SQL Server Agent service Thc thi cc tc nhn m chy cc tc v qun tr SQL Server theo thi lch. Ch c mt SQL Server Agent service cho mi instance ca SQL Server ang chy trn my tnh. SQL Server Agent cho php nh ngha v lp lch cc tc v m chy da trn thi lch hoc tun hon. Microsoft Search service (ch Windows NT v Windows 2000) Thc thi b my tm kim full-text (full-text search engine). Ch c mt dch v bt chp s cc instance SQL Server trn my tnh. MSDTC service (Ch Windows NT v Windows 2000) Qun tr cc giao tc phn tn. Ch c mt service, bt chp s cc instance SQL Server trn my tnh. MSSQLServerOlAPService service (ch Windows NT v Windows 2000) Thc thi SQL Server 2000 Analysis Services. Ch c mt service, bt chp s cc instance SQL Server trn my tnh. Cc cng c ha (Graphical Tools) SQL Server Enterprise Manager: cng c qun tr CSDL v server chnh, n cung cp mt giao din Microsoft Management Console (MMC). SQL Profiler: to c hi cc ngi qun tr mt cng c tinh vi theo di v phn tch giao thng mng n v i t mt server ang chy SQL Server 2000. SQL Query Analyzer: dng to v qun tr cc i tng CSDL v kim tra cc cu lnh Transact-SQL, cc batch, script mt cch tng tc. SQL Server Service Manager: c dng start, stop, v pause cc dch v ca SQL Server. Client Network Utility: dng qun tr cc client Net-Libraries v nh ngha cc b danh server bao gm cc tham s kt ni server tuy chn nu cn. Server Network Utility: dng qun tr cc server Net-Libraries. SQL Server Books online: l mt ti liu trc tuyn h tr vi Microsoft SQL Server 2000. Bn c th tm thng tin trong SQL Server Books Online bng cch: iu hng thng qua bng ni dung. G mt t kha trong index. G mt t hoc mt cm t v thc hin vic tm kim. 1.3 Kin trc ca CSDL quan h (relational Database Architecture) Trong SQL Server 2000, d liu c lu trong cc CSDL. V vt l, mt CSDL bao gm hai hoc nhiu hn hai tp tin trn mt hoc nhiu a, s th hin vt l ny ch thy c bi nh qun tr v n trong sut i vi ngi dng. S chn la vt l ca CSDL l trch nhim chnh ca ngi qun tr CSDL. V mc logic, mt CSDL c xy Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 8

dng thnh cc thnh phn (component) c hin th i vi ngi dng, chng hn cc bng (Table), cc khung nhn (view) v cc th tc (stored procudure). S chn la logic ca CSDL (chng hn nh thit k cc bng v cc ch mc) l trch nhim chnh ca ngi thit k CSDL. Cc CSDL cha cc d liu ca ngi dng c gi l CSDL ca ngi dng (user database). Ngoi ra, cc hot ng ca SQL Server ty thuc vo bn CSDL h thng (system Database): master, model, Tempdb, v msdb. Cc CSDL ny tn ti trong mi th hin ca SQL Server. CSDL h thng v CSDL ngi dng CSDL Master: uc dng iu khin cc thao tc v thng tin mc h thng ca SQL Server. Lu tr thng tin h thng trong 16 bng h thng, gi l system catalog. System catalog lu tr cc thng tin ti khon ngi dng, bao gm cc mc nh l bo mt, ID, mt khu, cc CSDL lu trn server, cc bin mi trng, cc thng ip li h thng, v cc th tc h thng. CSDL Model: c dng nh l mt CSDL mu cho tt c cc CSDL mi c to ra trong h thng. CSDL Model c th c ty bin to mt cu trc CSDL mc nh mi cho CSDL mi. V d, nu mt bng cn phi tn ti trong CSDL mi sau ny th cc bng nn c to trong CSDL model. Cc CSDL mi va c to s c kch c t nht bng kch c CSDL model. CSDL Tempdb: c dng nh l vng lu cha tm thi i vi cc bng v cc th tc tm. SQL Server 2000 h tr hai loi bng tm: bng tm ton cc (global temporary table) v bng tm c b (local temporary table). Tn ca bng tm ton cc c bt u ##, c th c truy xut i vi tt c cc client, trong khi tn bng tm c b bt u #, ch c th truy xut i vi nhng client m to chng. Lm vic trong Tempdb rt nhanh v cc hot ng khng c ghi nhn li. Tuy nhin, khi client kt thc kt ni n Server th ton b cc bng v th tc trong TempDB s b xa. CSDL Msdb: SQL Server Agent dng CSDL msdb cho cc tc v khc nhau, nh lp biu, cnh bo v ghi nhn cc thao tc. D liu c lu trong cc bng h thng trong CSDL msdb. Cc bng h thng c dng bi SQL Server Agent l sysalerts, syscategories, sysdownloadlist, sysjobhistory, sysjobs, sysjobschedules, sysjobservers, sysjobsteps, sysnotifications, sysoperators, systargetservergroupmembers, systargetservergroups, systargetservers v systaskids. Ngoi ra, CSDL msdb c 7 bng dng cho thao tc d phng v phc hi d liu: backupfile, backupmediafamily, backupmediaset, backupset, restorefile, restorefilegroup, v restorehistory. SQL Server c th t ng tng hoc gim kch c ca CSDL khi cc dng c thm vo hoc xa i. CSDL Pubs, Northwind: l hai CSDL v d c dng trong cc ti liu ca SQL Server Cc CSDL khc l cc CSDL do ngi dng to ra.

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 9

Hnh 1: Cc CSDL h thng v CSDL ca ngi dng Khi nim v c s d liu quan h: Databases, Tables, Columns, Views, Datatypes, v Database Schemas D liu trong mt RDBMS nh SQL Server 2000 c sp xp trong mt s i tng, d thy nht l bng (table). D liu c lu trong cc Table theo dng v ct. D liu lin quan n cc mc thc t nh cc nhn vin, cc sn phm, vic gi hng, ngi tham gia . c lu trong cc table ring bit. V d, h thng qun l nhn vin ca mt cng ty c th c mt bng gi l nhn vin, bng ny dng lu chi tit tt c ca cc nhn vin trong cng ty. Chi tit ca nhn vin bao gm H nhn vin, tn nhn vin, a ch, thnh ph, s chng minh nhn dn Thnh thong cn n cc thng tin ring t t ngi dng bng cch dng mt truy vn. Cc truy vn l cc cu lnh SQL lu trong CSDL v c th c tham chiu n cc cu lnh SQL theo cch nh cc table. SQL Server cng s dng cc kiu d liu, mi ct c th c cc kiu khc nhau. Tt c cc kiu khc nhau ny ca cc i tng, ging nh bng, truy vn v kiu d liu c lu trong mt CSDL. Trong mi trng SQL Server, mt lc CSDL (database schema) l tp hp cc i tng CSDL c lin quan n vic s dng mt tn duy nht v n thuc v mt ngi dng n l. Qun l d liu chnh l lu tr vi s tr gip ca mt s i tng c cung cp cung cp bi SQL Server 2000. Bng 2 lit k cc i tng chnh trong mt database ca SQL Server 2000. Bng 1: i tng Bng - Table Mc nh Default Ct - Column Dng Row Kiu d liu Datatype M t Mt table l mt tp hp ca d liu lu tr trong nhiu dng nhiu ct. Mt default l mt ci t h thng, ngha l khng c ch nh bi ngi dng. Ct l cc i tng dng lu tr cc phn t ring bit bn trong mt dng d liu. Dng l mt mc n ca d liu bn trong mt bng, n bao gm tp cc ct. Kiu d liu l cc i tng dng xc nh loi ca d liu c th c lu trong ct. Cc loi d liu khc nhau l tinyInt, smallInt, int, real, float, smalldatetime, datetime, smallmoney, money, char v sql_variant. Ch mc l mt i tng ca CSDL, dng tng tc cc truy vn bng cch d tm d liu theo gi tr kha thay cho vic qut ton b bng. Trung Tm CNTT - Trng HCN Tp.HCM

Ch mc Index

Gio trnh SQL Server2000

Trang 10

SQL Server 2000 h tr cc ch mc clustered v non-clustered. Ch mc Clustered (Clustered indexe) l cc ch mc m sp xp cc dng theo cch dng B-Tree. By li Trigger Trigger c a chung bi vi nh lp trnh. Chng chnh l cc th tc m c th chy khi d liu trong bng c hiu chnh nh l cp nhp, xa, chn. Cc trigger thng c dng m bo tnh thng nht gia cc bng lin kt. Cc trigger c th c to trn bng hoc truy vn. Rule l i tng CSDL, n c gn kt vi mt ct hoc mt nh ngha ngi nhm hn ch cc gi tr. V d, mt rule c th m bo s chng minh nhn dn ch gm cc ch s. Th tc l mt tp cc cu lnh T-SQL c dch trc (pre-compile) v c thc thi nh mt i tng. Do chng c dch trc nn cc th tc s thc thi nhanh. View l mt cch nhn khc ca table. Dng hin th cc d liu trong mt hoc nhiu table. s dng c view, ngi dng phi c quyn trn view v tt c cc i tng ph thuc.

Quy tt - Rule

Th tc - Stored Procedures Khung nhn View

Cu trc vt l ca mt CSDL Mi CSDL bao gm t nht mt tp tin d liu (data file) v mt tp tin log (transaction log file). Cc tp tin ny khng c chia x vi cc CSDL khc. ti u hiu nng v h tr kh nng chu li (fault tolerance), tp tin d liu v log c tri di trn nhiu a v thng thng dng mt Raid (Redundant array of independent disks)

Hnh 2: Khung nhn ngi dng v trin khai vt l ca mt CSDL Nhn bn - Replication Nhn bn cho php nhiu th hin ca SQL Server v tr t xa c cng d liu. V tr t xa c th bao gm cc ngi dng di ng hoc cc site kt ni thng quan internet, dialup hay intranet. S phn chia vt l ca d liu ci thin hiu nng ca t chc khi d liu cn c x l ti cc ni khc trnh by site khc tham chiu. Bo mt trong SQL Server. SQL Server 2000 dng hai mc bo mt khi kim tra s hp l ca mt ngi dng. l chng thc (authentication) v authorization Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 11

Authentication kt ni n mt th hin ca SQL Server 2000 th ngi dng phi ch nh mt nh danh ng nhp hp l (ID). Mt ID ng nhp l mt ti khon nh danh iu khin s truy xut n mt th hin ca SQL Server 2000. SQL Server kim tra ID ng nhp c c php kt ni n th hin ca SQL Server hay khng. S kim tra ca mt ID ng nhp c gi l chng thc (authentication). SQL Server 2000 dng hai loi chng thc: Windows authentication v SQL Server authentication. Hai ch chng thc (Authentication Mode): Windows Authentication mode, mixed mode. Authorization Sau khi mt ID - ti khon ng nhp c chng thc, SQL Server 2000 xc nh ID c c y nhim thi hnh cc thao tc trong CSDL hay khng. Mt ID ng nhp t n khng a ra cc quyn (permission) truy xut n cc i tng trong mt CSDL. Mt ID phi c mt s y nhim hoc c quyn hp l. iu ny ngn chn mt ng nhp t ng truy xut n cc CSDL trong mt th hin ca SQL Server 2000. Chng ta s tm hiu bo mt trong SQL Server k hn trong bi bo mt. Gii thiu v Transact-Sql Transact_SQL l ngn ng dng ch yu trong SQL Server. C y tnh cht ca mt ngn ng lp trnh. SQL l mt chun do IBM ra v tt c ngn ng lp trnh b sung thm mt s tnh nng ring ca ngn ng lp trnh . i vi SQL Server th cc ng dng mun truyn thng vi SQL Server u phi cc cu lnh T-SQL n Server. Cu lnh T-SQL l tp hp cc on m m thc thi mt vi hnh ng ln cc i tng hoc d liu ca mt CSDL. SQL Server cung cp 3 loi cu lnh TSQL: DDL, DCL, v DML Ngn ng nh ngha d liu (Data Definition Language DDL): Dng nh ngha v qun l cc i tng v c tnh ca i tng mt CSDL. Lnh DDL h tr vic nh ngha, khai bo v chnh sa cc i tng ca CSDL nh Databases, Tables, Views. Mi lp cc i tng th DDL c cc lnh nh CREATE, ALTER, V DROP (V d CREATE TABLE, ALTER TABLE, va DROP TABLE). Ngn ng iu khin d liu (Data Control Language DCL): Dng hiu chnh cc quyn (Permission) trn cc i tng ca CSDL. Cc permission c iu khin bi lnh cc lnh GRANT (gn quyn), REVOVE (hu b quyn), DENY (t chi quyn) Ngn ng thao tc d liu (Data Manipulation Language DML): Cc lnh ny c dng truy vn (SELECT), chn (INSERT), cp nht (UPDATE), xa (DELETE) cc d liu ca cc i tng c to bi DDL. 1.4

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 12

BI 2: CI T SQL SERVER 2000


2.1 Lp k hoch ci t SQL SERVER 2000 Cc yu cu v phn cng Phn cng Intel hoc tng thch. My tnh Pentium 166 MHz hoc cao hn. Enterprise Edition: 64 MB; 128 MB hoc hn Standard Edition: 64 MB. B nh (RAM) Personal Edition: 64 MB i vi Windows 2000; 32 MB i vi cc h iu hnh khc. Developer Edition: 64 MB. Desktop Engine: 64 MB i vi Windows 2000; 32 MB i vi cc h iu hnh khc. Cc thnh phn CSDL SQL Server: 95 n 270 MB; 250 MB in hnh. Khng gian a Analysis Services: 50 MB; 130 MB in hnh. cng English Query: 80 MB. Desktop Engine only: 44 MB. VGA hoc phn gii cao hn. Mn hnh 800 x 600 hoc phn gii cao hn SQL Server. Thit b chut CD 2.2 Quyt nh nhng chn la cu hnh ci t SQL SERVER 2000 2.2.1 Xc nh ti khon ngi dng (User account) thch hp cho SQL Server Sevice v SQL Server Agent Service Mi dch v ca SQL Server 200 chy trong mt ng cnh bo mt ca mt user account. Bn c th chn hoc local system account hoc domain user account. Thng thng cc Sevice u chy chung mt user account. Local system account l mt account h thng ca Win NT hoc Win 2000 vi y cc quyn qun tr trn my tnh cc b. Tuy nhin, Account ny khng c Trung Tm CNTT - Trng HCN Tp.HCM Microsoft Mouse hoc tng thch. Yu cu ti thiu

Gio trnh SQL Server2000

Trang 13

quyn truy cp mng. Tuy nhin, trong mi trng Client/Server, bn nn to v dng mt domain user account c tnh chuyn bit dnh cho cc dch v. S la chn mt domain user account cho php nhng dch v ca SQL Server truyn thng vi nhng ci t SQL Server khc, ti nguyn mng (nh l chia s tp tin) trn nhng my tnh khc trong mi trng domain. Domain user account m bn chn phi c y cc quyn truy xut trn my tnh cc b, nhng khng cn phi l thnh vin ca nhm Administrator cc b hoc dommain administrator. Nhng quyn c ch nh ny phi bao gm quyn log on nh l mt dch v, quyn truy xut v thay i th mc SQL Server, quyn truy xut v thay i tp tin CSDL, c v ghi cc kha bt k no trong Registry ca Windows. Bn khng cn lo lng vic gn cc quyn ny, chng trnh ci t SQL Server 2000 s gn nhng quyn ny mt cch t ng cho domain user account m bn ch nh. 2.2.2 Chn mt ch xc thc (Authentication Mode) SQL server 2000 h tr 2 ch xc thc: Windows authentication Mode v Mixed mode. Mc nh l Authentication Mode. Ch Windows Authentication Mode ch cho php cc user ca h iu hnh mi c th kt ni vi SQL Server. Ch Mixed mode cho php tt c cc user ca h iu hnh hoc SQL server u c th kt ni n SQL Server. Nu bn ang trong giai on tm hiu v th nghim SQL Server th bn nn chn Mixed Mode. Nu bn trin khai ng dng th bn nn s dng Windows authentication mode, vi ch ny tnh bo mt c tng cao nh tch hp thm cc kh nng bo mt ca h iu hnh. 2.2.3 Xc nh Collation Collation l tp hp nhng qui tt qun l, n s nh hng n cch lu tr d liu, th t sp xp V d khi bn ci t h iu hnh, bn chn la ngn ng, bn phm c s dng. Mi ngn ng s c b k t khc nhau do c nhng code page khc nhau v da trn c s ny h iu hnh s ci t cc numbers, currencies, Times, Dates khc nhau. Khi bn ci t SQL Server, chng trnh ci t s xc nh mt collation mc nh cho SQL Server da trn cc ci t ca h iu hnh. 2.2.4 Chn Network Libraries SQL Server s dng Network libraries gi cc packet gia SQL Server khch v ch. Server v Client phi c t nht mt Network Libraries chung. Cc Network Libraries: NEBEUI, TCP/IP, IPX/SPX, Apple Talk ADSP, Banyan Vines, VIA giginet San. 2.2.5 Xc nh client Licensing Mode SQL Server cung cp 2 kiu client licensing: Per processor v Per seat. 2.3 Cc bc ci t SQL Server 2000.

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 14

Bn a i CD cha chng trnh ci t SQL Server hoc chy tp tin Setup t mt v tr no trn mng.

Hnh 3: Mn hnh u tin khi a a SQL Server Persional Edition vo Chn SQL Server 2000 Components

Hnh 4: Chn thnh phn cn ci t Chn Install Database Server Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 15

Hnh 5: Mn hnh Welcome ca MicroSoft SQL Server Chn Next

Hnh 6: Chn tn my tnh ni m s ci 1 instance mi hoc hiu chnh instance c sn Local Computer Remote Computer Virtual Server Chn Local Computer, chn Next : Ci trn my Local : Ci t t xa : Ci trn Server o

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 16

Hnh 7: Chn hnh thc ci t Create a new instance of SQL Server, or install client tools: Ci mt instance mi trn server hoc ci cc client tools Upgrade, remove, or add components to an existing instance of SQL Server: Nng cp, hy b, hoc thm cc component vo instance c sn. Advanced option: Mt s chc nng nng cao hoc to tp tin ci t khng tham d.

Chn Create a new instance of SQL Server, or install client tools, chn Next

Hnh 8: Thng tin ca ngi dng Chn Next

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 17

Hnh 9: Thng bo Lincense Chn next

Hnh 10: Xc nh cng c ci t Client Tools Only Server and Client Tools Connectivity Only : Ch ci t cc tools ca client : Ci t cc tools ca Server v Client : Ci t cc thnh phn truy xut d liu v cc th vin network

Chn Server and ClientTools

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 18

Hnh 11: Qui nh tn ca instance G vo Server01, chn Next

Hnh 12: Chn loi ci t Chn Typical, chn Next

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 19

Hnh 13: xc nh Serverice Account chy cc Service Chn Next

Hnh 14: Xc nh ch chng thc Windows Authentication Mode: ch xc thc ca Windows Mixed Mode: Ch xc thc va ca Windows v va ca SQL Server Chn Mixed Mode

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 20

Hnh 15: Thng bo l SQL Server s bt u c ci t Chn Next, tin trnh ci t bt u

Hnh 16: Kt thc ci t 2.4 To tp tin ci t khng tham d (unattended) v ci t t xa (Remote) SQL Server 2000 C 3 cch to ra tp tin khi u ci t dnh cho vic ci SQL Server 2000 khng tham d. Cch 1: Chng trnh Setup SQL Server 2000 cung cp la chn Advanced Option ghi nhn li tp tin khng tham d .ISS. Nu la chn ny c chn th qu trnh ci t s c ghi nhn li thnh tp tin .ISS trong th mc \Winnt, v SQL Server khng c ci t thc s trong tin trnh ny. Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 21

Cch 2: tp tin .ISS c cung cp trong a SQL Server 2000, trong th mc gc. Bn c th dng trc tip t cc tp tin ny hoc hiu chnh bng cc trnh son tho vn bn. Tp tin l SQLINS.ISS, SQLCLI.ISS; SQLCST.ISS Cch th 3: Tp tin .ISS c t ng to ra ngay sau khi mi ln bn ci t SQL Server, n nm trong \WinNt. Tuy nhin, nu dng tp tin ny th bn phi chnh sa n nng mt trnh son tho vn bn thm phn [SdFinish-0] 2.5 Kt qu ca vic ci t SQL SERVER 2000 Trnh ci t SQl server to ra mt lot cc th mc lu cc tp tin thi hnh v cu hnh khc nhau. Theo ngm nh, SQL Server c ci t trn a C: trong th mc MSSQL. Di th mc MSSQL l vi th mc khc: Backup BIN BINN CHARSETS DATA INSTALL LOG REPLDATA SNMP SQLOLE SYSBOLS Th mc vn cn trng ngay sau khi ci t. Th mc ny dng lu tr cc tp tin d phng. Cc th vin mng pha client Cc tp thi hnh v cc tp tin kt hp. K c cc tp tin thi hnh chnh ca SQL Server, v mi cng c iu hnh c np. Cc b k t sp xp cho cc kiu ci t khc nhau. V tr ngm nh cho cc CSDL. SQL Server Books Online v cc ch mc. Cc s theo di li SQL Server. Cc tp tin vn bn tng ng vi s theo di s kin Windows NT, nhng chi tit hn. V tr ngm nh cho d liu tm thi c dng trong khi sao lp. Cc MIB (Management Information Bases = c s thng tin qun tr) cho SQL Server. cc mu v cc dng OLE automation ca Visual Basic qun l SQL Server. G ri cc k hiu do cc lp trnh vin s dng.

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 22

BI 3: CC CNG C CA SQL SERVER


3.1 SQL ENTERPRISE MANAGER Enterprise Manager cn gi tt l EM, l mt cng c chnh dnh cho nh qun tr server v CSDL. Enterprise Manager cho php bn dng v khi ng mt Server, cng nh cho php bn thc hin cc tc v sau: ng k mt server. Cu hnh cc server cc b hoc t xa. Cu hnh v qun l mt ci t vi nhiu server (multiple-server). Ci t cc bo mt ng nhp (login security), thm cc ngi dng (user), cc nh qun tr h thng (system administrator), v cc iu hnh vin. Gn mt password nh qun tr h thng. To v lp biu cho cc cng vic (job). To cc cnh bo v cu hnh giao tip n nh qun tr h thng thng qua email. Ci t v qun tr cc CSDL, cc bng (table), cc ch mc (index), cc truy vn (view), cc th tc (stored procedure), cc qui tt (rule), cc by li (trigger), cc mc nh (default), cc thit b d phng (backup device), v cc vt li (error log). Qun l cc service khc.

Hnh 17: Ca s Enterprise Manager ca SQL Server 3.2 SQL SERVER SERVICES MANAGER SQL Server Manager l mt cng c cho php khi ng, tm dng hoc dng cc dch v (service) trong SQL Server. SQL Server hot ng c thng qua cc dch m n t cung cp.

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 23

3.2.1 Cc dch v ca SQL Server Mt dch v (service) l mt chng trnh hoc tin trnh thc thi mt chc nng c bit no nhm h tr cho cc chng trnh khc. SQL Server cung cp cc dch v sau: SQL Server Service, SQL Server Agent Service, MicroSoft Search Service v Microsoft Distributed Transaction Coordinator. Mi dch v c chc nng v nhim v ring, h tr cho cc hot ng ca SQL Server. Nu bn ci t mt hoc nhiu hn th hin (instance) ca SQL Server th tn ca service cho mi instance ca SQL Server l MSSQL$InstanceName, $InstanceName l mt tn ca instance m bn ch nh ln ci t. ng vi mi SQL Server Agent service cho mi instance c gi l SQLAGENT$InstanceName. Tuy nhin, nhiu instances ca SQL Server, s ch c mt Microsoft Distributed Transaction Coordinator v Microsoft Search. SQL SERVER SERVICE Khi bn khi ng SQL Server c ngha l dch v SQL Server service c khi ng Windows NT hoc Windows 2000. Dch v ny qun l cc tp tin CSDL, x l cc cu lnh T-SQL, nh v ti nguyn gia cc kt ni ca ngi dng hin hnh, m bo tnh nht qun d liu, v nhiu hn na. SQL SERVER AGENT SERVICES SQL Server Agent h tr vic lp biu v thc thi cc cng vic (job), cc cnh bo (alert), thng bo, v k hoch duy tr CSDL. Khng c service ny, cng vic qun tr ca bn s tr nn kh khn nhiu. SQL Server Agent cho php bn thc hin t ng cc thao tc nhm duy tr CSDL. V d: bn c th to mt job thc hin t ng d phng (backup) d liu mi m vo lc 1 gi sng v mt job khc thc hin d phng transaction log mi 30 pht mt ln. kim tra hiu nng h thng ca bn cnh bo hin trng hiu nng bo cho bn nu server CPU hot ng trn 90%. SQL Server Agent phi chy thc thi cc tc v kiu nh vy. Dch v ny c th c cu hnh khi chy mt cc t ng hoc chy mt cch th cng. Bn nn cu hnh cho n khi ng t ng m bo rng cc job, alerts, v notification s c th c thc thi. MICROSOFT DISTRIBUTED TRANSACTION COORDINATOR. Dng qun l cc giao tc phn tn.

MICROSOFT SEARCH. Dch v Microsoft Search cho php to mt ch mc full-text v c ch tm kim. Chun SQL-92 nh ngha cc kh nng tm kim vi php so snh k t bng, nh hn, ln hn mt hng s k t, gi tr k t c cha mu chui.

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 24

Dng dch v Microsoft Search cho php Microsoft SQL Server 2000 v SQL Server 7.0 c h tr nhiu tm kim tinh vi trn ct chui k t.

3.2.2 Khi ng, tm ngng, dng cc dch v ca SQL Server khi ng hay dng cc dch v SQL Server bng cch dng SQL Server Service Manager th thc hin cc bc sau: 1. Click chn Start Programs Microsoft SQL Server, v chn Service Manager hin th cng c SQL Service Manager nh hnh

Hnh 18: SQL Server Service Manager. 2. Tn server cc b xut hin trong mc Server v cc dch v ca SQL Server xut hin trong mc Service. Trong danh sch x xung, chn tn ca server v dch v m bn mun iu khin. Bn c th khi ng (start) v dng (stop) cc service ang c chn bng cch click vo ng tng ng. Nu Service trng thi dng th click vo Start/Continue chy tip. 3. Auto-start service when OS Server: cu hnh t ng chy dch v khi h iu hnh khi ng. Lu : Nu SQL Server v SQL Server Agent service khng c cu hnh chy t ng th bn phi khi ng n mt cch th cng 3.3 OSQL OSQL l mt du nhc tin ch dng truy vn mt instance ca SQL Server 2000 mt cch tng tc bng T-SQL, th tc h thng, tp tin lnh. N cng c dng xem xt cc cng vic hoc b lnh, k c cc lnh ca h iu hnh i vi SQL Server 2000. Bn c th dng osql bng cch kt ni vo server v Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 25

thc thi cc lnh trong ch tng tc hoc bng cch kt ni vo v thc thi cc lnh nh mt phn ca c php lnh osql. C php lnh ca osql nh sau:
Osql S servername U login_id P password Osql S servername E (1) (2)

Chng ta dng (1) khi bn kt ni n server bng mt ti khon ng nhp ca SQL server, dng (2) khi bn kt ni bng ti ch chng thc l Windows. Khi dng Osql kt ni n SQL Server 2000, c nhiu tham s m bn c th dng nh l mt phn ca chui kt ni. Nn nh rng, Osql phn bit ch thng, ch hoa. - S servername - U login_id - P password -E Ch nh tn ca Server ca SQL Server m bn mun kt ni. Ch nh tn ca ti khon ng nhp Ch nh password ca ti khon ng nhp nu c Kt ni bng ti khon ng nhp hin hnh ca windows Khi bn dng osql trong ch tng tc, n hin th th t cc dng. Chng ta g cc cu lnh SQL, mi cu lnh trn mi dng. Osql khng thc thi cu truy vn ca bn cho n khi bn g t kha GO trn mt dng. Khng lm vic bng osql, g EXIT tt kt ni v ng tin ch osql. V d:

Hnh 19: Minh ha tin ch osql 3.4 SQL QUERY ANALYZER 3.4.1 Gii thiu. SQL Query Analyzer l giao din ngi dng ha (Graphical User Interface GUI) dnh cho cc nh lp trnh. Query Analyzer cho php thc hin: To cc truy vn (query), b lnh (script) v thc thi (execute) chng tc ng n CSDL ca SQL Server.

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 26

To cc i tng ca CSDL mt cch nhanh chng t nhng script c nh ngha trc. Sao chp nhanh chng cc i tng ca CSDL To v thc thi cc th tc (Stored procedures), hm ngi dng (user-defined function) Tm li (Debug) cc th tc. Tm li (Debug) cc vn hiu nng ca ca truy vn (Show Execution Plan, Show Server Trace, Show Client Statistics, Index Tuning Wizard). nh v cc i tng trong cc CSDL, xem v lm vic vi cc i tng. Chn, cp nht, xa cc mu tin trong table mt cch nhanh chng. 3.4.2 Khi ng Query Analyzer SQL Query Analyzer c th c khi ng t SQL Server Enterprice Manager hoc t Start Menu hoc t ca s Command bng cch thc thi tin ch ISQLW. Khi bn khi ng SQL Query Analyzer, th hp thoi Connect to SQL Server xut hin. Khi bn phi xc nh ch chng thc c dng kt ni ti SQL Server.

Hnh 20: Hp thoi kt ni Bn c th m cng lc nhiu ca s Query Analyzer cho php bn lm vic trong cc CSDL khc nhau hoc thc thi cc script khc nhau trong cng mt thi im. Mi ca s to kt ni ring bit n server. Nhng kt ni duy tr cc ci t khc nhau v mi ca s c CSDL hin hnh. Nu bn c gng thc thi mt thao tc dnh ring trn mt CSDL t mt query analyzer trong khi mt query analyzer khc ang dng CSDL, thao tc s b li. 3.4.3 Thnh phn chnh ca Query Analyzer SQL Query Analyzer bao gm cc ca s, hp thoi, hng dn (wizard) gip chng ta thit k cc tc v (Task) cn thit to cc CSDL, lu tr, khai thc d liu trong cc CSDL . Ca s Query Analyzer Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 27

Thanh tiu (Title bar): Hin th tn ca Server, CSDL hin hnh, v ti khon kt ni ti. Cng c Database trn thanh cng c, cho bit v cho php bn thay i CSDL c kt ni hin hnh. Editor pane: dng a vo cc cu lnh v thc thi cc cu lnh T-SQL Mu ca m lnh trong Query Analyzer: Mu m Xanh l Xanh l m ti Xanh Xm ngha Chui k t Th tc Bng h thng Ch gii Hm h thng T kha Ton t

Mu ca m lnh bn c th bit l bn nhp cu lnh vo l ng hay sai. Bn c th i mu qui nh bng cc chn trang fonts trong hp thoi Tools Option. Results pane: hin th kt qu ca truy vn c thc thi. Mt hoc nhiu hn mt trang c hin th trong results pane. Trang Messages: Hin th thng bo v cc li gi tr t server. Trang Results: Hin th nhng kt qu nh vn bn t do. Trang Results Grid: Hin th cc kt qu trong bng k li. D liu trong li ch xem, khng th hiu chnh c. Mt vi truy vn yu cu server tr v nhiu hn mt tp kt qu th s c nhiu hn mt trang Results Grid s c hin th. Nu li kt qu trng sau khi thi hnh mt truy vn th truy vn khng c tr v mt bng kt qu Trang Execution Plan: Hin th mt biu ca k hoch thc thi ca truy vn hin hnh. Bt tt Execution Plan ta chn t thc n Query

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000 Hnh 21: Thnh phn chnh ca Query Analyzer. Lu :

Trang 28

Bn c th nhp vo chui cc cu lnh mi hoc m mt tp lnh c sn. Khi bn lm vic xong vi tp lnh bn c th lu n thnh mt tp tin dng dng li sau (tp tin c phn m rng l .SQL). Truy vn c th l mt cu lnh n hoc nhiu cu lnh. Nhng cu lnh c th khng th thc thi nh l mt phn ca cng mt truy vn vi nhng cu lnh khc. Trong trng hp ny c vit cch nhau bi t kha GO. Nhng cu lnh c th g trn cng mt hng hoc tri di qua nhiu hng. Do cu lnh T-SQL th qu di t trn mt dng, nn ta g chng trn nhiu dng, iu ny s lm cho chng ta d c cc cu lnh. Nu khng c lnh c chn th khi bn thi hnh truy vn th ton b ni dung ca query pane s c thc thi

3.4.4 Mt vi phm nng dng trong Query Analyzer Hnh ng Thc thi Tm kim Chuyn vn bn ang chn thnh ch hoa Chuyn vn bn ang chn thnh ch thng Cc kt qu dng vn bn Nhng kt qu trong li Gip v Query Analyzer Gip mt cu lnh T-SQL c chn Phm nng CTRL+E or F5 CTRL+F CTRL+SHIFT+U CTRL+SHIFT+L CTRL+T CTRL+D F1 SHIFT+F1

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 29

BI 4: LM VIC VI C S D LIU SQL SERVER


4.1 Thit k mt c s d liu. Thit k CSDL l mt bc v cng quan trng trong tin trnh pht trin ng dng. Trong qu trnh thit k, bn phi quyt nh nhng table no cn lu tr cc d liu ca bn. Qu trnh thit k mt CSDL logic c thc hin c lp vi cc h qun tr CSDL. Mt s lu khi thit k mt CSDL logic: Cc bng v tn ca chng (cn gi l cc thc th). Tn cc ct (cc thuc tnh) ca mi bng. Cc c tnh ca ct nh l gi tr duy nht, cho php null hay khng, v kiu ca d liu m ct s lu cha. Kha chnh (Primary key) cho mi bng. l mt ct hoc tp cc ct m cha cc gi tr c nh ngha khng trng lp cc dng trong bng. Mi bng ch c th c mt kha chnh. Mc d kha chnh l khng yu cu bt buc phi c nhng cc bng nn lun lun c. Cc mi quan h (Relationship) gia cc bng. Cc dng trong mt bng ph thuc mt hoc nhiu dng khc trong bng khc. Nhng ph thuc trong nhng bng ny c gi l mi quan h. nh ngha mi quan h, mt ct hoc tp cc ct trong mt bng c gi l kha ngoi (foreign key) nu n tham chiu n kha chnh ca bng khc. V d: mi dng trong mt bng n hng (DONHANG) ph thuc vo mt dng trong bng khch hng (KHACHHANG) bi v mi n hng phi c t bi mt khch hng. iu ny chnh l ni quan h gia bng DONHANG v bng KHACHHANG. Bng n hng phi c mt ct lu gi cc gi tr c tham chiu n mt dng ring l trong bng KHACHHANG. Cc dng trong bng HOADON phi c m bo ch tham chiu n mt khch hng v vy mi quan h nn da trn c s kha chnh ca bng KHACHHANG. Ct ca bng n hng m tham chiu n kha chnh ca bng khch hng c gi l kha ngoi. Cc kiu mi quan h: Ba kiu ca mi quan h c th gia cc bng: One-to-One. Mi dng trong bng chnh c quan h n ch mt dng trong bng quan h. Mt mi quan h one-to-one l c thc hin bi nh ngha kho ngoi l duy nht (khng trng). One-to-Many. Mi dng trong bng chnh c lin quan n mt hoc nhiu dng trong bng quan h. V d mt khch hng c th t nhiu n hng, nhng mt n hng khng th c t bi nhiu khch hng. Many-to-Many. Nhiu dng trong mt bng lin quan n nhiu dng trong bng khc. V d: mt tc gi c th vit nhiu quyn sch v mt quyn sch c th c vit bi nhiu hn mt tc gi. Mi quan h many-to-many gia 2 bng l thc hin bng cch to mt bng th ba v to mt mi quan h one-to-many n bng chc nng ny t mi bng ban u. Mt CSDL sau khi thit k c nh gi thng qua cc dng chun. CSDL t chun cao th CSDL lu tr y thng tin, khng b trng lp, c tnh nht qun cao. Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 30

Cc dng chun ca CSDL quan h Dng chun 1: Tt c cc thuc tnh u c nh ngha dng 1 gi tr n hoc khng dng repeating group. V d: Cc quan h sau khng t dng chun 1 OrderID 1111 1111 CustomID 101 103 OrderDate 1/1/02 1/2/02 Items 4 apples 5 bananas OrderTotal 1000 900

Khng t chun 1 v thuc tnh Items khng l gi tr n OrderId CustomId Items Quarter1 Items Quarter2 Items Quarter3

Khng t chun 1 v thuc tnh Items v Quarter c dng repeating group Dng chun 2: Tt c cc thuc tnh khng kha ph thuc y vo kha. ProductName SupplerName CompanyName SupplerPhoneNumber

Gi s ProductName khng trng, ProductName l kha. Vi phm chun 2 v SupplerPhoneNumber ch ph thuc vo SupplerName m khng ph thuc vo ProductName (kha) Dng chun 3: Tt c thuc tnh khng kha ph thuc y v khng ph thuc bt cu vo kha. CompanyName Address City Region Postcode

Gi s CompanyName l khng trng Vi phm chun 3 v t City v Region th ta s bit c Postcode, nh vy PostCode ph thuc vo City v Region. Trong CompanyName l mt kha d tuyn (Candidate) Lu : Mt ct (field) c gi tr lp i lp li mt gi tr th gi tr gi l d liu d tha. Cc gi tr ny ngi s dng c th g sai chnh t khi nn suy ngh quyt nh c nn ny sinh thm 1 table hay khng. Hoc trong tng lai c th ny sinh ra cc gi tr mi ca field th vic pht sinh Table l u vit. Khi xy dng d liu ca kha chnh, c 2 trng phi: kha c ng ngha v kha khng c ng ngha. gii quyt cc li pht sinh khi dng gi tr kho c ng ngha, cc chuyn gia khuyn l ng ngha ca kho ch dng tham kho v khng nn dng n khi vit cc ng dng.

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000 4.2

Trang 31

C s d liu ca SQL SERVER 2000 Mt CSDL ca SQL Server l tp hp cc bng (Table) dng cha cc d liu v nhng i tng khc, chng hn Views, indexes, store procedures, v triggers Chng c n nh h tr cc hot ng c thc hin vi d liu. D liu c cha trong mt CSDL thng lin quan n mt ch hay tin trnh c bit. SQL Server c th h tr nhiu CSDL. Mi mt CSDL c th lin quan hay khng lin quan n cc CSDL khc. V d mt SQL Server c th c CSDL cha d liu v nhn s, v mt CSDL khc cha cc n hng. Khi bn to mt CSDL, bn phi xy dng cu trc lu tr d liu. Cc trc ny bao gm t nht mt tp tin d liu (data file) v mt tp tin vt giao tc (transaction log file). Bn nn hiu cch thc Microsoft SQL Server 2000 lu tr d liu, cng nh chc nng ca transaction log trc khi bn lm vic vi CSDL ca SQL Server. Cch d liu c lu tr trong CSDL ca SQL Server:

Hnh 22: Cch lu tr d liu Cc tp tin CSDL SQL Server Mt CSDL c lu cha trong cc tp tin vt l trn a cng, mt CSDL tri di trn t nht l hai tp tin. Mt vi tp tin d liu (data file), v mt tp tin vt (transaction log file). Nhng tp tin ny c ch nh khi CSDL c to hay hiu chnh. SQL Server 2000 cho php ba loi tp tin CSDL: Primary data files: mt CSDL c mt primary data file dng ghi nhn li tt c nhng tp tin khc trong CSDL, v lu tr d liu. Theo ngm nh, tn ca primary data file c phn m rng l .MDF. Secondary data files: mt CSDL c th khng c hoc c nhiu secondary data files, dng lu cc i tng ca CSDL. Theo ngm nh, tn ca secondary data file c phn m rng l .NDF.

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 32

Log files: mt CSDL c t nht mt log file dng cha nhng thng tin cn thit cho vic phc hi tt c nhng giao tc (transaction) trong CSDL. Theo ngm nh, log file c phn m rng l .LDF. Mi tp tin CSDL c nm thuc tnh: tn tp tin logic, mt tn tp tin vt l, mt kch thuc (size) ban u, mt kch thc ti a (maximum size), v gia s tng kch thc (growth increment). Cc thuc tnh ca mi tp tin, theo cng vi nhng thng tin khc c ghi ch trong bng h thng sysfiles, mt dng ng vi mi tp tin uc dng trong mt CSDL. Nhm tp tin (Filegroups) Cc Filegroup cho php bn kt nhm cc tp tin nhm mc ch qun tr v sp xp d liu. Cc Filegroup c th ci thin hiu nng CSDL bng cch cho php mt CSDL c to ngang qua nhiu a hoc h thng RAID. Bn c th to cc bng v cc ch mc trn a c ch r bng cch dng filegroup. C 3 dng filegroup. Primary filegroup bao gm primary data file v tt c nhng tp tin khc khng t trong nhng filegroup khc. Cc bng h thng (System table) Dng nh ngha cc ngi dng (user), cc i tng (object), v cc quyn (permission) i vi mt CSDL l c t trong primary filegroup ca CSDL . SQL Server t ng to cc bng h thng ca tng CSDL khi chng ta to CSDL. User-defined filegroups l bt k cc filegroup xc nh mc nh bi ngi dng trong sut tin trnh to hoc hiu chnh CSDL. Mt bng hoc mt ch mc c th c to v t trong mt user-defined filegroup ch nh. Default filegroup: Cha tt c i tng cc trang (page) ca cc bng v cc ch mc m khng c ch nh filegroup khi chng c to ra. Theo mc nhin, Default filegroup l primary filegroup. Cc thnh vin ca role db_owner database c th chuyn i trng thi default t mt filegroup ny cho filegroup khc. Ti mt thi im ch c th c mt default filegroup. Nu default filegroup khng c ch nh th primary filegroup l default filegroup mt cc t ng. Lnh hiu chnh CSDL (ALTER DATABASE) c dng thay i default filegroup.
ALTER DATABASE database_name MODIFY FILEGROUP filegroup_name DEFAULT

Cch cp pht khong khng lu tr D liu c lu tr trong cc khi 8Kb lin nhau ca khng gian ca a c gi l trang (page). C ngha l mt CSDL c th lu tr 128 page mi megabyte (MB). Cc dng khng th tri di trn cc page v phi nm gn trong 1 page. Tng s ln nht ca d liu trong mt dng n l 8060 bytes (8192, tr overhead). Tng s khong khng ln nht m c th s dng bi cc dng trn mt trang l 8094 bytes. Cc bng, cc ch mc, c lu tr trong cc extent. Mt extent c 8 page k nhau, hoc 64 KB. V vy, mt CSDL c 16 extent mi megabyte. C th c n 8 i tng nh c th chia s trong mt extent (Mixed Extent). Khi mt bng tng ln 8 page, n dng extent ng dng (Uniform extent). SQL Server dng 2 kiu th nh v (allocation map) ghi nhn li nh v ca cc extent: Global Allocation Map (GAM) Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 33

Cc trang GAM ghi nhn cc extent c cp pht. Mi mt GAM kim sot 64000 extent, hoc gn 4 GB d liu. GAM c mt bit ng vi mi extent trong vng m c kim sot. Nu bit mang gi tr l 1 th extent l trng; nu bit mang gi tr 0 th extent c cp pht. Shared Global Allocation Map (SGAM) Cc trang SGAM ghi nhn cc extent c s dng nh l cc mixed extent v c t nht mt trang cha dng. Mi SGAM kim sot 64000 extent, hay gn 4 GB d liu. SGAM c mt bit ng vi extent trong vng m n kim sot. Nu bit mang gi tr 1 th extent c ang s dng nh l mt mixed extent v hin c trang trng (free page); nu mang gi tr 0, th extent c dng nh l mixed extent hay n l mt mixed extent m tt c cc trang u c dng. Mi extent c mt gi tr bit t trong GAM v SGAM da trn c s c ang c dng: S dng hin thi ca extent Trng, cha c dng Uniform extent, hoc mixed extent y Mixed extent vi cc free page Bit GAM 1 0 0 Bit SGAM 0 0 1

Cc extent c qun l vi mt thut ton n gin. nh mt extent ng dng, SQL Server tm trn GAM mt bit 1 v t n thnh bit 0. tm mt mixed extent vi nhng free page, SQL Server tm trn SGAM mt bit 1. nh mt mixed extent, SQL Server tm trn GAM mt bt 1, t n thnh 0, v t vo bit tng ng trn SGAM gi tr 1. Mt extent trng, SQL Server m bo bt trn GAM mang gi tr 1 v trn SGAM mang gi tr 0 Transaction Log lm vic nh th no? Transaction log ghi nhn s hiu chnh d liu cc cu lnh INSERT, UPDATE, v DELETE khi chng c thi hnh. Tin trnh ghi vt ghi nhn li: Mt s thay i d liu c gi t ng dng. Khi mt s thay i c thc hin th cc trang d liu nh hng c ti ln t tp tin d liu trong b nh (gi l data cache), nu cc trang khng sn sng trong data cache t truy vn trc . Mi cu lnh hiu chnh d liu th lun lun c ghi trong log nh n c to. Thay i th lun lun ghi nhn li thnh vt v c ghi vo tp tin log (log file) trc khi thay i c tc ng trong CSDL. Kiu ca log ny gi l writeahead log. Khi cc trang d liu hin nm trong data cache, v nhng trang log c ghi nhn li trn a trong mt tp tin transaction log th tin trnh checkpoint ghi tt c cc transaction hon tt (committed transaction) vo CSDL trn a. Mt transaction n c th c nhiu hiu chnh d liu. Mi transaction bt u vi mt lnh BEGIN TRANSACTION. Nu ng dng hon tt tt c s hiu chnh d liu mt

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 34

cch thnh cng th transaction kt thc vi lnh COMMIT TRANSACTION (nh l mt transaction c ni l transactin hon tt- committed transaction). Trong sut qu trnh hot ng, tin trnh checkpoint u n thng xuyn kim tra cc transaction hon tt m s hiu chnh d liu cha c ghi vo tp tin d liu. Tin trnh checkpoint ghi nhng hiu chnh ny vo tp tin d liu v checkpoint cc transaction cho bit rng n c vit vo tp tin d liu cha. Nu h thng b hng hc, tin trnh phc hi (recovery process) t ng chy khi SQL Server c khi ng li. Tin trnh ny s dng transaction log quay ngc li n cc transaction hon tt m cha tng c "checkpointed" v xo b n (roll back) cc transaction cha hon tt. C ch t ng ghi nhn vt trong SQL Server l khng l mt la chn (option) (c ngha l bn khng th tt n i), tt c cc hiu chnh d liu u phi i qua transaction log (C 2 phng php ti mt lng d liu ln m c th c thc hin m khng dng transaction log, l chng trnh bulk copy v lnh SELECT INTO). D liu vrt quan trng nn transaction log khng bao gi y (full) bi iu ny s ngn chn hiu chnh d liu trong CSDL. To, hiu chnh c s d liu SQL SERVER 4.3.1 Gii thiu to mt CSDL, trc ht bn phi nh ngha mt tn cho CSDL, kch c ca n, v cc tp tin primary data file, secondary data file v file group dng lu tr n. Bn nn xem xt vi nhn t sau trc khi bn to CSDL: Quyn to mt CSDL mc nhin phi l thnh vin ca sysadmin v DBCreator fixed server role, mc d quyn ny c th gn cho bt k user no. User - ngi to ra CSDL tr thnh ch (owner) ca CSDL. C th c ti a 32767 CSDL c th to trong mt server. Tn ca CSDL phi t theo qui tt nh danh. Khi to CSDL bn nn ch nh dung lng ln nht c th c ca mt CSDL, iu ny s ngn chn s gia tng khng kim sot kch thc ca CSDL. SQL Server to CSDL thng qua 2 bc: - SQL Server s dng mt bn sao ca CSDL Model khi to CSDL mi v bin i n. - Sau SQL Server nhi y phn cn li ca CSDL bi cc trang trng. Cc phng php to, hiu chnh mt CSDL ca SQL Server. Cch 1: dng SQL Enterprise Manager Cch 2: dng Create Database Wizard. Cch 3: dng cu lnh CREATE DATABASE. 4.3.2 To c s d liu To bng Database Wizard ( ti ca s Enterprise Manager) 1. M rng server group, sau ni rng server ni m s to CSDL. 2. Chn thc n Tools Wizards. Trung Tm CNTT - Trng HCN Tp.HCM 4.3

Gio trnh SQL Server2000 3. M rng Database. 4. Nhp phi chut ti Create Database Wizard. 5. Hon tt cc bc trong Wizard. To bng Enterprise Manager ( ti ca s Enterprise Manager)
1. M rng server group, sau ni rng server ni m s to CSDL. 2. Nhp nt phi chut ti nt Database, chn New DataBase. 3. Khai bo cc thng tin cn thit, sau chn OK:

Trang 35

Trang General + Name: <Tn logic ca CSDL> Trang Data Files + Location : <Tn ca tp tin Datafile, v tr lu tp tin trn a> + Initial size: <Kch c khi to CSDL> + File Group : <Tn ca File Group> + File properties: Khai bo mt s thuc tnh khc nh t l gia tng (File Growth), kch c ti a (maximun size) Trang Transaction log: Tng t nh trang Data files nhng khai bo cho tp tin log.

Hnh 23: Hp thoi xem thuc tnh ca SQL Server Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000 To bng cu lnh Create Database (g lnh trong ca s Query Analyzer). C php
CREATE DATABASE database_name [ ON [ < filespec > [,...n ] ] [, < filegroup > [,...n ] ] ] [ LOG ON { < filespec > [,...n ] } ] [ COLLATE collation_name ] [ FOR LOAD | FOR ATTACH ] < filespec > ::= [ PRIMARY ] ([ NAME = logical_file_name, ] FILENAME = 'os_file_name' [, SIZE = size ] [, MAXSIZE = { max_size | UNLIMITED } ] [, FILEGROWTH = growth_increment ]) [,...n ] < filegroup > ::= FILEGROUP filegroup_name < filespec > [,...n ]

Trang 36

Thc hin: (1) G lnh trong ca s Query Analyzer (2) Gi thc thi cu lnh V d: To CSDL c tn l SalesDB, tp tin d liu tn l SalesDB_dat.mdf t trong C:\Data, kch c khi to l 10MB, kch thc ti a l 50MB, t l gia tng l 5MB, v tp tin vt tn l SalesDB_log.ldf t trong C:\Data, kch thc khi to l 5MB, kch thc ti a l 25MB, t l gia tng l 10%. CREATE DATABASE SalesDb ON (NAME = SalesDb_dat, FILENAME = 'c:\data\salesDB_dat.mdf', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5) LOG ON (NAME = 'SalesDb_log', FILENAME = 'c:\data\salesDB_log.ldf', SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 10%) GO Lu : Th mc Data phi hin hu trong C:\ Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000 -

Trang 37

Sao khi g cu lnh, nh du chn khi lnh v nhn F5 thc thi.

4.3.3 Thao tc trn c s d liu ca SQL Server Khi lm vic vi CSDL, bn c th thc hin trc tip trong ca s Enterprise Manager hoc dng cc cu lnh T-SQL trong c s Query Analyzer. 4.3.3.1 Kim tra s tn ti ca c s d liu Cch 1: Ti ca s EM, kim tra s tn ti ca CSDL trong nhnh DataBase. Cch 2: Ti ca s QA, thc hin cu lnh Sp_helpdb <Tn CSDL> V d: Sp_helpDB SalesDB 4.3.3.2 Xem, thay i thuc tnh ca c s d liu. Cch 1: Dng Enterprise Manager M nt DataBase, R_Click ti tn CSDL cn xem hoc hiu chnh Chn Properties Thay i tu Cch 2: Dng T_SQL C php
ALTER DATABASE database { ADD FILE < filespec > [,...n ] [ TO FILEGROUP filegroup_name ] | ADD LOG FILE < filespec > [,...n ] | REMOVE FILE logical_file_name | ADD FILEGROUP filegroup_name | REMOVE FILEGROUP filegroup_name | MODIFY FILE < filespec > | MODIFY NAME = new_dbname | MODIFY FILEGROUP filegroup_name {filegroup_property | NAME = new_filegroup_name } | SET < optionspec > [,...n ] [ WITH < termination > ] | COLLATE < collation_name > } < filespec > ::= (NAME = logical_file_name [, NEWNAME = new_logical_name ] [, FILENAME = 'os_file_name' ] [, SIZE = size ] [, MAXSIZE = { max_size | UNLIMITED } ] [, FILEGROWTH = growth_increment ])

V d 1: Chnh sa kch c ca tp tin log file ca SalesDb thnh 10MB ALTER DATABASE SalesDb MODIFY FILE (NAME='salesdb_log', size=10MB)

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000 V d 2: B sung thm mt tp tin d liu SalesDB_data2 ALTER DATABASE SalesDB ADD FILE (NAME=SalesDB_data2, FILENAME='C:\data\SalesDb2.mdf',SIZE=10 MB, MAXSIZE=20MB) 4.3.3.3 Xa c s d liu. Cch 1: Dng Enterprise Manager Nhn nt phi chut ti tn CSDL, chn Delete Cch 2: Dng cu lnh T-SQL
DROP DATABASE database_name [,...n ]

Trang 38

V d:

DROP DATABASE SalesDB

4.3.3.4 i tn c s d liu. Dng hm sp_renamedb theo c php sau sp_renamedb [ @dbname = ] 'old_name', [ @newname = ] 'new_name' 4.3.3.5 To mt script cho CSDL v cc i tng ca CSDL. i khi, bn cn sao chp cu trc ca CSDL hoc cu trc cc i tng ca CSDL, th bn s thc hin to script cho chng. Khi c script bn s m v thc thi on script ti ca s Query Analyzer ti to li cc i tng. Cc bc thc hin: M rng mt server group; m rng mt server. M rng nhnh DataBase, nhp phi ti CSDL mun to script, tr n All Tasks, nhp General SQL SQL Script Khai bo cc la chn thch hp. + Trang General: chn i tng cn to csript. + Trang Formating: chn cc ty chn ng dng script. Generate the CREATE <object> command for each object: To script theo cch s dng nh ngha ang c ca n. La chn ny c chn theo mc nh. Generate the DROP <object> command for each object: B sung vo script cho mi i tng cu lnh drop khi to script. La chn ny c chn theo mc nh. General scripts for all dependent objects: T ng to cc script cho cc i tng c lin quan vi i tng ang to script. Include descriptive headers in the script files: Thm li ch thch c b sung vo tp tin script cho mi i tng to script. Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 39

+ Trang options: hy chn cc ty chn security-related, table-related, v script file-related Trn trang General, nhp PreView xem trc ni dung ca script c to ra.

Hnh 24: Trang General ca hp thoi pht sinh script cc i tng ca CSDL

Hnh 25: Trang Formating ca hp thoi pht sinh script cc i tng ca CSDL Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 40

Hnh 26: Trang Option ca hp thoi pht sinh script cc i tng ca CSDL S dng Script va to: - Chuyn n v tr mi cn ti to li CSDL/ cc i tng CSDL. - Vo ca s Query Analazer, m tp tin Script. - Hiu chnh cc v tr vt l nu cn. - Cho thc thi on Script - Kim tra kt qu.

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 41

BI 5: KIU D LIU LM VIC VI BNG


5.1 Kiu d liu (data type) Kiu d liu l mt c tnh ca mt ct (Column). N nh r loi d liu v dng d liu c nhp vo ct. C 2 nhm: System-Supplied datatype: Cc kiu d liu c bn c h tr bi SQL Server. User-defined datatype: Cc kiu d liu ca ngi dng t nh ngha da trn cc kiu d liu c bn. 5.1.1 System-Supplied Datatype. System-Supplied Datatype l kiu d liu c bn c h tr bi SQL Server. Cc i tng lu cha d liu u c mt kiu d liu lu, cc i tng c th l - Cc ct (Column) trong cc bng. - Cc tham s (parameters) trong strored procedures. - Cc bin (Variables) trong stored procedure, function, script, batch. - Cc hm T_SQL tr v mt hoc nhiu gi tr thuc mt kiu d liu no . Ta c th dng cc kiu d liu to cc rng buc ton vn d liu. V d ct TENNV th khng th c nh ngha vi kiu d liu l Date, v ct Date ch chp nhn gi tr ngy. Khi ta gn kiu d liu cho mt i tng no th ta cn quan tm n cc tnh cht sau: - Loi d liu c cha ng bi i tng. - Chiu di lu tr gi tr hoc l kch c ca n. - Tnh ng ca s (i vi cc kiu s). Cc kiu d liu c bn:
Loi Binary Kiu d liu c s Binary Varbinary Image Character Char Varchar Text Date Time and Datetime Smalldatetime Decimal Foating point Integer Decimal Numeric Float Real Bigint 8 KB 8 KB 2^31 -1 bytes 255 bytes 255 bytes 2147483647 bytes 8 bytes 4 bytes 17 bytes 17 bytes 8 bytes 4 bytes 8 bytes Kch c Vng gi tr 09, a..f, A..F 09, a..f, A..F 2^31 1 bytes 1..8000 k t 1..8000 k t 2^31-1 k t (2147483647) 01/01/1753->31/12/9999 1/1/1900 -> 6/6/2079 -10^38-1 -> 10^38-1 -10^38-1 -> 10^38-1 -1.79E+308 -> 1.79E+308 -3.40E+38 ->3.40E+38 -2^63 -> 2^63 M t Cha cc bit thng tin D liu hnh nh K t hoc chui K t hoc chui K t hoc chui Chui biu din ngy gi Chui biu din ngy gi S thc S thc S thc S thc S nguyn

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000


Int Smallint Tinyint Monetary Special Money Smalmoney Bit 4 bytes 2 bytes 1 bytes 8 bytes 4 bytes 1 bytes -2^31 -> 2^31-1 -2^15 -> 2^15-1 0..255 -2^63 -> 2^63-1 -214748.3648 -> 214748.3648 0 hoc 1

Trang 42
S nguyn S nguyn S nguyn D liu tin t D liu tin t D liu c mt trong hai trng thi 0 hoc 1

Cursor Timestamp

Kiu DL cho bin hoc gi tr tr v ca procedure, tham chiu n 1 mu tin 8 bytes Chui c dng: 0x000000100000a90 S thp lc phn Theo di mu tin no b thay i d liu

Uniqueidentifier SQL_variant Table Unicode Nchar Nvarchar Ntext

16 bytes

L kiu d liu c th cha bt k loi d ty ca SQL Server ngoi tr text, ntext, image, and the timestamp data type 4000 k t 4000 k t 2^30-1 k t K t hoc chui K t hoc chui K t hoc chui

5.1.2 User-defined datatype. Ngi s dng c th da yu cu cn lu tr v cc kiu d liu c bn nh ngha ra mt kiu d liu ca ngi dng dng lu tr mt d liu c bit no . SQL Sever cho php bn ci tin cc kiu d liu m bo tnh nht qun khi lm vic trong mi trng d liu a dng trong cc bng hay cc CSDL khc nhau. User-defined data type khng cho php bn nh ngha cc kiu d liu phc hoc c cu trc. Mi mt User-defined data type c th c nh ngha ring cho mt CSDL hoc cho ton b cc CSDL. Nu User-defined data type c nh ngha trong CSDL Master th n c dng chung cho ton b cc CSDL. Cc User-defined data type m bn to trong CSDL model th s c trong tt c cc CSDL mi to mt cch t ng. Mi user-defined data type c lu thnh mt mu tin trong bng systypes. Bn c th to v xa user-defined data type bng cc th tc h thng. Tn ca kiu d liu phi tun th qui tt nh danh v phi l duy nht trong mi CSDL. nh ngha mi user-defined data type trong gii hn ca cc kiu d liu c bn. Phi ch nh mc nh l chp nhn gi tr NULL hay NOT NULL khi i tng khng c gi tr. To mt User-Defined Data Type Dng th tc h thng sp_addtype to mt user-defined data type.
sp_addtype type, system_data_type [,'NULL' | 'NOT NULL']

V d 1: To kiu d liu tn l isbn vi kiu d liu c bn l smallint v khng chp nhn gi tr Null Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000 EXEC sp_addtype isbn, smallint, NOT NULL

Trang 43

V d 2: To kiu d liu tn l zipcode vi kiu d liu c bn l char, di ti a l 10 v chp nhn gi tr Null EXEC sp_addtype zipcode, 'char(10)', NULL V d 3: To kiu d liu tn l longstring vi kiu d liu c bn l varchar, di ti a l 63 v chp nhn gi tr Null EXEC sp_addtype longstring, 'varchar(63)', NULL Xo mt User-Defined Data Type: dng th tc h thng sp_droptype xa mt user-defined data type t bng systypes. Mt user-defined data type khng th xa c nu n c tham chiu bi cc bng v nhng i tng khc.
Sp_droptype type

V d: EXEC sp_droptype isbn Xem cc user-defined data types trong CSDL hin hnh: dng th tc sp_help hoc truy vn trong information_schema.domains V d: Use SalesDB Sp_help hoc SELECT domain_name, data_type, character_maximum_length FROM information_schema.domains ORDER BY domain_name 5.2 Lm vic vi bng ca SQL Server Bng l mt i tng ca CSDL v l ni cha ng cc d liu v mt thc th no v d Khch hng, n t hng, tn kho, Mt bng l mt tp hp cc ct (Column). Mi mt ct i din cho mt thuc tnh ca d liu trong bng. Khi bn to mt table, bn phi ch nh r tn ca bng, tn ct, kiu d liu ca ct. Tn ct phi duy nht trong mt bng, c th dng tn trng nhau cc bng khc nhau trong cng mt CSDL. Phi ch r mt kiu d liu cho mi ct v nhng la chn khc nu cn. Bn c th to: Ti a 2 t table cho mi CSDL. Ti a 1024 ct trong mi bng. 8060 bytes mi dng (kiu image v text dng 16 bytes mi dng) Hai cch c bn lm vic trn bng: Enterprise Manager (t nghin cu), cu lnh TSQL. 5.2.1 To mt bng mi C php lnh
CREATE TABLE [ database_name.[ owner ] . | owner. ] table_name ({ < column_definition >

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000


| column_name AS computed_column_expression | < table_constraint > ::= [ CONSTRAINT constraint_name ] } | [ { PRIMARY KEY | UNIQUE } [,...n ] ) [ ON { filegroup | DEFAULT } ] [ TEXTIMAGE_ON { filegroup | DEFAULT } ] < column_definition > ::= { column_name data_type } [ COLLATE < collation_name > ] [ [ DEFAULT constant_expression ] | [ IDENTITY [ (seed, increment) [ NOT FOR REPLICATION ] ] ] ] [ ROWGUIDCOL] [ < column_constraint > ] [ ...n ] < column_constraint > ::= [ CONSTRAINT constraint_name ] { [ NULL | NOT NULL ] | [ { PRIMARY KEY | UNIQUE } [ CLUSTERED | NONCLUSTERED ] [ WITH FILLFACTOR = fillfactor ] [ON {filegroup | DEFAULT} ] ] ] | [ [ FOREIGN KEY ] REFERENCES ref_table [ (ref_column) ] [ ON DELETE { CASCADE | NO ACTION } ] [ ON UPDATE { CASCADE | NO ACTION } ] [ NOT FOR REPLICATION ] ] | CHECK [ NOT FOR REPLICATION ] (logical_expression) } < table_constraint > ::= [ CONSTRAINT constraint_name ] { [ { PRIMARY KEY | UNIQUE } [ CLUSTERED | NONCLUSTERED ] { (column [ ASC | DESC ] [,...n ]) } [ WITH FILLFACTOR = fillfactor ] [ ON { filegroup | DEFAULT } ] ] | FOREIGN KEY [ (column [,...n ]) ] REFERENCES ref_table [ (ref_column [,...n ]) ] [ ON DELETE { CASCADE | NO ACTION } ] [ ON UPDATE { CASCADE | NO ACTION } ] [ NOT FOR REPLICATION ] | CHECK [ NOT FOR REPLICATION ] (search_conditions) }

Trang 44

V d 1: USE SalesDb GO CREATE TABLE Employees Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000 (

Trang 45

EmployeeID SMALLINT IDENTITY(1,1) NOT NULL, FirstName NVARCHAR(30) NOT NULL, LastName NVARCHAR(30) NOT NULL, Address1 NVARCHAR(60) NOT NULL, City NVARCHAR(15) NOT NULL, State CHAR(2) NOT NULL, Phone VARCHAR(24) NOT NULL, DOB DATETIME NOT NULL, HireDate DATETIME NOT NULL, PositionID TINYINT NOT NULL ) 5.2.2 Hiu chnh bng Thao tc c bn hiu chnh bng gm thm ct, xa ct, thay i thuc tnh ca ct. thc hin ta s dng cu lnh ALTER TABLE1. Thm cc ct
ALTER TABLE <TableName> ADD <Column Definition>[,n]

V d: Thm ct Address vo bng Employees ALTER TABLE Employees ADD Address2 NVARCHAR(6) NOT NULL DEFAULT 'N/A' Lu : Nu bng c sn d liu v ct thm vo c nh ngha l NOT NULL th ta phi in d liu ca cc dng ct mi thm vo l mt gi tr mc nh no trnh gi tr Null. Xa cc ct
ALTER TABLE <TableName> DROP COLUMN <Column name>[,n]

V d: ALTER TABLE Employees DROP COLUMN Address2 Lu : Lnh trn s khng thc hin c v khi to ct Address2 ta khai bo gi tr mc nh nn SQL Server to ra mt tng Defaul Constraint. Do , mun xa ct th phi xa tt c cc i tng lin quan n ct cn xa ri mi xa ct . V d: ALTER TABLE Employees DROP CONSTRAINT DF_Employees_Addre_1372D2FE ALTER TABLE Employees DROP COLUMN Address2
1

Bn tham kho c php lnh y trong Books-Online

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 46

Lu : DF_Employees_Addre_1372D2FE l tn ca Defaul Constraint do SQL Server t t. Thay i kiu d liu cho ct


ALTER TABLE <TableName> ALTER COLUMN <Column Name NewDatatype>

V d: ALTER TABLE Employees ALTER Address NVARCHAR(20) Xo ton b d liu trong Table
TRUNCATE TABLE <Name Table>

V d: TRUNCATE TABLE Employees Lu : Nu bng mun xa l mt bng con (child table) th bn c th xa d liu ca n bt k lc no bn thch, nhng nu n l mt bng cha (Parent Table) th bn phi xa d liu bng con trc, k tip xa kho ngoi (Foreign key constraint) gia 2 bng, cui cng mi xa d liu bng cha. 5.2.3 Xa bng khi c s d liu. Xa mt bng l g b nh ngha bng v tt c d liu, cng nh cc quyn (permission) nh cho bng . Trc khi xa mt bng, bn phi g b tt c cc ph thuc gia bng v nhng i tng khc.
DROP TABLE <Name Table>

V d: DROP TABLE Employees Bng tm (Temporary Tables). Bn cng c th to cc bng tm. Cc bng tm tng t nh cc bng bnh thng, ngoi tr vic cc bng tm thi c cha trong CSDL TempDb v c xa mt cch t ng khi khng cn s dng na. C hai loi bng tm: bng tm cc b (Local) v bng tm tng th (global). Chng khc nhau v tn, tnh hin th, v tnh c sn. Bng tm c b: bng tm cc b c mt du # l k t u tin trong tn ca chng; chng ch hin th i vi ni kt hin hnh dnh cho ngi s dng, v chng c xa khi ngi dng ngt ni kt vi cc th hin ca SQL Server. V d: To bng tm tn l #MyLocalTempTable CREATE TABLE #MyLocalTempTable ( ID INT PRIMARY KEY, ColA VARCHAR(30) NULL, ColB VARCHAR(30) NULL, ColC VARCHAR(30) NULL ) Trung Tm CNTT - Trng HCN Tp.HCM 5.3

Gio trnh SQL Server2000

Trang 47

Nu mt bng tm c to trong tin trnh ca mt th tc th bng tm s b xa khi th tc hon tt. Trong trng hp mt tin trnh A gi th tc B m B c to mt bng tm th ch c B mi dng c bng tm cn tin trnh A khng nhn thy bng tm . Trong trng hp th tc B c gi cng mt lc bi nhiu tin trnh khc nhau th n s c nhiu bng tm ging nhau khi SQL Server s gii php gii quyt bng cch thm mt hu t (suffix) vo tn ca cc bng tm cng tn sao cho cc bng ny c tn l khc nhau (tn ca bng tm ti a l 116 k t) Bng tm ton cc: Cc bng tm ton cc th c 2 du ## l k t u tin trong tn ca chng; chng hin th i vi bt k ngi s dng no sau khi chng c to; v chng c xa khi tt c nhng ngi s dng ang tham chiu table ngt kt ni vi SQL Server. V d: CREATE TABLE ##MyGlocalTempTable ( ID INT PRIMARY KEY, ColA VARCHAR(30) NULL, ColB VARCHAR(30) NULL, ColC VARCHAR(30) NULL )

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 48

BI 6: TON VN D LIU
6.1 Gii thiu ton vn d liu (data Integrity) Ton vn d liu l cp n trng thi ca tt c cc gi tr d liu lu tr trong CSDL l ng. Nu d liu khng ng m c lu tr trong CSDL th c gi l vi phm ton vn d liu. Cc bng trong CSDL ca SQL Server c mt s loi ton vn d liu khc nhau. V d nh ngha NOT NULL, nh ngha DEFAULT, thuc tnh IDENTITY, CONSTRAINTS, RULES, TRIGGERS, INDEXES. Xc nh ng kiu d liu ca ct hoc bin cng l mt cch thc p tnh ton vn d liu. V d bn khng th chp nht gi tr ca ct CustomName l mt gi tr dng ngy gi cng nh ngc li. to hoc thm cc p tha ton vn d liu, chng ta c th thc hin trong cc cu lnh. nh ngha rng buc: Create Table : nh ngha trong lc thit k cu trc bng. Alter Table : nh ngha trong khi hiu chnh bng. kim tra hoc xem cc ton vn d liu
Sp_HelpConstraint <Tn Table>

Hoc Bt ca s Object Browser ca Query Analyzer, m nhnh Constraint ca tng bng. Xa cc ton vn d liu
ALTER TABLE <Tn Table> DROP CONSTRAINT <Tn Constraint>

6.2

Tm hiu cc ton vn d liu. 6.2.1 nh ngha NULL/NOT NULL Mt gi tr khng bit, cha xc nh chng ta quy l gi tr NULL. Kh nng null ca mt ct c xem l kh nng ca ct chp nhn hoc khng chp nhn gi tr null. Bn c th nh ngha gi tr ca mt ct khng l null. Mt gi tr null khng ng nht vi gi tr 0, khong trng, chui rng. Null c ngha l khng c thao tc nhp no thc hin c. S tn ti ca Null thng cho bit rng gi tr cha c bit r hay cha xc nh. Chng hn, mt gi tr Null trong ct price ca bng Items khng c ngha l mt hng ny khng c gi hoc l gi bng 0. Ni chung, hy trnh chp nhn gi tr Null bi v chng gy ra nhiu phc tp hn trong cc truy vn cng nh cp nht d liu. Vic ch nh mt ct khng chp nhn gi tr Null c th gip duy tr tnh ton vn d liu. Thng thng khai bo mt ct c th chp nhn gi tr null, chng ta s khi bo trong khi nh ngha hoc hiu chnh ct. Tc l dng trong cu lnh Create Table/Alter Table. Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000 V d: USE SalesDb GO DROP TABLE Product_Info GO CREATE TABLE Product_Info ( Product_ID smallint NOT NULL, Product_Name char(20) NOT NULL, Description char(30) NULL, Price smallmoney NOT NULL ) GO

Trang 49

6.2.2 Gi tr mc nh (Default Values) Trong s cc c tnh ca ct, chng ta xt thy gi tr c th null v gi tr mc nh. C hai c tnh ny nh ra gi tr chn vo mt ct khi n khng c ch nh trong cu lnh INSERT. Cc trng hp ny c th xy ra khi gi tr ct khng c a vo trong cu lnh INSERT: - Khi ct c nh ngha nh l chp nhn gi tr NULL v khng c gi tr mc nh, gi tr ca ct l NULL. - Khi ct c nh ngha khng chp nhn gi tr NULL v khng c gi tr mc nh, mt li s xy ra. - Khi ct c mt gi tr mc nh Nh vy, mi mt ct trong mt mu tin ca bng u phi cha mt gi tr, ngay c khi gi tr l NULL. C nhng trng hp bn cn phi ti mt hng d liu vo mt bng nhng bn khng bit gi tr dnh cho ct hay gi tr ny khng tn ti. Nu ct chp nhn cc gi tr Null, bn c th ti hng c gi tr Null. Thng thng, cc ct chp nhn gi tr Null c th khng phi l cc ct cn thit nn gii php tt hn ht l n nh mt gi tr mc nhin (khng nhp gi tr vo th ct s chp nhn gi tr mc nh). Vic chnh l nh ngha DEFAULT cho ct nhng ni thch hp. Chng hn, ngi ta thng ch nh 0 l gi tr mc nh cho cc ct s, hoc N/A l gi tr mc nh cho cc ct chui khi khng c gi tr no c ch nh). Khi bn nhp vo mt mu tin ca bng c mt nh ngha Default dnh cho mt ct bn ang gin tip hng dn SQL Server nhp mt gi tr mc nh trong ct khi bn khng ch nh mt gi tr cho ct . SQL Server 2000 c hai cch trin khai cc gi tr mc nh cho cc ct: Default Constraint v Default Object. 6.2.2.1 Default Constraint Default constraint c th c to ti thi im to bng, thm sau khi bng c to. Gi tr Default c dng gn gi tr hng s cho mt ct. Ch c mt gi tr Default c th c to cho mt ct.

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 50

Cc ct TIMESTAMP, IDENTITY v ROWGUIDCOL khng th c default constraint, v gi tr ca chnh t ng xc nh. Gi tr default c th l mt hng s; mt hm h thng, chng hn Getdate(); mt bin ton cc, nh @@trancount; hoc mt hm do ngi dng nh ngha. Khai bo default constraint nh ngha Default constraing trong khi to bng
CREATE TABLE tablename( columnname datatype [NULL | NOT NULL] [CONSTRAINT constraintname] DEFAULT expression [,...])

nh ngha Default constraint i vi mt bng tn ti.


ALTER TABLE tablename ADD [ CONSTRAINT constraintname ] DEFAULT expression FOR columnname

V d 1: To bng Events vi cc default constraint CREATE TABLE Events ( EventID int IDENTITY (1, 1) NOT NULL , EventType nvarchar (10) NOT NULL, EventTitle nvarchar (100) NULL , EventDescription ntext NULL , EventLanguage nvarchar (2) NULL , EventDate smalldatetime NULL DEFAULT GETDATE(), EventEndDate smalldatetime NULL DEFAULT DATEADD(day, 1, GETDATE()), EventCreator nvarchar (50) NOT NULL DEFAULT SYSTEM_USER ) V d 2: To bng Events khng c default constraint CREATE TABLE Events ( EventID int IDENTITY (1, 1) NOT NULL, EventType nvarchar (10) NOT NULL, EventTitle nvarchar (100) NULL, EventDescription ntext NULL, EventLanguage nvarchar (2) NULL, EventDate smalldatetime NULL, EventEndDate smalldatetime NULL, EventCreator nvarchar (50) NOT NULL ) Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 51

Thm cc default constraint cho bng Events ALTER TABLE Events ADD DEFAULT Party FOR EventType --------ALTER TABLE Events ADD CONSTRAINT EVentDate_DF DEFAULT GETDATE() FOR EventDate Kim tra constraint Sp_helpConstraint Events --- chn mt mu tin trng vo bng Events INSERT Events DEFAULT VALUES SELECT * FROM Events Kt qu

Xo default constraint ALTER TABLE Events DROP CONSTRAINT DF__Events__EventTyp__7E6CC920 ALTER TABLE Events DROP CONSTRAINT EVentDate_DF 6.2.2.2 Default Object Default object l mt cch khc nh ngha mt gi tr mc nh cho mt ct. Cc Default Object c gi l default c u tin trong phin bn 2000 ca SQL Server. Cc Default khng l mt phn ca ton vn khai bo bi v chng khng l mt ca cu trc bng; chng thc s l mt phn ca lc CSDL. Qu trnh khai bo mt Default nh sau: - nh ngha Default. - Kt Default vo ct ca bng hoc kiu d liu. - Nu mun dng Default th s g b khi ct hoc kiu d liu. - Khng cn Default na th xo khi CSDL nh ngha default
CREATE DEFAULT default AS constant_expression

Kt nh default vi ct:
sp_binddefault defaultname, tablename.columnname

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000 Kt nh default vi user-defined datatype


sp_binddefault defaultname, datatypename [, futureonly]

Trang 52

Futureonly ch nh rng cc ct tn ti c lin quan n kiu d liu s khng k tha gi tr mc nh mi. C ny ch c th dng kkhi kt gi tr mc nh cho kiu d liu. V d: CREATE DEFAULT CalifDef AS CA GO sp_bindefault CalifDef, Orders.ShipRegion G b kt nh mt deault vi ct
sp_unbindefault tablename.columnname

G b kt nh mt deault vi User-defined datatype


sp_unbindefault datatypename [, futureonly]

Xa mt Default
DROP DEFAULT defaultname

Lu : Ch xa c nhng Defaut khng c kt vi ct hoc kiu d liu. 6.2.3 Thuc tnh Identity: Identity l mt thuc tnh ca ct, n khng l mt constraint. Tuy nhin, Identity dng rng buc s tn ti d liu. Mt bng ch c duy nht mt ct kiu Identity. Kiu d liu ca ct Identity phi l bigint, int, smallint, hoc tinyint. Gi tr ca ct Identity s t ng tng. Mt ct Identity c to khi bng c to bng lnh Create Table, hoc khi hiu chnh ct trong bng bng lnh Alter table. V d: CREATE TABLE Table1 ( ID INT IDENTITY, FirstName VARCHAR(30) NOT NULL, LastName VARCHAR(30) NOT NULL ) GO ---Chn d liu vo Table1, khng cn a gi tr cho ct ID INSERT Table1 (FirstName, LastName) VALUES (Minh, Thu) Tuy nhin, i khi bn cn ch nh gi tr cho ct c nh ngha Identity, bn thc hin tun t cc bc sau: Bt ch chn d liu cho ct Identity cho bng, chn d liu, tt ch chn cho ct Identity nu cn. Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000 V d:

Trang 53

SET IDENTITY_INSERT Table1 ON INSERT Table1 (ID, FirstName, LastName) VALUES (99, 'Thuy',Tien) SELECT * FROM Table1 6.2.4 Check Kiu d liu v gi tr default p tha rng buc min gi tr. Cc Check gii hn cc gi tr c th a vo ct. Chng s xc nh cc gi tr no l hp l. Mt ct c th c nhiu hn mt check constraint, chng c lng gi theo th t c to. Cc check constraint gii hn cc gi tr c php bng cch nh ngha: - Mt vng hoc nhiu vng cc gi tr c th chp nhn c. - Danh sch cc gi tr. - Mt mu nh trc. Bn c th qui nh nhiu constraint check cho mt ct n, chng c lng gi theo th t c to. 6.2.4.1 Check Constraint Check Constraint l mt ca nh ngha bng. Chng c th c nh ngha trong khi to bng, hiu chnh bng, v c th xa bt k lc no. Chng c th c v hiu ho (disabled) hoc lm c hiu lc (enabled) khi cn. Mt ct c th c nhiu hn mt check constraint. Chng c lng gi theo th t c to. Check constraint: Lng gi thnh mt biu thc logic, nh l biu thc ca mnh WHERE. C th tham chiu n cc ct khc trong cng mt bng. nh ngha Check Constraint khi to bng - nh ngha mc ct
CREATE TABLE tablename (columname datatype [ CONSTRAINT constraintname ] CHECK [NOT FOR REPLICATION] (logical_expression)

nh ngha mc bng
CREATE TABLE tablename (columname datatype [,...], [ CONSTRAINT constraintname ] CHECK [NOT FOR REPLICATION] (logical_expression)

nh ngha CHECK CONSTRAINT vi bng tn ti


ALTER TABLE tablename [ WITH CHECK | WITH NOCHECK ] ADD [ CONSTRAINT constraintname ] CHECK [NOT FOR REPLICATION] (logical_expression)

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000 V d: ALTER TABLE Chucvu ADD CONSTRAINT NV_HSPC_Chk CHECK (HSPC>=0.1 AND HSPC<0.5)

Trang 54

6.2.4.2 RULE Rule l mt tnh nng tng thch ngc nh ngha cc qui tc hp l m c th kt buc vo cc ct ca bng hoc cc kiu d liu do ngi dng nh ngha. Ging nh i tng Default, Rule c to trn chnh n trc khi c kt buc vo i tng khc. to mt Rule, ta s dng lnh CREATE RULE. Mt ct ch c th c mt Rule c kt buc, bn c th kt buc mt Rule vi ct c nh ngha Check Constraint. C hai u c gi tr nhng s u tin Check Constraint. nh ngha Rule
CREATE RULE rulename AS condition_expression

Kt buc Rule vo mt ct
sp_bindrule rulename, tablename.columnname

Kt buc Rule vo user-defined datatype


sp_bindrule rulename, datatypename [, futureonly]

Futureonly ch nh rng cc ct tn ti sn m c dng kiu d liu ny th khng k tha rule mi. C ny ch s dng khi kt Rule vi kiu d liu, i vi ct th khng. V d: To mt rule kim tra ngy v kt n vo ct OrderDate cho bng Orders CREATE RULE ActiveDate AS @Date BETWEEN 01/01/70 AND GETDATE() AS sp_bindrule ActiveDate, Orders.OrderDate Cc biu thc dng trong Rule ging cc nguyn tc nh cc iu kin ca check costraint v cng tng t biu thc trong mnh Where, ngoi bn khng th tham chiu n cc ct CDSL khc trong cc Rule. Nu bn so snh c php ca lnh Check v biu thc rule, hai s khc bit chnh l: - Biu thc Rule dng mt bin (bt u vi mt k hiu @) m s c thay th bi gi tr ct khi c nh vo ct. - Mt biu thc Rule khng th tham chiu n cc ct ca bng. im th hai l hnh vi khc bit ln nht gia Check constraint v cc Rule: Rule ch tng tng vi Check constraint mc ct. 6.2.5 Primary key Constraint

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 55

Mt bng thng c mt hay nhiu ct vi cc gi tr ring nhn bit mi hng trong bng. Cc ct ny c gi l kha chnh (Primary key) ca bng v bo m tnh ton vn thc th ca bng. SQL Server t ng to mt ch mc cho bng ng vi cc ct tham gia primary key constraint. Mt bng ch c mt constraint Primay key. Mt ct nm trong constraint Primay key khng th chp nhn gi tr Null, trng lp. Bi v Primay key constraint bo m tnh duy nht ca d liu nn chng thng c n nh cho ct nhn dng (identity column). Nu mt Primay key constraint c n nh trn nhiu ct, cc gi tr c th c lp li trong mt ct, nhng mi s kt hp gi tr t tt c cc ct trong Primay key constraint phi l s kt hp duy nht. To Primary Key Constraint C th to constraint Primay key trong khi to table hoc thm constraint Primay key cho table c sn hiu chnh constraint Primay key ca mt table th bn phi xa constraint Primay key v to li. nh ngha Primary Key Constraint khi to bng: - nh ngha mc ct
CREATE TABLE tablename (columname datatype [ CONSTRAINT constraintname ] PRIMARY KEY [ CLUSTERED | NONCLUSTERED ] [ WITH FILLFACTOR = fillfactor ] [ON {filegroup | DEFAULT} ] [,...]

nh ngha mc bng
CREATE TABLE tablename (columname datatype [,...], [CONSTRAINT constraintname ] PRIMARY KEY [ CLUSTERED | NONCLUSTERED ] { ( column [ ASC | DESC ] [ ,...n ] ) } [ WITH FILLFACTOR = fillfactor ] [ ON { filegroup | DEFAULT } ]

V d 1: Va to bng va nh ngha Primary Key Constraint Cch 1: nh ngha mc ct CREATE TABLE Table1 (col1 INT NOT NULL PRIMARY KEY, col2 VARCHAR(30) ) -- Kim tra constraint EXEC Sp_helpconstraint Table1

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 56

Cch 2: nh ngha mc bng CREATE TABLE Table2 (col1 INT NOT NULL, col2 VARCHAR(30) CONSTRAINT Table2_PK PRIMARY KEY(col1) ) EXEC Sp_helpconstraint Table1 nh ngha Primary Key Constraint vi bng tn ti: - nh ngha mc ct
ALTER TABLE tablename ADD columname datatype [CONSTRAINT constraintname ] PRIMARY KEY [ON {filegroup | DEFAULT} ] [,...]

nh ngha mc bng
ALTER TABLE tablename ADD[CONSTRAINT constraintname] PRIMARY KEY { ( column [ ASC | DESC ] [ ,...n ] ) } [ ON { filegroup | DEFAULT } ]

V d 2: Thm mt PRIMARY KEY constraint cho mt bng c sn CREATE TABLE Table3 ( col1 INT NOT NULL, col2 VARCHAR(30) ) ALTER TABLE Table3 ADD CONSTRAINT table3_PK PRIMARY KEY (col1) EXEC Sp_helpconstraint Table3 Lu : Khi mt Primary Key Constraint c thm vo mt bng vi ct c sn trong bng th SQL Server s kim tra d liu hin c c tun theo cc qui tc ca mt Primary key hay khng: Khng Null, Khng trng lp. Nu khng tha qui tc th s khng to c Primary Key Constraint. Xa mt Primary Key Constraint ALTER TABLE Table2 DROP CONSTRAINT table2_PK

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 57

Lu : Khng th xa mt Primary Key constraint nu n c tham chiu bi mt Foreign key Constraint ca mt bng khc, mun xa th phi xa Foreign key Constraint trc. 6.2.6 Unique Constraints Unique Constraints dng m bo khng c gi tr trng cc ct. Mc d c Unique constraint v Primary key constraint u tun theo tnh duy nht, nhng hy s dng Unique contarint khi bn mun bo m tnh duy nht ca: Mt ct, hay s kt hp gia cc ct, vn khng phi l kha chnh. Mt ct chp nhn gi tr null, trong khi constraint primary key khng th n nh trn ct ny. Mt bng c th c nhiu Unique constraint. nh ngha Unique Constraint: nh ngha UNIQUE CONSTRAINT khi to bng - nh ngha mc ct
CREATE TABLE tablename (columname datatype [ CONSTRAINT constraintname ] UNIQUE [ CLUSTERED | NONCLUSTERED ] [ON {filegroup | DEFAULT} ] [,...]

nh ngha mc bng
CREATE TABLE tablename (columname datatype [,...], [ CONSTRAINT constraintname ] UNIQUE [ CLUSTERED | NONCLUSTERED ] { ( column [ ASC | DESC ] [ ,...n ] ) } [ ON { filegroup | DEFAULT } ] )

nh ngha UNIQUE CONSTRAINT vi bng tn ti - nh ngha mc ct


ALTER TABLE tablename ADD columname datatype [ CONSTRAINT constraintname ] UNIQUE [ CLUSTERED | NONCLUSTERED ] [ON {filegroup | DEFAULT} ] [,...]

nh ngha mc bng
ALTER TABLE tablename ADD [ CONSTRAINT constraintname ] UNIQUE [ CLUSTERED | NONCLUSTERED ] { ( column [ ASC | DESC ] [ ,...n ] ) } [ ON { filegroup | DEFAULT } ]

V d: Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 58

ALTER TABLE Nhanvien ADD Scmnd CHAR(15) CONSTRAINT NV_CMND_UNIQUE UNIQUE 6.2.7 Foreign Key Constraint Mt kha ngoi (Foreign key) l mt ct hay s kt hp ca nhiu ct c thit lp v tun theo mt lin kt gia cc d liu trong hai bng. Mt lin kt c to ra gia hai bng bng cch b sung mt hay nhiu ct c cha gi tr kha primay key ca mt bng vo mt bng khc. Cc ct ny tr thnh kha ngoi ca bng th hai. Ta c th quy nh kha ngoi bng cc n nh mt constraint Foreign key khi bn to hay thay i mt bng. Mt constraint Foreign key khng bt buc phi lin kt vi ch mt constraint Foreign key trong mt bng khc, n cng c th c n nh tham chiu cc ct ca mt constraint Foreign Unique trong mt bng khc. Mc d mc ch chnh ca mt constraint Foreign key l iu khin d liu c th c cha trong bng kha ngoi, nhng n cng iu khin cc thay i i vi bng kha chnh. Chng hn, nu mt mu tin phng ban b xa ra khi bng Phongban, v m phng ban c s dng cho cc nhn vin trong bng NhanVien, tnh ton vn trong mi quan h gia hai bng ny s b ph v. Cc dng nhn vin c m phng ban b xa s nm m ci trong bng NhanVien m khng c lin kt vi d liu trong bng PhongBan. Mt constraint Foreign key s ngn chn tnh trng m ci d liu. Constraint Foreign key s bo m khng cho php bn xa d liu trong bn chnh nu cc d liu ny c s lin kt vi d liu trong bng kha ngoi. nh ngha FOREIGN KEY CONSTRAINT khi to bng - nh ngha mc ct
CREATE TABLE tablename (columname datatype [ CONSTRAINT constraintname ] [ FOREIGN KEY ] REFERENCES ref_table [ ( ref_column ) ] [ ON DELETE { CASCADE | NO ACTION } ] [ ON UPDATE { CASCADE | NO ACTION } ] [ NOT FOR REPLICATION ] [,...]

nh ngha mc bng
CREATE TABLE tablename (columname datatype [,...], [ CONSTRAINT constraintname ] FOREIGN KEY [ ( column [ ,...n ] ) ] REFERENCES ref_table [ ( ref_column [ ,...n ])] [ ON DELETE { CASCADE | NO ACTION } ] [ ON UPDATE { CASCADE | NO ACTION } ] [ NOT FOR REPLICATION ]

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 59

V d: CREATE TABLE PhongBan ( MaPb INT, TenPb VARCHAR(30) CONSTRAINT Pb_Pk (MaPb) PRIMARY KEY(MaPb) ) GO CREATE TABLE NhanVien ( MaNv INT, TenNV VARCHAR(30), MaPB int, MaCv int CONSTRAINT Nv_Pk PRIMARY KEY(MaNv) CONSTRAINT Nv_Fk FOREIGN KEY (MaPb) REFERENCES PhongBan(MaPb) ) GO -- Xem cc constraint SP_HELPCONSTRAINT NHANVIEN GO nh ngha Foreign Key Constraint vi bng tn ti:
ALTER TABLE tablename [ WITH CHECK | WITH NOCHECK ] ADD [ CONSTRAINT constraintname ] FOREIGN KEY [ ( column [ ,...n ] ) ] REFERENCES ref_table [( ref_column[ ,...n ] )] [ ON DELETE { CASCADE | NO ACTION } ] [ ON UPDATE { CASCADE | NO ACTION } ] [ NOT FOR REPLICATION ]

Trong : WITH CHECK: trc kho to rng buc, SQL Server s kim tra d liu hin c c vi phm rng buc hay khng, nu c s khng to constraint. WITH NOCHECK: To Constraint m khng cn kim tra d liu hin c c vi phm rng buc hay khng V d: CREATE TABLE ChucVu ( MaCv INT PRIMARY KEY, TenCv VARCHAR(30), HSPC Real Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000 )

Trang 60

GO ALTER TABLE Nhanvien ADD CONSTRAINT Nv_Cv_Pk FOREIGN KEY (Macv) REFERENCES ChucVu(MaCv) Lu : ON DELETE CASCADE| NO ACTION ON UPDATE CASCADE| NO ACTION

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 61

BI 7: TRUY XUT C S D LIU CA SQL SERVER


Mc ch chnh ca CSDL trong SQL Server l lu tr d liu sao cho d liu d dng c khai thc bi ngi s dng. Bn cng c th truy cp d liu thng qua mt ng dng hoc cc trnh tin ch gi yu cu nhp d liu hoc hiu chnh d liu n SQL Server. Nhm mc ch tm hiu ta dng SQL Query Analyzer nh l mt cng c chnh truy xut v hiu chnh d liu trong mt CSDL ca SQL Server. 7.1 Cu lnh SELECT Cu lnh Select c s dng mt cch thng xuyn v l cch c bn truy vn d liu.
SELECT [ALL | DISTINCT] [TOP n [WITH TIES]]select_list [ INTO new_table ] FROM table_source [ WHERE search_condition ] [ GROUP BY group_by_expression ] [ HAVING search_condition ] [ ORDER BY order_expression [ ASC | DESC ] ]

Products(ProductID,ProductName, SupplierID, CategoryID, UnitPrice, ) Customers(CustomerID, CompanyName, Address, City, Region, Country, ) Employees(EmployeeID, LastName, FirstName, BirthDate, City, ) Orders(OderID, CustomerID, EmployeeID, OrderDate,) Order Details(OrderID, ProductID, UnitPrice, Quantity, Discount) Mnh SELECT USE NorthWind SELECT * FROM Products SELECT ProductID, ProductName, UnitPrice FROM Products WHERE UnitPrice >40 ORDER BY UnitPrice DESC T kha DISTINCT: Loi b cc mu tin trng trong tp kt qu. SELECT DISTINCT City, Region FROM Customers ORDER BY Region T kha TOP n : Ly ra n mu tin u tin -- Ch ly ng 5 mu tin u tin c s lng bn cao nht. SELECT TOP 5 orderid, productid, quantity FROM [order details] ORDER BY quantity DESC Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 62

--- WITH TIES c ngha l cc mu tin ngang bng gi tr trong ct ORDER BY c lit k. SELECT TOP 5 WITH TIES orderid, productid, quantity FROM [order details] ORDER BY quantity DESC T kha AS: t b danh cho bng, ct SELECT p.Productid, p.Productname FROM Products As p Mnh SELECT INTO: Sinh thm mt bng mi m d liu c ly t cc bng khc. SELECT FirstName, LastName INTO EmployeeNames FROM Northwind.dbo.Employees Dng vi cc hm SUM, MAX, MIN, AVG, COUNT --AVG USE Northwind SELECT AVG(UnitPrice) FROM dbo.Products -- SUM SELECT SUM(Quantity) FROM dbo.[Order Details] --- Phn bit Count va Count(*); Count(*) m tt c cc mu tin c trong bng SELECT COUNT(*) FROM dbo.Employees --- Count(Reportsto) m tt c cc gi tr c trong ct ReportTo, nu gi tr ca Reportsto l NULL th SQL Server s b qua khng m USE Northwind SELECT COUNT(ReportsTo) FROM dbo.Employees Mnh WHERE, GROUP BY, v HAVING: Where v Having dng lc d liu trong cu Select. Select vi Where. Lc d liu tha iu kin. Cc php ton c th dng trong where: >, >=, <, <=, =, AND, OR, BETWEEN AND, !=, IS NULL, NOT IS NULL Cho bit danh sch cc mt hng bn trong ha n s 2 SELECT OrderID, Quantity FROM Orderhist WHERE OrderID=2 Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 63

Select vi Group by: Kt nhm Cho bit tng lng hng bn ng vi mi ProductId SELECT productID,SUM(quantity) AS Total_quantity FROM [Order details] GROUP BY productID Cho bit tng lng hng bn ng vi ProductId=2 SELECT ProductID, SUM(Quantity) AS Total_quantity FROM [Order Details] WHERE ProductID=2 GROUP BY productID Cho bit danh sch cc m hng c tng s lng >=30 SELECT ProductID,SUM(Quantity) AS Total_quantity FROM [Orde details] GROUP BY ProductID HAVING SUM(quantity)>=30 Lu : Having gii hn kt qu do Group By sn sinh cc hm Where gii hn trc khi Group By Cho bit tng lng hng bn ng vi mi m nhm hng SELECT Categoryid, SUM(Quantity) AS Total_quantity FROM [order details] JOIN products ON [order details].productId=products.productId GROUP BY Categoryid Tng s lng bn ng vi mi ha n SELECT orderid, SUM(quantity) AS Total_quantity FROM [order details] GROUP BY orderid HAVING SUM(quantity)>=250 S dng Group By vi ton t ROLLUP. ROLL UP S chn thm cc dng Total nm trc cc nhm mu tin c phn theo GROUP BY. V d: /* Tng s lng c t hng cho mi Product ng mi Order cho cc Order c OrderID<1025 Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000 */ use northwind SELECT productID,orderid, Total_quantity FROM [Order details] WHERE orderid<10250 GROUP BY OrderId,productId ORDER BY OrderId, productID Kt qu Khng c With Rollup ProductID Orderid Total_quantity 11 10248 12 42 10248 10 72 10248 5 14 10249 9 51 10249 40 C With Rollup ProductID Orderid Total_quantity NULL NULL 76 NULL 10248 27 11 10248 12 42 10248 10 72 10248 5 NULL 10249 49 14 10249 9 51 10249 40

Trang 64

SUM(quantity)

AS

V d khc: Danh sch Order ng vi tng quantity ca product c m ProductID l 8 hoc 9. SELECT ProductID,Orderid, SUM(quantity) AS Total_quantity FROM [Order Details] WHERE ProductID IN (8,9) GROUP BY ProductID, OrderId WITH ROLLUP ORDER BY ProductID, OrderId /* total quantity for: each product for each order. all products for each order */ SELECT ProductID, Orderid, SUM(quantity) AS Total_quantity FROM [Order details] WHERE orderid<10250 GROUP BY OrderId,productId WITH ROLLUP ORDER BY OrderId, productID

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 65

S dng mnh Group By vi ton t CUBE: Tng t nh Rollup nhng thm cc dng Total ca mi s kt hp c th c gia cc ct V d: SELECT ProductID, Orderid, SUM(quantity) AS Total_quantity FROM [Order details] WHERE orderid<10250 GROUP BY OrderId,productId WITH CUBE ORDER BY OrderId, productID Kt qu NULL NULL 76 11 NULL 12 14 NULL 9 42 NULL 10 51 NULL 40 72 NULL 5 NULL 10248 27 11 10248 12 42 10248 10 72 10248 5 NULL 10249 49 14 10249 9 51 10249 40 V d khc: SELECT ProductID, Orderid, SUM(quantity) AS Total_quantity FROM [Order Details] GROUP BY OrderId, ProductId WITH CUBE ORDER BY ProductID, OrderId Dng hm GROUPING: Hm Grouping s tr v mt gi tr l 0 hoc 1 xc nh dng kt qu l dng tng (1) hay l dng chi tit (0) V d: SELECT ProductID, grouping(productID)as a, Orderid, grouping(orderid) as b,SUM(quantity) AS Total_quantity FROM [Order details] WHERE orderid<10250 Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000 GROUP BY OrderId,productId WITH CUBE ORDER BY OrderId, productID ProductID NULL 1 11 0 14 0 42 0 51 0 72 0 NULL 1 11 0 42 0 72 0 NULL 1 14 0 51 0 a NULL NULL NULL NULL NULL NULL 10248 10248 10248 10248 10249 10249 10249 Orderid 1 76 1 12 1 9 1 10 1 40 1 5 0 27 0 12 0 10 0 5 0 49 0 9 0 40 b Total_quantity

Trang 66

Dng ton t COMPUTE v COMPUTE BY: Thng thng dng kim tra s liu, dng km vi cc hm thng k SUM, AVG, MAX, MIN. COMPUTE BY :c kt nhm SELECT productID,orderid, quantity FROM [Order Details] ORDER BY productID,OrderId COMPUTE SUM(quantity) SELECT productID,orderid, quantity FROM [Order Details] ORDER BY productID,OrderId COMPUTE SUM(quantity) BY productid COMPUTE SUM(quantity) 7.2 S dng JOINS truy xut d liu Bng JOIN, chng ta c th ly d liu t hai hoc nhiu bng da trn mi quan h gia cc bng. Tuy nhin nu ta khng thch dng Join ly d liu th bn cng c th vit cc cu truy vn bng dng truy vn con (Subqueries). Dng Joins th tc thc hin ca cu truy nhanh hn SubQueries nhng li kh hiu hn. Trong mt truy vn tham chiu n nhiu table, th tt c cc ct phi c ch r mt cc tng minh l ct ly t table no. Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 67

Thng thng th iu kin kt ni l dng php so snh bng, nhng trong SQL Server ta c th nh ngha mi quan h gia trn cc ton t khc nh <>, >, >=, <, <= Cc ct c dng kt ni khng nht thit phi cng tn hay cng kiu d liu. Nu kiu d liu khc nhau th c th dng cc hm chuyn i kiu d liu. Gm hai loi Joins chnh: INNER JOINS v OUTER JOINS. Tuynhin ta cn c th to mt dng Join khc nh CROSS-JOINS v SELF-JOINS. Inner Joins: Lin kt Inner Joins ch tr v nhng mu tin u hin hu c hai bng quan h v phi tha mn iu kin kt. V d: SELECT Em.EmployeeID,LastName+ ' '+FirstName AS EmployeeName, COUNT(OrderID) AS TotalOrders FROM Employees AS Em INNER JOIN Orders AS O ON Em.EmployeeID=O.EmployeeID WHERE MONTH(OrderDate)=8 AND YEAR(Orderdate)=1996 GROUP BY Em.EmployeeID,LastName+ ' '+FirstName ORDER BY Em.EmployeeID iu kin kt nm mnh Where SELECT P.ProductID, S.SupplierID, S.CompanyName FROM Suppliers AS S, Products AS P WHERE S.SupplierID = P.SupplierID AND P.UnitPrice > $10 AND S.CompanyName LIKE N'F%' iu kin kt nm mnh From SELECT P.ProductID, S.SupplierID, S.CompanyName FROM Suppliers AS S JOIN Products AS P ON (S.SupplierID = P.SupplierID) WHERE P.UnitPrice > $10 AND S.CompanyName LIKE N'F%' Outer Joins: tr v tt c nhng mu tin nm t nht mt bng no trong cc bng tham gia kt ni v cng phi tho iu kin kt. Outer Joins cung cp 3 kiu outer Join: Left, Right, v Full. Tr v tt c cc dng t bng bn tri m c tham chiu t Left Outer Joins. Tr v tt c cc dng t bng bn phi m c tham chiu t Right Outer Joins. Tr v tt c cc dng t c 2 bng m c tham chiu t Full Outer Joins. V d : Dng cu truy vn sau v ln lt thay i kiu Join (Inner, Left, Right, Full), cho thi hnh v cho nhn xt kt qu ca cu truy vn. T rt ra kt lun SELECT O.OrderID, O.CustomerID, c.ContactName, C.City Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000 FROM Orders O LEFT JOIN Customers C ON O.CustomerID = C.CustomerID AND O.ShipCity=C.City ORDER BY O.OrderID

Trang 68

Cross Jions: Mi dng trong tt c cc dng ca bng bn tri s kt hp vi tt c cc dng ca bng bn phi. Gi s X, Y l s dng ca bng bn tri v bn phi, th tp kt qu sau khi Cross Join c X*Y dng. Sefl Joins: T lin kt 7.3 Dng Sub-Queries Subqueries l mt cu lnh Select m n tr v mt gi tr n hoc mt tp cc gi tr v n c nm trong cc cu lnh nh Select, Insert, Update, or Delete. Mt SubQuery c th c dng bt k ni no trong biu thc c cho php. Mt SubQuery cng c gi trong mt truy vn khc, hoc mt cu lnh select c subquery cgn c th c gi t mt cu Select khc (32 cp). Ngt cu lnh phc tp thnh nhng on truy vn n gin. Tr li mt truy vn t mt truy vn khc. Cc Sub Query hu nh c th vit bng Join v SQL Server lun lun thi hnh nhng cu lnh Join nhanh hn SubQueries. Khng th dng SubQueries trn ct hnh nh.
/* SELECT statement built using a subquery. */ Lc ra nhng Product Name c UnitPrice bng vi Unitprice ca ProductName l 'Sir Rodney''s Scones' SELECT ProductName FROM Products WHERE UnitPrice = (SELECT UnitPrice FROM Products WHERE ProductName = 'Sir Rodney''s Scones') /* SELECT statement built using a join that returns the same result set. */ SELECT ProductName FROM Products AS Prd1 JOIN Products AS Prd2 ON (Prd1.UnitPrice = Prd2.UnitPrice) WHERE Prd2.ProductName = 'Sir Rodney''s Scones'

Dng t kha IN trong subquery. Lc ra nhng OrderId, EmployeeId do nhng Employee City Seattle Order. SELECT OrderId, EmployeeID AS EmpID FROM Orders Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000 WHERE EmployeeID IN ( SELECT EmployeeId FROM Employees WHERE City='Seattle' )

Trang 69

ORDER BY OrderID Dng cc ton t so snh trong Subquery: Cc ton t bao gm =, >, >=, <, <=, <>, >=ALL, > ANY, . Lc ra nhng OrderId, ProductId, UnitPrice m c Unitprice ln hn nh Unitprice c bn bi EmployeeID=5 SELECT OrderId, [Order Details].ProductId, [Order Details].UnitPrice FROM [Order Details] WHERE Unitprice > ALL ( SELECT [Order Details].UnitPrice FROM [Order Details] JOIN Orders ON [Order Details].OrderId= Orders.OrderId where Orders.EmployeeID=5 ) ORDER BY [Order Details].UnitPrice,OrderID) ORDER BY UnitPrice.OrderID Dng t kha EXISTS, NO EXISTS trong subquery: Lc ra nhng OrderId ng vi cc CustomerId m nhng Customer ny London City. SELECT OrderId, CustomerId FROM Orders WHERE EXISTS ( SELECT * FROM Customers WHERE Customers.CustomerId=Orders.CustomerId AND City='LonDon' ) ORDER BY OrderID Hiu chnh d liu trong c s d liu ca SQL SERVER 7.4.1 Chn (INSERT) d liu vo CSDL. Cu lnh Insert c dng thm mt hoc nhiu dng d liu vo bng hoc mt View. Mt s lu : Trung Tm CNTT - Trng HCN Tp.HCM 7.4

Gio trnh SQL Server2000

Trang 70

C gng chn d liu ng kiu d liu ca ct, trnh a gi tr Null vo ct khng chp nhn gi tr Null. Tun th ng cc ton vn d liu, by li. Ch nh mt danh sch cc gi tr (values) ng vi danh sch cc ct, nu khng ch nh th insert s theo th t cu trc ca table. Ct c thuc tnh Identity th khng cn ch nh gi tr. Nu ct c nh ngha Default v chng ta chp nhn gi tr default th ta c th b qua vic ch nh gi tr ca ct ny. Khi chn d liu th ti mt thi im cng nh mt cu lnh ch c th chn vo mt bng duy nht. 7.4.1.1 Chn mu tin t danh sch cc gi tr c ch nh (Insert Values)
INSERT <TableName> [(field1, field2, )] VALUES (Value1, Value2,)

CREATE TABLE NewProducts ( ProductID INT NOT NULL, ProductName NVARCHAR(40), CategoryID INT NULL, UnitPrice MONEY NULL, SupplierID INT NULL ) GO INSERT NewProducts (ProductID, ProductName) VALUES (123, 'Ice Tea') 7.4.1.2 Chn d liu bng cc gi tr t cc bng khc (Insert Select)
INSERT <TableName> [(field1, field2, )] SELECT (Value1, Value2,)

INSERT NewProducts (ProductID, ProductName) SELECT ProductID, ProductName FROM Products WHERE CategoryID=2 INSERT NewProducts (Od.ProductID, P.ProductName) SELECT OD.ProductID, ProductName FROM Products as P INNER JOIN [Order Details] AS Od ON P. ProductID = Od. ProductID WHERE CategoryID<>2 Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000 7.4.1.3 Chn mu tin t mt stored Procedure (trnh by sau) 7.4.1.4 Xy dng mt Table bng SELECT INTO SELECT DISTINCT C.CustomerID, C.CompanyName INTO NewCustomers FROM Customers AS C INNER JOIN Orders ON C.CustomerID= orders.CustomerID AND orders.EmployeeID=2

Trang 71

7.4.2 Cp nht (UPDATE) d liu vo CSDL. SQL Server cung cp 3 phng php thay i/cp nht d liu trong mt bng c sn. l cu lnh Update, giao din lp trnh ng dng (Application Programming Interfaces - APIs) v dng con tr (Cursors). Trong phn bi hc ny ch trnh by cu lnh Update.
UPDATE <table_name> SET <column_name> = <expression> [ FROM <table_list>] [ WHERE <search_condition> WHERE CURRENT OF <Variable_Cursor>

V d: USE Northwind UPDATE dbo.Products SET UnitPrice=UnitPrice*1.1 GO UPDATE [Order Details] SET Discount=Discount+0.05 WHERE Discount<>0 AND ProductId=2 GO UPDATE [Order Details] SET UnitPrice= (SELECT UnitPrice+ UnitPrice*0.2 FROM Products WHERE = ProductId=2 ) WHERE ProductId=2 7.4.3 Xa d liu trong c s d liu. 7.4.3.1 Dng cu lnh DELETE. Xa mt hoc nhiu dng trong mt bng hay mt truy vn.
DELETE table_or_view FROM table_sources WHERE search_condition

DELETE Orders Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 72

FROM Orders WHERE EmployeeID IN ( SELECT EmployeeId FROM Employees WHERE City='Seattle' ) 7.4.3.2 Dng APIs v cursors xo d liu (trnh by sau). 7.4.3.3 Dng cu lnh TRUNCATE TABLE. xa ton b d liu trong mt bng. V phn chc nng, hon ton ging nh cu lnh Delete. Nhanh hn cu lnh Delete Khng bt cc by li (trigger) C php:
TRUNCATE TABLE Tn Table

V d: TRUNCATE TABLE NewProducts

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 73

BI 8: KHUNG NHN - VIEW


8.1 Gii thiu v View. View l mt bng o m ni dung c nh ngha bi mt truy vn (cu Select). Ging nh mt bng thc, mt view bao gm mt tp cc ct v cc dng d liu. Tuy nhin, mt view khng l ni lu tr d liu. Cc dng v ct ca d liu c tham chiu t cc bng trong mt truy vn m nh ngha View v l kt qu ng khi View c tham chiu. Dng view : - Ch cho User xem nhng g cn cho xem. - n gin ha vic truy cp d liu. - Dng la chn nhng d liu cn thit ng vi mi user. - Dng View Import, Export. - Kt hp cc d liu khc nhau. Hn ch khi nh ngha View: - Khng bao gm cc mnh COMPUTER hoc COMPUTER BY. - Khng bao gm t kha INTO. - Ch c dng ORDER BY ch khi t kha TOP c dng. - Khng th tham chiu qu 1024 ct. - Khng th kt hp vi cu lnh T-SQL khc trong mt cng mt b lnh. - Khng th nh ngha ch mc full text trn View. Partitioned Views: Mt partition View kt ni theo chiu dc cc d liu phn tn t mt tp cc bng mt hay nhiu server, cc d liu s hin ln nh th l chng c ly t mt bng. C hai loi: Local partition view l view c tham chiu cc table v cc view khc nm trong cng mt serever. Distributed partition view c t nht mt bng nm server khc. 8.2 To, hiu chnh, xa View To View
CREATE VIEW [ < database_name > . ] [ < owner > . ] view_name [ (column [,...n ]) ] [ WITH < view_attribute > [,...n ] ] AS select_statement [ WITH CHECK OPTION ] < view_attribute > ::= { ENCRYPTION | SCHEMABINDING }

Gii thch view_name: l tn ca View. Tn View phi tun th cc qui tc nh danh. Column: Tn c dng cho ct trong view. Tn ct ch dng trong trng hp ct c pht sinh t mt biu thc, hm, mt hng, cc ct trong cc table trng tn. Tuy nhin tn ct cng c th c n nh trong cu lnh Select. Khng ch nh tn ct chnh l tn cc ct trong cu lnh select select_statement: L cu lnh select nh ngha View. N c th tham chiu mt hoc nhiu bng hoc cc View khc vi mt cu Select phc tp. Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 74

Lu : to mt view, bn phi c quyn dnh ring trn cc bng hoc view tham chiu trong nh ngha view. WITH CHECK OPTION: Bt buc tt c cc cu lnh hiu chnh d liu thc thi da vo View phi tuyt i tn trng trit n tp tiu chun trong cu lnh Select. Nu bn dng t kha ny, cc dng khng th c hiu chnh trong cch m ti sao chng hin trong view. Bt k hiu chnh no m s gy ra tnh trng thay i u b hy b, v mt li c hin ra. WITH ENCRYPTION: M ha cu lnh Select to ra view SCHEMABINDING: Kt view vi mt gin . Khi SCHEMABINDING c ch nh, cu lnh Select phi ch r ch quyn ca cc bng, cc view. Cc hm c tham chiu View hay bng tham gia trong view c to vi schema khng th xa tr phi view b xa hoc thay i c ch ny. Cu lnh Alter Table trn bng tham gia trong view cng b li. V d 1: Xem danh sch cc InvoiceNo v CustNo CREATE VIEW vwSim AS SELECT InvoiceNo, CustNo From tblSim Where InvoiceDate = Getdate() ORDER BY InvoiceNo Xem ni dung View Select * From vwSim V d 2: CREATE VIEW vwSales AS Select c.CustNo,c.CustName, sim.InvoiceNo, sim.InvoiceDate, sid.ItemNo, sid.Quatity From TblCustomer c INNER JOIN TblSim sim ON c.CustNo=sim.CustNo INNER JOIN TblSid sid ON sim.InvoiceDate = sid.InvoiceDate Xem ni dung View Select * From vwSales 8.3 To Partition view - Cc bng tham gia trong Partition view phi c cu trc ging nhau. - C mt ct c check contraint, vi phm vi ca Check constraint mi bng l khc nhau. - To view bng cch kt cc d liu bng t kha UNION ALL V d: Ta c 3 table tng ng dng lu tr cc khch hng 3 min Bc, Trung, Nam c cu trc to nh sau: Create Table KH_BAC Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 75

(Makh int primary key, TenKh Nchar(30), Khuvuc Nvarchar(30) CHECK (Khuvuc='Bac bo') ) Create Table KH_TRUNG (Makh int primary key, TenKh Nchar(30), Khuvuc Nvarchar(30) CHECK (Khuvuc='Trung bo') ) Create Table KH_NAM (Makh int primary key, TenKh Nchar(30), Khuvuc Nvarchar(30) CHECK (Khuvuc='Nam bo') ) To mt partition View gp 3 bng trn li vi nhau: Create View Khachhang AS Select * From KH_BAC UNION ALL Select * From KH_TRUNG UNION ALL Select * From KH_NAM 8.4 Truy xut d liu thng qua View. (Tng t nh truy xut d liu trn bng) 8.4.1 Xem d liu thng qua view. Dng cu lnh Select (V d trn) 8.4.2 Hiu chnh d liu thng qua View. Thao tc hiu chnh d liu ging thao tc hiu chnh d liu trn mt bng. Tuy nhin, view phi tha mn iu kin sau: - View ch tham chiu duy nht mt bng. - Thao tc Delete khng bao gi c php thc hin trn nhiu bng trong View. - Cc hm kt hp Group By, Union, Distinct, Top khng dng trong danh sch chn trong cu Select ca View. - Khng c cc ct tnh ton. V d: INSERT INTO Khachhang VALUES (11,ddddd,Nam bo)

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 76

Hiu chnh d liu thng qua partitioned View Khi dng lnh Insert v update phi tn trng cc qui tc sau: - Tt c cc ct phi c gi tr ngay c ct chp nhn null v ct c gi tr defaul. - T kha Defaul khng c s dng trong cu Insert, update. - Phi c gi tr ng ca ct c check constraint. - Cu lnh insert khng cho php nu bng thnh vin c ct c thuc tnh identity, ct timestamp. - Khng insert hoc Update nu c mt kt self-join trong cng view hay bng thnh vin. Khi dng lnh delete, ta c th xa cc mu tin trong bng thnh vin thng qua view. Lnh Delete khng thc thi nu c lin kt Sefl-join

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 77

BI 9: CHUYN I D LIU
9.1 Khi nim chuyn i v bin i d liu. Sau khi bn to CSDL ca bn, bn cn nhp cc mu d liu. Thng thng, bn thng a d liu vo (importing data) hoc hoc chuyn d liu (transfering) c sn t mt hoc nhiu ngun d liu khc n hoc i t SQL Server 2000. Trong bi ny chng ta nghin cu import d liu t ngun d liu khc, ng thi cng gii thiu cc cng c (Tool) chnh s dng importing data v bin i d liu (transforming data). Cc cng c l DTS, Bcp, v lnh BULK INSERT. 9.1.1 Import/Export d liu. Import d liu l qu trnh a d liu c sn t ngun d liu khc hoc chnh SQL Server vo trong SQL Server. Export l qu trnh ngc li vi import, a d liu ca SQL Server ra ngoi ngun d liu bn ngoi. Ngun d liu c th l mt CSDL hng th ba, bng tnh, tp tin vn bn (Text). Tuy nhin trc khi bn import/export d liu ny vo, bn phi thc hin cc tc v chun b c lng d liu bn ngoi v quyt nh cc bc s phi thc hin trong tin trnh import/export. Cc bc chun b ny cng s gip bn chn cng c thch hp dng - Quyt nh tnh nht qun (consistency) ca d liu hin c trong ngun d liu bn ngoi/bn trong. - Quyt nh nhng ct c a vo/a ra. - Quyt nh dng d liu (Format) ca d liu c sn nn hiu chnh n nht qun trong CSDL ch n (V d: Cn i dng ngy hoc chuyn gi tr s sang gi tr chui nh 1, 2, 3 chuyn thnh ngho, trung bnh, kh). - Quyt nh ct d liu c sn nn hiu chnh. - Quyt nh import/export d liu s l mt tc v thc hin mt ln hay mt tc v thc hin nh k. - Quyt nh cc truy xut d liu c sn l truy xut trc tip hay gin tip. - . 9.1.2 Bin i d liu (Data Transformations) Sau khi bn c lng d liu trong ngun d liu bn ngoi/bn trong, bn cn quyt nh cch tin hnh. i khi, nhng thay i d liu c th thc hin ngay trong ngun d liu bn ngoi nhng thng thng nhng thay i ny khng c th thc hin trong ngun d liu bn ngoi m khng hoc dng ng dng hin c (v d: thm ct hoc thay i nh dng ct) hoc tiu tn qu nhiu thi gian (v d: C gng thc p nht qun d liu ti ni s nht qun cha c. Nhng thay i ny c th hoc l sau khi d liu c import vo SQL Server, s dng cc bng tm v s dng cu lnh Transact-SQL lc v tinh ch d liu, hoc c th c thc hin trong tin trnh import vo chnh bng. Nhng thay i n d liu to trong tin trnh import v export c ni n nh cc bin i d liu. Mt bin i xy ra khi mt hoc nhiu thao tc hoc chc nng c p dng tng phn ti d liu trc khi d liu c chuyn n n ch n. D liu ti ngun th khng thay i. Bin i d liu thc hin mt cch d dng thc thi tinh ch d liu, chuyn i v xc nhn tnh hp l d liu phc tp trong sut tin trnh import v export. 9.1.3 Cc cng c chuyn i d liu (Data transfer tools) Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 78

SQL Server 2000 cung cp s cng c dnh cho vic import v export d liu. Cc cng c ny c nhng kh nng khc nhau trch lc tp cc d liu t ngun d liu c sn v chuyn i d liu. Bng di y m t ngn gn cc cng c chnh v kh nng ca n. Cc cng c chuyn i d liu v chc nng ca chng Cng c DTS M t DTS l mt cng c ha dng import, export, v transform d liu. DTS c th lm vic trc tip cc ngun d liu a dng. DTS to cc gi (package) m c th lp biu. DTS cng c th import v export cc luc i tng CSDL gia cc th hin (instance) ca SQL Server. Bcp l mt lnh tin ch ti du nhc c dng sao chp d liu t mt tp tin vn bn thnh mt bng hoc View ca SQL Server thng qua ODBC. Kh nng bin i d liu ca Bcp b gii hn v qui nh dng dng tp tin kh hiu. Lm vic vi CSDL ca MicroSoft hoc hng th 3 l mt tin trnh 2 bc.

Bcp

BULK INSERT l mt lnh Transact-SQL dng sao chp d liu t Lnh BULK mt tp tin vn bn ASCII thnh mt mt bng hoc View ca SQL INSERT trong Servers thng qua OLEDB. Cu lnh BULK INSERT cung cp chc Transact-SQL nng tng t nh Bcp (v cng hn ch) trong mt cu lnh TransactSQL v c th nhng trong mt gi DTS. 9.2 Dch v chuyn i d liu DTS (Data Transformation Services - DTS) DTS l mt tp cc cng c mnh m bn c th dng import, export, v transform d liu n v i t mt ngun v ch d liu a dng. 9.2.1 DTS Package. Mt DTS package l mt mt tp hp c t chc ca cc DTS Connection, DTS Task, DTS Package Workflow, DTS transformation. Mi package gm c mt hoc nhiu bc m c thc thi mt cch tun t hoc song song khi m package c chy. 9.2.2 DTS Connections. DTS Connection l cc kt ni n d liu ngun hay ch n. Data source connection: L mt kt ni n mt CSDL chun (nh l SQL Server, Access, dBase,), mt kt ni OLE DB n mt ngun d liu ODBC,.. File connection: L mt kt ni n mt tp tin vn bn Data link connection: Mt kt ni n mt tp tin trung gian m n lu tr mt chui kt ni to mt kt ni OLE DB m c thc hin ti thi im chy. 9.2.3 DTS Tasks. L mt tp cc chc nng ri rc, c thc thi nh l mt bc n trong mt package. Mi tc v (task) nh r mt mc cng vic l: - Thc thi mt cu lng T-SQL - Thc thi mt script - Khi ng mt ng dng m rng. Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000 - Sao chp cc i tng SQL Server. - Thc thi hoc ly cc kt qu t mt DTS package. Cc tc v c th trong DTS Designer Loi Tc v M t

Trang 79

Cc tc v m sao chp v qun Bulk l d liu v bin Task i d liu

Dng chy cu lnh T-SQL BULK INSERT t trong mt DTS package. Tc v ny h tr phng cch nhanh nht sao chp thng tin vo mt bng or Insert view, nhng n khng ghi nhn li (log) cc dng gy li. Nu bn cn gi li cc dng gy li vo mt tp tin, bn nn s dng tc v Transform Data task thay th.

Dng chy cc cu lnh Transact-SQL trong sut Execute SQL vic thc thi package. Bn c th thc hin mt s thao tc bao gm vic xa mt bng v chy mt th tc task bng Execute SQL task. Dng sao chp cc i tng ca CSDL ca SQL Server (siu d liu - meta data) t mt th hin ca Copy SQL SQL Server n th hin khc. Tc v ny c th chuyn cc i tng t mt th hin ca SQL Server Server Objects task 7.0 n th hin khc; t mt th hin ca SQL Server 7.0 n SQL Server 2000; hoc t th hin ca SQL Server 2000 n th hin khc ca SQL Server 2000. Mt tp hp cc task m chp thng tin server-wide (Copy SQL Server Objects task ch sao chp thng tin c bit ca CSDL) t mt th hin ca SQL Server Transfer n th hin khc. Nhng tc v ny bao gm Transfer Database Database task, Transfer Error Messages task, Transfer Objects tasks Logins task, Transfer Jobs task, v Transfer Master Stored Procedures task. Cc tc v ny c s dng bi Copy Database Wizard. Cc tc v m Transform transform data Data task Sao chp, bin i v chn d liu t mt data source n mt data destination. Tc v ny th hu ht thc hin c bn ca ng c bom d liu (data pump engine) trong DTS.

Chn, ty chn, v thc thi mt ca vi thao tc Transact-SQL (nh l update hoc delete) trn mt Data Driven dng da trn d liu trong dng. S dng tc v ny Query task nu Transform Data task v Bulk Insert task khng ph hp vi cc yu cu ca ng dng ca bn. Cc tc v m ActiveX chc nng nh Script task l cc cng vic Dynamic Properties task chy mt ActiveX script. Bn c th dng tc v ny vit code thc hin cc chc nng m khng c sn trong DTS Designer. Truy xut d liu tr mt ngun bn ngoi v gn gi tr truy xut c cho cc thuc tnh package c chn. External sources c th l mt tp tin .INI, tp tin Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000 Loi Tc v

Trang 80 M t d liu, truy vn, bin ton cc, bin mi trng, hoc mt hng s.

Dng chy DTS package khc nh l mt phn ca workflow. Khng dng tc v ny mt cch quy bi Execute Package task v n c th sinh ra trn stack, m u ny c th dn n MMC b shut down. Dng chy mt chng trnh hoc tp tin b lnh c kh nng thc thi. Tc v ny c th c dng m bt k application chun no , nh l Microsoft Execute Process task Excel, nhng n c s dng chnh l chy cc tp tin b lnh hoc cc ng dng thng mi m n lm vic vi mt data source. Dng Download d liu t mt t mt server t xa bi Protocol task hoc mt Internet location s dng File Transfer FTP. FTP task v Ftp.exe dng cng mt phng php kt ni. Dng gi mt thng bo e-mail message nh l mt tc v. V d, thng bo c th c gi n nh qun Mail tr v s thnh cng hay tht bi ca mt thao tc d phng (backup). s dng tc v ny, bn cn ci t mt MAPI client th hin ca SQL Server m bn ang chy.

Send task

9.2.4 DTS Package Workflow. Workflow l lu lm vic ca DTS Package. Bn c th nh r th t thc thi ca cc bc trong mt package vi rng buc u tin. Unconditional: Nu Task 2 c kt ni vi task 1 bi mt rng buc unconditional th Task 2 s phi i cho n khi Task 1 hon tt v sau n s c thc thi, bt chp s thnh cng hay tht bi ca Task 1 On Success: Nu Task 3 c kt ni vi Task 2 bi rng buc On Success th Task 2 s i cho n khi Task 2 hon tt, v sau s thc thi nu Task 2 hon tt mt cch thnh cng. On Failure Nu Task 4 lin kt vi Task 2 bi mt rng buc On Failure, Task 4 s i cho n khi Task 2 hon tt v sau s ch thc thi nu Task 2 failed th hon tt mt cch thnh cng. Cc Task khng c cc rng buc u tin thc thi song song 9.2.5 DTS Package Storage. Bn c th lu mt DTS package vo SQL Server 2000, SQL Server 2000 Meta Data Services, mt tp tin Microsoft Visual Basic, hay mt tp tin lu tr c cu trc. Khi bn lu mt DTS package th tt c DTS connections, tasks, transformations, v workflow u c lu li. 9.3 Thc hin vic bin i v chuyn i d liu bng cng c ha DTS. 9.3.1 DTS Import/Export Wizard Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 81

L mt cch n gin to mt DTS packages sao chp d liu gia cc ngun d liu nhng n b gii hn i vi nhng bin i d liu phc tp, thm nhiu task v cc lu tc ph phc tp. DTS Import/Export Wizard c sn sng trong Enterprise Manager. 9.3.2 DTS Designer Cho php bn to mi hoc hiu chnh package bng cc i tng ha h tr xy dng DTS package k c cc lu phc tp. DTS Designer sn dng trong Data Transformation Services cha trong Enterprise Manager. Cc bc to mt package M mi mt package. Khai bo cc connection. To cc tc v (task) cn thc hin. Qui nh cc Wokflow gia cc tc v nu cn. Lu, thc hin package nu cn. 9.3.2.1 Thao tc m mt Package M mi mt Package: Trong Enterprise Manager, nhn nt phi chut ti Data Transformation Services v chn New Package. M mt Package c sn: Khi m (open) mt package c sn trong Data Transformation Services tu thuc vo cch m DTS pakage c lu tr nh th no. Package lu trong tp tin c cu trc: - R_Click ti Data Transformation Services - Chn Open Package m tp tin t a. Package lu trong SQL Server. - Click ti hp Local Packages trong Data Transformation Service. - Double-click vo tn ca DTS package cn m. Package lu trong Meta data Services Package. - Click ti nhnh Meta data Services Package trong Data Transformation Service. - Double-click vo tn ca DTS package cn m. Trong ca s DTS Designer cho php bn to cc kt ni ha n ngun v ch n d liu. Cu hnh cc DTS tasks, thc hin cc DTS transformation, v ch nh cc rng buc u tin. Bn dng phng php drag v drop v bn tt cc hp thoi cho cc i tng to cc DTS package trong trang thit k. Hnh bn di hin th giao din ngi dng ng vi DTS Designer

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 82

Hnh 27: Giao din thit k DTS 9.3.2.2 Khai bo connection Bc 1: Chn ngun d liu (Data Source) - Drag mt i tng data source t thanh cng c Connection vo ca s thit k hoc chn Connection loi data source Hp thoi Connection Properties xut hin khc nhau ty vo s chn la data source. - Hon tt hp thoi ch nh data source.

Hnh 28: Kt ni n SQL Server bng Microsoft OLE DB Provider for SQL Server Bc 2: Chn la v cu hnh mt data destination. Tng t nh cu hnh mt Data Source

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 83

Hnh 3 hin th mt bng thit k gm 3 data source: 2 kt ni n Microsoft OLE DB Provider for SQL Server v mt k ni n mt tp tin vn bn (Source).

Hnh 29: Ci t mt data Destination. Lu : Mt Connection n tp tin vn bn th phi xc nh r l mt Text file (Source) hoc Text file (Destination). 9.3.2.3 nh ngha cc tc v (Task) m bn mun thc hin S dng hoc thc n Task hoc thanh cng c Task. Lu : - Nu bn chn tc v Transform d liu, bn c nhc nh xc nh data source v data destination. Khi mt mi tn mu xm xut hin tr t data source n data destination. - Nu bn chn bt k tc v khc th mt hp thoi s xut hin nhc nh bn cu hnh thuc tnh ca tc v. Tc v xut hin trong ca s thit k nh l mt biu tng. Hnh bn di hin th 3 tc v Transform Data v mt tc v SQL thc hin (Execute) to mt bng.

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 84

Hnh 30: Mt DTS vi 3 tc v transform data v mt tc v Execute SQL 9.3.2.4 Hiu chnh tc v. hiu chnh v ty chn mt tc v transform d liu, double-click vo mi tn xm gia data source v data destination m hp thoi cho tc v ny. Trang Source: nu data source l mt CSDL, bn c th lc cc d liu c sao chp t cc bng hoc View c th c chn hoc s dng mt truy vn Transact-SQL. Hnh 5 hin th mt truy vn Transact-SQL c dng lc d liu c import.

Hnh 31: S dng mt truy vn lc d liu import. Trang Destination: bn c th xc nh thng tin v d liu c import (nh l cc ct ch n). Nhng s la chn ca bn s bin i ty vo data destination. Nu data destination l mt CSDL, bn c th to v nh ngha mt bng mi hoc chn mt bng c sn import d liu vo.

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 85

Hnh 32: Trang Destination ca hp thoi thuc tnh ca tc v transform data Trang Transformations: bn c th thit lp s bin i d liu theo ngi dng. Theo mc nhin, cc ct ngun s c sao chp n cc ct ch m khng cn hiu chnh. To mi hoc hiu chnh s chuyn d liu gia data source v data destination: - Chn ct m bn mun c s hiu chnh trong danh sch tn xung hoc bng cch click vo mi tn gia source v destination. - Click vo nt New hoc Edit to mt transformation mi hoc hiu chnh mt transform c sn. (double-click vo mi tn mu en hiu chnh mt transforrm). Nu bn click vo nt New, bn c th chn kiu transform m bn mun t danh sch cc transform sn sng trong vic to mi mt transform.

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 86

Hnh 33: Trang Tranformations ca hp thoi thuc tnh ca tc v transform data

Hnh 34:To mt transform mi Nu bn chn ActiveX Script t hp thoi Create New Transformation, bn c th to mt transform script mi thc thi cc transform phc tp hn xem hnh 10 Trang Lookups: bn c th nh ngha mt truy vn d tm. Mt truy vn d tm i hi mt data connection chy cc truy vn v cc th tc (stored procedure) tng ng vi mt data source v data destination. S dng mt truy vn d tm tm ra thng tin dng Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 87

danh sch, thc thi cc cp nht song song trn h thng nhiu CSDL, xc nhn tnh hp l nhp vo trc khi ti d liu, gi cc th tc trong s tr li n iu kin nhp d liu v s dng cc gi tr bin ton cc nh l cc tham s ca truy vn. Trang Options: bn nh ngha mt s thuc tnh thm vo cho transform. Bn c th nh ngha mt hoc nhiu tp tin ngoi l (exception file) dng ghi nhn li cc exception record trong sut qu trnh thc thi package. Tp tin ny c th trn a cc b hoc mng. Bn c th tch cc li ca source v destination trong cc tp tin ring l. Bn cng c th nh s li ti a cho php trc khi vic thc thi package b dng. Cui cng, bn cng c th xc nh cc thuc tnh thc thi c bit khi destination connection l Microsoft OLE DB Provider for SQL Server. Cc thuc tnh ny bao gm vic ch nh thc thi bulk-copy vi tc cao, kim tra rng buc trong sut qu trnh thc thi package, kiu kha, kch c ca khi, v nhn dng cc thuc tnh chn.

Hnh 35: Trang khai bo mt s option

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 88

Hnh 36: To mt transformation script mi Mt khi bn c ci t mt tc v Data Transformation task v bt k cc tc v DTS khc th DTS package s thc thi, bn phi cu hnh cc rng buc quyn u tin. Trong v d, chng ta c 2 data source ring l chp n data destination. Chng ta cng c mt tc v to bng (Create Table task). Bn dng rng buc quyn u tin xc nh th t ca vic thc thi mi tc v. thit lp u tin ca khi cng vic, hy chn 2 hay nhiu bng theo th t tc v s c thc thi v sau chn loi workflow t thc n Workflow. V d: Nu tc v Create Table phi thc thi trc khi sao chp d liu n data destination, Hy chn rng buc u tin l On Success t thc n Workflow. Xem hnh. Bn c th to mt tc v Send Mail v cu hnh rng buc u tin On Failure precedence gia tc v to bng (Create Table) v tc v gi mail (Send Mail). iu ny c ngha l s gi mt thng bo e-mail n nh qun tr nu tc v Create Table b faile. Khi bn ang dng t ng hon ton hay cc DTS packages c lp lch thc thi cc qu trnh hot ng ca CSDL th thng bo li l cn thit 9.4 Dng BULK COPY (BCP) v BULK INSERT Bulk copy l mt giao din chng trnh ng dng (Application Programming Interface API) c xy dng trong SQL Server m cho php xut nhp d liu mt cc hiu qu. Ta dng BCP trong trng hp trong mt ln ta mun chuyn mt s lng ln d liu t Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 89

cc h qun tr CSDL khc vo trong SQL Server. BCP l mt phng php c bn chuyn i d liu vo ra SQL Server. BCP l mt API c nh ngha bi SQL Server 2000. Hin nay, giao din ny ch c a ra thng qua ODBC (Open Database Connectivity- H thng kt ni CSDL m) v DB-LIB (DataBase Library). SQL Server cung cp mt tin ch (BCP.EXE) m hu ht ngi dng quen ngh l BCP. Ta c 2 phng php xut nhp d liu l CBP command-line utility, v BULK INSERT Transact-SQL statement. Dng d liu Dng d liu Native bcp Switch -n Lnh Bulk Insert DataFiletype=native ngha Kiu d liu l t nhin, khi cp nht phi tn nhiu thi gian chuyn i kiu d liu Kiu d liu l CHAR cho tt c cc ct Kiu d liu l Unicode char cho tt c cc d liu, c th mt s d liu s b mt nu kiu d liu ca Source v Destination khng trng nhau.

Character Unicode character

-c -w

DataFiletype=char DataFiletype=widechar

Unicode Native

-N

DataFiletype=widenative Kiu d liu l Native cho nhng d liu khng l kiu Char, v dng Unicode cho nh d liu kiu char (char, Varchar, nchar, text)

BCP Command-line Utily: l mt hm n gin ca Bulk Copy, thc thi ti du nhc lnh, dng sau chp d liu vo SQL Server hoc xut d liu ra thnh mt tp tin d liu. Mun dng c bcp, th trc tin d liu trong chng trnh ngun (mt DBMS khc) phi c sang mt tp tin d liu vo sau mi chuyn d liu t tp tin data vo table ca SQL. Ngc li, bcp s chuyn d liu t mt table thnh mt tp tin dnh cho chng trnh khc chng hn nh Excel. Data file: l mt tp tin h thng hot ng, dng cha d liu Import vo SQL Server (gi l Source) hoc tp tin cha d liu khi dng Export (gi Destination) .
bcp [database_name.][owner].]table_name in | out data_file [-c | -n | w | N] [-T]

V d: bcp Northwind..customers out d:\data\kh.txt -c T -T: ch nh l Connect trc tip vi Server ang log on SELECT * INTO Cust FROM Customers TRUNCATE TABLE Cust bcp Northwind..cust IN d:\data\kh.txt -c T

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 90

CU LNH BULK INSERT: dng chuyn mt d liu vo bng ca SQL Server t mt tp tin d liu khc. Cu lnh Bulk insert khng th a d liu t bng ca SQL Server ra thnh tp tin d liu dnh cho chng trnh khc. Tuy vy, n li l mt cu lnh trong T-SQL nn c th c dng mt cch thun tin trong cc hm hoc th tc trong SQL Sever.
BULK INSERT 'database_name' [ 'owner' .] 'table_name' FROM 'data_file' [ WITH (DATAFILETYPE = 'char' | 'native'| 'widechar' | 'widenative') ]

BULK INSERT dbo.Employees FROM 'C:\DATA\Employees.TXT' WITH (DATAFILETYPE ='widechar') BULK INSERT dbo.Customers FROM 'C:\DATA\Customers.TXT' WITH (DATAFILETYPE ='widechar') Lu : - S ct hoc s th t ca cc ct ca file text v ca bng khng tng thch th khng chn d liu vo c. Cch gii quyt? - Nu trong file Text c gi tr ca ct Identity th s chp nhn gi tr , nu khng c th n t pht sinh. - Khi Export vo mt tp tin, tp tin s b ghi d nu nh tp tin hin tn ti. - Khi BCP ang import d liu vo bng, ngi dng khc vn c th ang dng bng . Nhng dng c Import ch hin hu khi tp lnh import kt thc. - Khi BCP ang import d liu, ngi dng khc vn truy xut d liu bnh thng. - Khi ang import d liu vo bng, c 2 phng php c th s dng: Logged v nologged BCP.

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 91

BI 10: C BN V LP TRNH BNG TRANSACT- SQL


10.1 Khi nim c bn. 10.1.1 nh danh -IDENTIFIERS. Tn ca tt c cc i tng u c gi l nh danh. Mi th trong SQL Server u c mt nh danh, trong bao gm Servers, Databases, v cc i tng (Object) ca CSDL nh bng, Views, ct, ch mc, rng buc,. C nhng i tng bt buc phi qui nh mt nh danh, ngc li c mt s i tng khng cn nh danh (SQL Server s t ng nh danh) V d: CREATE TABLE Table1 (Keycol INT PRIMARY KEY, Description NVARCHAR(30)) Qui tc nh danh: - Ti a 128 k t. - Bt u l mt k t thng thng A -> Z - Bt u l mt k hiu (@, #) s c mt ngha khc. - Nhng nh danh no c khong trng gia th phi kp trong du [ ] hoc - t cc nh danh sao cho ngn gn, u ngha, phn bit gia cc i tng vi nhau, khng trng lp, khng trng vi t kha ca T-SQL. 10.1.2 Tham chiu n cc i tng trong SQL Server. - Tn y : Server.database.ower.object - Tn ngn: Nu l local server th ta khi ch Server, nu CSDL hin hnh th khng cn ch Database, Owner mc nh l user name trong Database. Nu Tham chiu tng minh th tng tc. V d: CREATE TABLE Northwind.dbo.orederhist CREATE TABLE Northwind..orederhist Database Owner (dbo) Dbo l mt ngi dng m c y cc quyn thao tc trong CSDL. Bt k mt thnh vin thuc nhm sysadmin ng vai tr ngi dng CSDL c gi l dbo. Cng nh bt k mt i tng no c to bi bt k thnh vin thuc nhm sysadmin th mc nhin thuc dbo. V d: nu ngi dng Andrew l thnh vin ca nhm sysadmin to bng T1, th T1 thuc ch quyn dbo v n thuc dbo (dbo.T1), khng thuc Andrew (khng l Andrew.T1). Ngc li, nu Andrew khng l thnh vin ca sysadmin nhng ch l mt thnh vin ca db_owner v to bng T1, T1 thuc v Andrew v t cch gi l Andrew.T1.

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 92

User dbo khng bao gi b xa v n lun lun hin hu trong mi CSDL. Ch c nhng i tng c to bi thnh vin ca sysadmin (hoc bi user dbo) th thuc v dbo. 10.1.3 Kiu d liu (DATA TYPE). Kiu d liu l mt nh ngha xc nh loi d liu m i tng c th cha ng. Ct, tham s, bin, gi tr tr v ca hm, th tc, tt c u phi c kiu d liu. C 2 loi kiu d liu: System-Supplied datatype v User-defined data types ( c trnh by trong bi trc) 10.1.4 Batch Batch l mt tp cc pht biu T-SQL nm lin tip v kt thc bi pht biu GO, v c bin dch ng thi bi SQL Server. V d: USE pubs GO /* Signals the end of the batch */ CREATE VIEW auth_titles AS SELECT * FROM authors GO /* Signals the end of the batch */ SELECT * FROM auth_titles GO /* Signals the end of the batch */ Lu : - Cc pht biu trong 1 batch c bin dch thnh mt nhm. - Nu mt trong pht biu ca batch b li th batch cng xem nh li. - Cc pht biu Create b rng buc trong mt batch n, tc trong batch ch c pht biu Create. Cc pht biu l: Create DataBase, Create Table, Create Index, 10.1.5 Kch bn - SCRIPT Mt Script l mt tp ca mt hay nhiu b lnh c lu li thnh mt tp tin .SQL 10.2 Bin (VARIABLES) Bin l mt i tng trong tp lnh T-SQL m n dng lu tr d liu. Sau khi bin c khai bo hoc nh ngha, mt cu lnh trong tp lnh s gn gi tr cho bin v

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 93

cng c th mt cu lnh khc s ly gi tr ca bin ra dng. Phi c khai bo trc khi dng. Bin c dng : - m s ln lp c thc hin hoc dng iu khin vng lp - Dng lu gi tr d liu c kim tra mt s lnh iu khin - Lu tr gi tr tr v t mt store Procedure - Cc loi bin: c 2 loi bin l bin cc b (local) v bin ton cc (Global). Bin kiu Global c SQL Server a ra v bn c th dng bt c khi no v cng khng cn khai bo (c xem nh l nhng hm chun ca SQl Server). Local variable - c khai bo trong phn thn ca mt b lnh hoc mt th tc. - Phm vi hot ng ca bin bt u t im m n c khai bo cho n khi kt thc mt l (batch) hoc stored procedure hoc Function m n c khai bo. - Tn ca bin bt u @ Khai bo:
DECLARE @var_name var_type

Gn gi tr cho bin: Nu bin va khai bo xong th bin mc nhin c gn gi tr l NULL. gn bin ta dng lnh SET hoc dng cu lnh SELECT
SET @var_name = expression SELECT { @var_name = expression } [,...n ]

V d 1: USE Northwind DECLARE @EmpIDVar INT SET @EmpIDVar=3 SELECT * FROM [Orders] WHERE V d 2: DECLARE MyVariable INT SET @MyVariable = 1 GO im kt thc mt l batch. -- @MyVariable vt qu phm vi v n ht tn ti -- Cu lnh SELECT sau s nhn li sai c php bi v n khng tham chiu c bin @MyVariable. SELECT * FROM [Orders] WHERE V d 3: USE Northwind Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000 GO -- Khai bo 2 bin. DECLARE @FirstNameVariable NVARCHAR(20), @RegionVariable NVARCHAR(30) -- Gn gi tr cho 2 bin. SET @FirstNameVariable = N'Anne' SET @RegionVariable = N'WA'

Trang 94

-- Dng chng trong mnh WHERE ca lnh SELECT. SELECT LastName, FirstName, Title FROM Employees WHERE FirstName = @FirstNameVariable OR Region = @RegionVariable GO V d 4: USE Northwind GO -- Khai bo 1 bin DECLARE @EmpIDVariable INT -- Gn gi tr bin bng cu lnh Select SELECT @EmpIDVariable = MAX(EmployeeID) FROM Employees GO -- Nu cu Select tr v l mt tp gi tr th bin s nhn gi tr sau cng. V d 5: DECLARE @ProdIDVariable int SELECT @ProdIDVariable = ProductID FROM Northwind..Products V d 6: USE Northwind GO DECLARE @EmpIDVariable INT SELECT @EmpIDVariable = EmployeeID FROM Employees ORDER BY EmployeeID DESC SELECT @EmpIDVariable GO Global variable trong SQL Server 2000 gi l System Function: T SQL Server 7.0 bin Global c nh ngha nh l hm h thng. Mi kt ni s to ra mt session, SQL Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 95

Server to ra sn mt s bin c sn rt tin ch trong vic lp trnh v qun tr h thng. Cc bin ny khng c kiu, tn bt u @@. Mt hm h thng thng dng:
@@VERSION @@TRANCOUNT

phin bn ca SQL Server v h iu hnh SELECT @@VERSION Xem coi c bao nhiu transaction ang m IF (@@TRANCOUNT > 0) BEGIN RAISERROR('Task cannot be executed within a transaction.', 10, 1) RETURN END Tr v s dng b nh hng i vi lnh thc thi gn nht V d 1: USE Northwind UPDATE Employees SET LastName = 'Brooke' WHERE LastName = 'Brook' IF (@@ROWCOUNT = 0) BEGIN PRINT 'Warning: No rows were updated' RETURN END V d 2: UPDATE Customers SET Phone =030 + Phone WHERE Country=Germany PRINT @@ROWCOUNT

@@ROWCOUNT

@@IDENTITY

tr v s Identity pht sinh sau cng CREATE TABLE TABLE_HD ( mahd int Identity Primary Key, Ghichu varchar(20) ) CREATE TABLE TABLE_CTHD ( Mahd int, Masp char(10), Soluong int) declare @maso Int Insert into Table_HD Values ('Mau tin 1') Insert into Table_HD Values ('Mau tin 2') set @maso= @@IDENTITY Insert into Table_CTHD values (@maso, 'sp001',5) Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000 Insert into Table_CTHD values (@maso, 'sp002',10) -- Kim tra SELECT * FROM Table_HD SELECT * FROM Table_CTHD
@@ERROR @@FETCH_STATUS

Trang 96

Tr v li s (STT li) ca lnh sau cng m SQL thc thi, l 0 c ngha l cu lnh thc thi hon thnh. Tr v trng thi ca lnh Fetch ca bin con tr c thnh cng hay khng (0: Thnh cng, -1: b li hoc vt qu phm vi; -2: Tht bi)

Mt s hm thng dng:
GetDate() Month(Date); Year(Date) DateAdd(Datepart, Number, Date) DATEDIFF (datepart, startdate, enddate) DATEPART (datepart, date) CAST (expression AS data_type) CONVERT (data_type [ (length) ], expression [, style ]) LOWER (character_expression) UPPER (character_expression) REPLACE ('string_expression1', 'string_expression2', 'string_expression3') DIFFERENCE (character_expression, character_expression)

Ly ngy, gi hin hnh ca h thng Ly thng, nm ca ngy Date Cng thm Date mt gi tr s Khong chnh lch gia startdate v enddate Tr v s nguyn biu din datepart no ca ngy c ch nh Dng chuyn i kiu d liu Dng chuyn i kiu d liu Chuyn sang ch thng Chuyn sang ch hoa Thay th chui biu thc So snh 2 biu thc

V d: USE pubs SELECT 'The price is ' + CAST(price AS varchar(12)) FROM titles WHERE price > 10.00 GO -- Use CONVERT. USE pubs SELECT SUBSTRING(title, 1, 30) AS Title, ytd_sales FROM titles WHERE CONVERT(char(20), ytd_sales) LIKE '3%' GO Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 97

10.3

Cu trc iu khin. T-SQL cung cp mt s cu trc iu kin c bn bn c th thc thi mt khi lnh da trn kt qu ca mt php so snh. N cng tng t nh mt s ngn ng lp trnh khc.

10.3.1 Khi BEGIN END Nu bn cn nhiu pht biu c thc thi vi nhau th ta t cc pht biu trong cp Begin End. N c hu dng trong cc cu trc iu khin. 10.3.2 Pht biu PRINT Pht biu PRINT: Dng in thng tin ra mn hnh kt qu ca SQL
PRINT 'any ASCII text' | @local_variable | @@FUNCTION | string_expr

V d: PRINT Hello! PRINT NCho bn PRINT @@VERSION 10.3.3 Cu trc iu khin IF ELSE L mt cu trc iu kin, cho php thc thi mt hoc nhiu pht biu ty thuc vo mt iu kin no . cu lnh thc thi mt khi cc cu lnh theo mt iu kin no . C php:
IF condition {statements} [ ELSE [Condition 1] {statements}]

Condition: l mt biu thc logic, c gi tr True hoc False.Ty thuc vo condition, mt trong hai khi lnh s c thc thi. V d 1: Kim tra xem trong Customers ca NorthWind c cha cc khch hng n t Germany khng? USE NorthWind IF (SELECT COUNT(*) FROM Customers WHERE Country='Germany') > 0 BEGIN Print ' C tn ti cc khch hng t Germany trong c s d liu.' Print ' statements to process German customers' END Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000 ELSE

Trang 98

BEGIN PRINT ' Khng c khch hng n t Germany trong c s d liu.' END V d 2: USE pubs GO DECLARE @msg varchar(255) IF ( SELECT COUNT(price) FROM titles WHERE title_id LIKE 'TC%' AND price BETWEEN 10 AND 20) > 0 BEGIN SET NOCOUNT ON SET @msg = 'C vi quyn sch c gi t $10 n $20. Cc sch l:' PRINT @msg SELECT title FROM titles WHERE title_id LIKE 'TC%' AND price BETWEEN 10 AND 20 END ELSE BEGIN SET NOCOUNT ON SET @msg = 'Khng c quyn sch no c gi t $10 n $20. Bn nn tham kho cc quyn sch c gi nh hn $10 sau y.' PRINT @msg SELECT title FROM titles WHERE title_id LIKE 'TC%' AND price < 10 END V d 3: USE pubs IF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') < $15 BEGIN PRINT 'The following titles are excellent mod_cook books:' PRINT ' ' SELECT SUBSTRING(title, 1, 35) AS Title FROM titles WHERE type = 'mod_cook' Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000 END ELSE

Trang 99

IF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook')> $15 BEGIN PRINT 'The following titles are expensive mod_cook books:' PRINT ' ' SELECT SUBSTRING(title, 1, 35) AS Title FROM titles WHERE type = 'mod_cook' END 10.3.4 Biu thc CASE. Biu thc CASE l mt biu thc iu kin c p dng bn trong mt pht biu khc. Case tr v cc gi tr khc nhau tu thuc vo iu kin hoc mt iu khin no . Dng 1:
CASE input_expression WHEN when_expression THEN result_expression [ ...n ] [ ELSE else_result_expression ] END

Dng 2:
CASE WHEN Boolean_expression THEN result_expression [ ...n ] [ ELSE else_result_expression ] END

V d 1: Cho 2 s a v b, so snh 2 s , s no ln hn s no? DECLARE @a As int, @b As int, @ketqua as nvarchar(30) SET @a=3 SET @b=5 SET @ketqua = CASE WHEN @a<@b THEN N'A nh hn B' -- When ch dng trong case WHEN @a<@b THEN N'A ln hn B' ELSE N'A bng B' END -- END ca CASE Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000 PRINT @ketqua

Trang 100

V d 2: Da vo price ca cc title cho bit price nh th no? Use Pub SELECT title, price, 'classification'=CASE WHEN price < 10.00 THEN 'Low Priced' WHEN price BETWEEN 10.00 AND 20.00 THEN 'Moderately Priced' WHEN price > 20.00 THEN 'Expensive' ELSE 'Unknown' END FROM titles V d 3: Cho bit ngha ca on lnh sau: USE NorthWind SELECT ProductID, Quantity, UnitPrice, [discount%]= CASE WHEN Quantity <=5 THEN 0.05 WHEN Quantity BETWEEN 6 and 10 THEN 0.07 WHEN Quantity BETWEEN 11 and 20 THEN 0.09 ELSE 0.1 END FROM [Order Details] ORDER BY Quantity, ProductId V d 4: ngha ca on lnh sau? SELECT title, pub_id, CASE WHEN price IS NULL THEN (SELECT MIN(price) FROM titles) ELSE price END FROM titles 10.3.5 Cu trc vng lp WHILE L pht biu iu khin vng lp. Vng lp s thc hin cho n khi biu thc iu kin (Boolean_expression) trong While mang gi tr False. Biu thc iu kin c th l mt cu SELECT.
WHILE Boolean_expression { sql_statement | statement_block } [ BREAK ]

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000


{ sql_statement | statement_block } [ CONTINUE ]

Trang 101

[ BREAK ] : Dng kt thc vng lp khi gp mt trng hp c th no . [ CONTINUE ] : Lp li u vng lp. Thng thng 2 t kha Break v Continue phi nm trong trong cu trc If Else.. V d 1: Trong khi n gi trung bnh vn cn nh hn $30 th cp nht cc n gi tng ln gp i n gi c. USE pubs GO WHILE (SELECT AVG(price) FROM titles) < $30 BEGIN UPDATE titles SET price = price * 2 SELECT MAX(price) FROM titles IF (SELECT MAX(price) FROM titles) > $50 BREAK ELSE CONTINUE END PRINT 'Too much for the market to bear' 10.3.6 Lnh RETURN
RETURN [ integer_expression ]

Nu gp pht biu Return, qu trnh x l s kt thc i khi ta dng RETURN trong th tc th tc c th tr thnh hm nh cc ngn ng khc. 10.3.7 Lnh WAITFOR L mt ch th cho SQL Server tm dng mt thi gian trc khi x l tip cc pht biu sau .
WAITFOR { DELAY 'time' | TIME 'time' }

Time: c vit thao dng hh:mm:ss, ti a l 24 gi DEPLAY Time: H thng tm dng trong khong thi gian Time. TIME Time: H thng c tm dng n thi gian Time ch ra. WAITFOR 02:10 WAITFOR 02:10 10.3.8 Lnh RAISERROR Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 102

Pht sinh li ca ngi dng. Ngi dng c th pht sinh cc li t bng sysmessage hoc xy dng li ng ty thng tin ca ngi dng. Sau khi mt li c nh ngha th n c gi n ngi dng nh l mt li h thng.
RAISERROR ({ msg_id | msg_str } {, severity, state } [, argument [,...n ] ]) [ WITH option [,...n ] ]

msg_id: l m thng bo, n c lu trong bng sysmessage. M thng bo ca ngi dng nh ngha phi c bt u t trn 50000 msg_str : Ni dung thng bo, ti a 400 k t. truyn tham s vo trong thng bo th dng dng %<Loai k t> Loi k t l d, i, o, x, X, hoc u Cc k t d hoc I O P S U x or X M t Biu hin l s nguyn (integer) Octal khng du Con tr Chui So nguyn khng du Hexadecimal khng du

Lu : s float, double, char khng c h tr severity: nghim kht ca thng bo Severity Levels: Mc li ca mt thng bo li cung cp mt s biu th loi vn m SQL Server gp phi. - Mc li 10 l li v thng tin v biu th nguyn nhn do thng tin nhp vo. - Mc li t 11 n 16 th thng thng l do cc user. - Mc t 17 n 25 do li phn mm hoc phn cng. Bn nn bo cho nh qun tr h thng bt c khi no s c xy ra. Nh qu tr h thng phi gii quyt s c v theo di chng thng xuyn. Khi mc li 17,18,19 xy ra, bn c th tip tc lm vic mc d bn khng th thc thi lnh c bit. - Mc li 17: Nhng thng bo ny cho bit rng cu lnh nguyn nhn SQL Server cn kit ti nguyn (V d nh lock hoc khng gian a cho CSDL) hoc vt qu tp gii hn bi nh qun tr - Ngi qun tr h thng nn gim st tt c cc s c m c pht ra mc trm trng t 17 n 25 v in ra gii thch li m bao gm cc thng tin quay li t li. Nu s c nh hng n ton b mt CSDL, bn dng DBCC CHECKDB (Database) xc nh phm vi ca s thit hi. DBCC c th xc nh mt vi i tng m phi b di chuyn v s ty phc hi s thit hi. Nu thit hi l ln, CSDL c th khng phc hi c. Trong trng hp c bit, ngi dng nh ngha thng bo li vi RAIERROR, dng m li trn 50000 v mc li trm trng t 0 n 8. Ch c nh qun tr h thng c th pht hnh li vi mc trm trng t 19 n 25. Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000 -

Trang 103

Mc li t 20 n 25 ch ra s c h thng. l li khng trnh c, m c ngha l tin trnh khng cn ang chy. Tin trnh t lit trc khi n dng, ghi nhn thng tin v ci g xy ra, v sau kt thc. state: L mt s nguyn ty t 1 n 127 m n m t thng tin din gii v trng thi li. Argument: L tham s dng trong vic thay th cho bin nh ngha thng bo li hoc thng bo tng ng vi m li msg_id. C th khng hoc c nhiu tham s. Tuy nhin, khng c qu 20. Mi tham s thay th c th l mt bin local hoc bt k mt trong cc kiu d liu int, char, varchar, binary, varbinary. Cc kiu khc khng c cung cp. Thm mt li mi ca ngi dng nh ngha:
Sp_addMessage msg_ID, severity, 'msg' [, 'language' ] [, 'with_log' ] [, 'replace' ]

Xa mt li ca ngi dng
sp_dropmessage Msg-ID

Gii thch msg_id: l m s ca li mi, l mt s int, khng c trng cc m c sn, bt u l 50001. severity: l mc li ca li, l mt s smallint. Mc hp l l t 1 n 25. Ch c ngi qun tr CSDL mi c th pht sinh thm mt thng bo li mi t 19 n 25. 'msg': l mt chui thng bo li, ti a 255 k t. 'language': l ngn ng ca thng bo li, khng ch nh t mc nh l ngn ng ca phin kt ni. 'with_log': thng bo li c c gi nhn vo nht k ca ng dng khi n xy ra hay khng, mc nh l FALSE. Nu l true, th li lun lun c ghi vo nht k ng dng. Ch c nhng thnh vin thuc sysadmin server role mi c th s dng tham s ny. 'replace': nu c ch nh chui REPLACE, th thng bo li tn ti c ghi bi chui thng bo mi v mc li mi. Tham s ny phi ch nh nu msg_id c. Lu : nu tr v 0 tc l thm vo thnh cng, 1 tht bi.

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 104

BI 11: PROCEDURES, FUNCTIONS


11.1 STORED PROCEDURES. 11.1.1 Gii thiu Stored proccedures. Stored procedure (th tc) l mt tp cc lnh T-SQL v mt s cu trc iu kin, c lu vi mt tn v c thc thi nh l mt n v cng vic n (single unit of work). Trong cc ngn ng khc nh C, pascal, Basic, mt th tc thng thng l mt tp cc cu lnh vi mc ch hon tt mt mc ch no v c th c gi t mt chng trnh nh l mt lnh n. Th tc trong SQL Server c lu tr ti server khi n c to ra. V vy, khi th tc c thi hnh th n c chy ti Server. C th gi th tc chy bng mt lnh n gin v trong th tc c th cha rt nhiu lnh ca T-SQL. Trc khi th tc c to, SQL Server s kim tra tnh ng n ca cc c php lnh. Nu khng c li v c php th th tc c to, tn ca th tc c lu trong bng h thng SysObjects v ni dung c lu trong bng h thng SysCommanes. Trc khi th tc c thc thi, mt k hoch thc thi (Execution plain) c to ra v th tc c bin dch. T tr v sau tin trnh dch th tc nhanh hn bi v SQL Server s khng kim tra tnh ng ng ca cc cu lnh na, ch to li execution plan v bin dch li th tc. Security (an ton): th tc c mt c tnh quan trng l n c th c nng cao an ton thng tin thng qua isolation (c lp) hoc encryption (m ha). Ngi dng CSDL c th c cho quyn thc thi th tc nhng s khng c quyn trc tip truy xut cc i tng ca th tc. Mt th tc c th c m ha ngay khi c to hoc chnh sa v th ngi s dng khng th c c cc cu lnh trong th tc. Phn loi: - System sp: c lu tr trong CSDL master v c t tn vi tip u ng l sp. Chng ng vai tr khc nhau ca cc tc v c cung cp trong SQL Server. V d: Sp_help, Sp_helpConstraint, . - Local sp: c lu tr trong cc CSDL ca ngi dng, n thc thi cc tc v (Task) trong CSDL cha n. Mt Local sp c th c ngi s dng to hoc t cc sp h thng. - Temporary sp: ging nh l mt local sp, nhng n ch hin hu cho n khi kt ni to ra n b ng. N c nm trong CSDL TempDB. C 3 loi temporary sp: local (private), Global, sp to trc tip trong TempDB. - Extended sp: L mt th tc c to t cc ngn ng lp trnh khc (khng phi SQL Server) v n c trin khai tnh nng ca mt th tc trong SQL Server. Cc th tc ny c tn vi tip u ng l xp. - Remote sp: l mt th tc c gi thc thi t mt server t xa. 11.1.2 To, thc thi, hiu chnh, xa stored procedures. Khi thc thi th tc, bn phi cung cp cc gi tr ca tham s ca cc th tc nu c. Mt th tc c th c gi thc thi hoc t ng thc khi SQL Server khi ng. Gi thc thi bng t kha EXECUTE. Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 105

Khi cn thm mt thm s (parameter) hoc thay i mt vi phn trong on m th ta dng lnh ALTER hiu chnh. Xa mt th tc dng lnh DROP Cc th tc c th c to trc khi cc i tng m th tc tham chiu, t tnh ny gi l tnh tr hon. To th tc Cch 1: Dng Enterprice Manager R-Click ti Store procudure trong CSDL, chn New Store procudure Cch 2: To Stored procedure Wizard Tool Wizard, click vo DataBase, chn Create Store Procedure Wizard Cch 3: Bng lnh Create proceduce
CREATE PROC [ EDURE ] procedure_name [ ; number ] [ { @parameter data_type } [ VARYING ] [ = default ] [ OUTPUT ] ] [,...n ] [ WITH { RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION } ] [ FOR REPLICATION ] AS sql_statement [ ...n ]

[ VARYING ]: Ch dng vi bin Cursor V d 1: To th tc lit k cc order c ngy giao hng qu hn theo yu cu CREATE PROC dbo.overdueOrders qu hn AS SELECT * FROM dbo.orders WHERE RequiredDate < GETDATE() and shippeddate is null Kim tra s tn ti ca Stored procedures
sp_helptext proc_name

Thc thi mt Stored procedures


[ [ EXEC [ UTE ] ] { [ @return_status = ] { procedure_name [ ;number ] | @procedure_name_var } [ [ @parameter = ] { value | @variable [ OUTPUT ] | [ DEFAULT ] ] [,...n ] [ WITH RECOMPILE ]

n gin hn
EXECUTE ProductName [ ; number ][<parameter>[, n][ OUTPUT ]]

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000 V d: EXECUTE dbo.overdueOrders

Trang 106

Thc thi sp ngay khi SQL Server khi ng: Store procedure phi nm CSDL Master. Cch 1: Dng th tc Sp_procoption gn thuc tnh t ng thc thi
USE Master EXECute Sp_procoption [ @ProcName = ] 'procedure' , [ @OptionName = ] Startup , [ @OptionValue = ] True

V d: EXECute Sp_procoption dbo.overdueOrders Startup, True Cch 2: Dng Enterprice Manager R-Click ti tn th tc Properties Execute whenever SQL Server Start Hiu chnh mt stored procedures USE Northwind GO ALTER PROC dbo.overdueOrders AS SELECT CONVERT(CHAR(8), RequiredDate,1) RequiredDate, CONVERT(CHAR(8), orderDate,1) orderDate, orderId, Customerid, EmployeeID FROM dbo.orders WHERE RequiredDate<GETDATE()and shippeddate is null ORDER BY RequiredDate Xa mt stored procedures
DROP ProcedureName

11.1.3 Tham s v bin trong Stored procedures. Tham s v bin l phn c bn to nn s uyn chuyn ca th tc. Input parameter: tham s nhp, a gi tr ca tham s thng bo cho th tc nn lm g trong CSDL Output parameter: tham s xut cha gi tr tr v ca th tc. Khi dng tham s phi khai bo tham s (Tn tham s, kiu d liu, Gi tr mc nhin nu c, c ch dn tham s OUT PUT khng)
@parameter_name [AS] datatype [=default | NULL] [VARYING] [OUTPUT]

V d 1: To th tc dng chn mt mu tin vo bng Customer, vi cc tham s dng Input USE SalesDB GO Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 107

CREATE PROC Sp_InsertCust @No_para VARCHAR(10), @Name_para NVARCHAR(50), @Address_para NVARCHAR(50), @Phone_para VARCHAR(24), @Fax_para VARCHAR(24), @Mail_para VARCHAR(50) AS INSERT INTO tblCustomer (CustNo, CustName, Address, Phone, Fdax, Mail) VALUES (@No_para, @Name_para, @Address_para, @Phone_para, @Fax_para,@Mail_para) Thc thi th tc c tham s USE SalesDB GO Sp_InsertCust CDS, Trng Tin hc ABC,12 Nguyn Vn Bo, 2352344,234652,cds@yahoo.com Kim tra vic chn d liu SELECT CustMo, CustName, Address FROM tblCustomer V d 2: USE Northwind GO IF EXISTS (SELECT name FROM sysobjects WHERE name = GetUnitPrice AND type = P) DROP PROCEDURE GetUnitPrice GO CREATE PROCEDURE GetUnitPrice @prod_id int, @unit_ price money OUTPUT AS SELECT @unit_price = UnitPrice FROM Products WHERE ProductID = @prod_id GO Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 108

Thc thi: Bn phi khai bo mt bin trc khi gi th tc thc thi DECLARE @price money EXECUTE GetUnitPrice 77, @unit_price = @price OUTPUT PRINT CONVERT(varchar(6), @price) GO V d 3: To th tc InsertRows nh sau: USE SalesDB GO CREATE TABLE mytable ( column1 int, column2 char(10) ) GO CREATE PROCEDURE InsertRows @start_value int AS DECLARE @loop_counter int, @start_val int SET @start_val = @start_value - 1 SET @loop_counter = 0 WHILE (@loop_counter < 5) BEGIN INSERT INTO mytable VALUES (@start_val + 1, "new row") PRINT (@start_val) SET @start_val = @start_val + 1 SET @loop_counter = @loop_counter + 1 END GO Thc thi: Hy thc thi th tc vi gi tr khi to l 1 EXECUTE InsertRows 1 GO Kim tra kt qu SELECT * FROM mytable V d 4: --- To th tc Count_tables c 2 tham s Output USE Pubs GO CREATE PROC count_tables @authorcount INT OUTPUT, @titlecount INT OUTPUT Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000 AS SELECT * FROM authors SET @authorcount=@@rowcount SELECT * FROM Titles SET @titlecount=@@rowcount

Trang 109

---- Thc thi th tc Count_tables DECLARE @a_count INT, @t_count INT EXECUTE count_tables @a_count OUTPUT, @t_count OUTPUT SELECT authorcount=@a_count, titlecount=@t_count V d 5: Vit mt th tc tnh giai tha ca mt s nm trong khong 0 n 12 Dng T-SQL tnh giai tha bng quy, ca cc s t 0 n 12. Cc tham s c gi tr ln hn 12 s khng cho php bi v kt qu tr v s vt qu phm vi ca d liu kiu int CREATE PROC Giaithua @so1 int AS DECLARE @So1Giam1 int, @Ketqua int IF (@so1 < 0 OR @so1 > 12) BEGIN -- Gi tr tham s khng hp l. RETURN -1 END IF (@so1=0 or @so1=1) SELECT @Ketqua=1 ELSE BEGIN SET @ So1Giam1=@So1 - 1 EXEC @Ketqua=Giaithua @ li chnh n IF (@Ketqua= -1) BEGIN RETURN -1 END

So1Giam1

qui

gi

SET @Ketqua=@Ketqua * @so1 IF (@@ERROR <> 0) RETURN -1 Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000 END RETURN(@Ketqua) Thc thi: Tnh giai tha cho 3 DECLARE @kq INT EXEC @kq = giaithua 3 PRINT @kq

Trang 110

Khi th tc Giathua tn ti th chng ta c th dng b lnh sau hin th giai tha ca tt c cc s t 0 n 12: DECLARE @Ketqua int, @n int SET @Ketqua =0 SET @n =0 WHILE (@n <= 12) BEGIN EXEC @Ketqua = Giaithua @n IF (@Ketqua = -1) BEGIN RAISERROR('Error executing factorial procedure. ', 16, -1) RETURN END PRINT CONVERT(varchar, @n) + '! = ' + CONVERT(varchar(5 0), @Ketqua) SET @n=@n + 1 END 11.2 FUNCTIONS. Hm thc s tng t nh Stored procedure ca SQl Server, ni dung bao gm cc pht biu T-SQL kt hp to thnh hm, c th gi thc thi cc hm nh l mt n v c lp. Hm c dng trong: Danh sch chn ca mt cu lnh Select cho ra mt gi tr. Mt iu kin tm kim ca mnh Where trong cc cu lnh T-SQL Buil-in functions: Nhng hm ny hot ng nh l mt nh ngha trong T-SQL v khng th hiu chnh. N c th ch c tham chiu trong cc cu lnh T-SQL. Gi tr tr v ca hm c th l mt Rowset (tp cc dng), argergate v scalar (v hng). Nn tm hiu v tn dng ti a cc hm Buil-in function ca SQL Server User-defined function hay cn gi l UDFs: Nhng hm ny do ngi dng t nh ngha p ng mt mc tiu no . Mt s hn ch so vi th tc l cc tham s truyn vo khng c mang thuc tnh OUTPUT, ngha l gi tr ca tham s khng c truyn ra bn ngoi hm UDF, thay vo ta phi s dng gii php l tr v gi tr cho hm bng pht biu RETURN. Gi tr tr v ca hm c th l mt gi tr v hng (Scalar valued) hoc bng (Table-valued) Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 111

Scalar Function. Mt hm v hng tr v mt gi tr n v c th c dng bt c ni no biu thc hay bin c th c dng (cu lnh Select, mnh SET ca cu lnh Update). Mt hm v hng c th c xem nh kt qu ca vi php ton hoc hm chui. Table-valued Function. Mt hm c gi tr bng tr v mt tp kt qu v c th c dng bt c ni no bng hay view c dng. Hm gi tr bng c th c tham chiu trong mnh FROM ca cu lnh SELECT. Cc hm ngi dng c th c nhiu phc tp hn viu v c th c tham s. Vi cc ngn ng lp trnh khc, nu tham s khng truyn vo th xem nh l hm s ly gi tr default ca cc tham s, nhng vi SQL Server th phi truyn gi tr Default vo. 11.2.1 Scalar Functions
CREATE FUNCTION [ owner_name. ] function_name ([ { @parameter_name [AS] scalar_parameter_data_type [ = default ] } [,...n ] ]) RETURNS scalar_return_data_type [ WITH < function_option> [ [,] ...n] ] [ AS ] BEGIN function_body RETURN scalar_expression END

V d: CREATE FUNCTION TotalAmount (@UnitPrice money, @Quantity smallint, @Discount real) RETURNS money AS BEGIN RETURN (@UnitPrice*@Quantity)*(1-@discount) END S dng: SELECT ProductID, Total=dbo.TotalAmount(UnitPrice, Quantity, Discount) FROM [Order details] WHERE OrderID=10250 11.2.2 Table-valued Functons c chia thnh hai loi nh: inline table-value v multistatement table-valued. Mt hm inline table-valued: N c th c xem nh l mt View c tham s. Chng thc thi mt cu lnh Select nh trong mt view nhng c th bao gm cc tham s, ging nh th tc.

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 112

CREATE FUNCTION [ owner_name. ] function_name ([ { @parameter_name [AS] scalar_parameter_data_type [ = default ] } [,...n ] ]) RETURNS TABLE [ WITH < function_option > [ [,] ...n ] ] [ AS ] RETURN [ (] select-stmt [) ]

V d 1: CREATE FUNCTION SalesByCategory(@Categoryid Int) RETURNS TABLE AS RETURN (SELECT c.CategoryName, P. ProductName, SUM(Quantity) AS TotalQty FROM Categories c INNER JOIN Products p ON c.CategoryID= p. CategoryID INNER JOIN [Order Details] od ON p.ProductID = od.ProductID WHERE c.CategoryID= @Categoryid GROUP BY c. CategoryName,p.ProductName) Hm Multistatement Table-valuesd l dng phc tp nht. Loi hm ny xy dng tp kt qu t mt hay nhiu cu lnh SELECT.
CREATE FUNCTION [owner_name.]function_name ([{@parameter_name [AS] data_type [=default]} [ ,n ]]) RETURNS @return_variable TABLE ({column_definition | table_constraint} [ ,n ]) [WITH { ENCRYPTION | SCHEMABINDING } [ [,] ...n] ] [AS] BEGIN function_body RETURN END

V d: CREATE FUNCTION Contacts(@suppliers bit=0) RETURNS @Contacts TABLE (ContactName nvarchar(30), Phone nvarchar(24), ContactType nvarchar(15)) AS BEGIN Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 113

INSERT @Contacts SELECT ContactName, Phone, 'Customer' FROM Customers INSERT @Contacts SELECT FirstName + ' ' + LastName, HomePhone, 'Employee' FROM Employees IF @Suppliers=1 INSERT @Contacts SELECT ContactName, Phone, 'Supplier FROM Suppliers RETURN END S dng SELECT * FROM CONTACTS(1) ORDER BY ContactName

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 114

BI 12: TRANSACTIONS LOCK


SQL Server dng cc transaction v cc lock m bo tnh vng chc v ton vn d liu, khng chp nhn cc li xy ra trong h thng. 12.1 TRANSACTIONS Transaction: Mt transactin c th c nh ngha nh l mt chui cc thao tc thc thi cng vi nhau nh l mt khi thng nht n ca cng vic. Mt khi thng nht ca cng vic phi c bn c im c gi l ACID (Atomicity, Consistency, Isolation, v Durability). Atomicity: c tnh ny th hin rng hoc l tt c cc hiu chnh d liu c thc hin hoc l tt c chng u khng c thc hin. Consistency: y l mt trng thi m tt c cc d liu trong tnh trng nht qun sau khi mt transaction c hon tt mt cch thnh cng. Tt c cc qui tc (rules) trong mt CSDL quan h phi c tho mn i vi cc hiu chnh trong mt transaction nhm duy tr ton b cc ton vn d liu. Isolation: c tnh ny th hin rng bt k s hiu chnh d liu thc hin bi cc transaction ng thi phi c lp vi cc hiu chnh khc ca cc transaction ng thi khc. Ni mt cch n gin hn, mt transaction hoc l truy xut d liu trng thi m trc khi transaction ng thi thc hin hiu chnh hoc l truy xut d liu sau khi transaction th hai c hon tt. Durability: c tnh ny th hin rng bt k thay i trong d liu bi mt transaction hon tt gi nguyn nh hng trong h thng. V vy, bt k s thay i bi mt transaction hon tt vn cn thm ch trong s kin h thng b fail. c tnh ny c m bo bi s d phng v phc hi transaction log. Ba loi Transaction: Implicip Transactions (Transaction ngm nh): Khi mt connection ang m trong ch implicip, SQL Server bt u mt transaction mi mt cch t ng sau khi transaction hin hnh hon tt hoc Roll back. Bn khng cn pht ha bt u mt transaction; bn ch cn commit hoc Rollback mi transaction. Ch Implicit transaction pht sinh mt chui cc transaction lin tc Sau khi ch transactin implicit c bt ON cho mt kt ni, SQL Server t ng bt u mt transaction khi n thc thi bt k cc lnh sau: Alter Table, Creat, Delete, Drop, Fetch, Grant, Insert, Open, Revoke, Select, Trucate Table, Update. Explicip Transactions: (Transaction tng minh): L mt transaction m chng ta phi nh ngha bt u mt transaction (Begin transaction) v kt thc mt transaction (Commit Transaction) Bt u mt transaction
BEGIN TRAN [ SACTION ] [ transaction_name | @tran_name_variable]

Hon Tt Transaction
COMMIT [ TRAN [ SACTION ] [ transaction_name | @tran_name_variable ] ]

Lu v tr Transaction
SAVE TRAN [ SACTION ] { savepoint_name | @savepoint_variable }

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000 Hy mt Transaction


ROLLBACK [ TRAN [ SACTION ] [ transaction_name | @tran_name_variable | savepoint_name | @savepoint_variable ] ]

Trang 115

@@TRANCOUNT: Tr v s th t m trasaction c m, ti a lng 32 cp, khng nn lng. Distributed Transaction: l mt loi explicip Trangsaction nhng giao tc ca n lin quan nhiu server. S qun l phi c kt hp gia cc nh qun l ti nguyn ca cc server v iu ny gi l transaction manager. Cc transaction trong mt server nhng tham chiu t nhiu database, thc ra cung l mt distributed transaction. Transaction log l mt tranction dng lock ngn chn ngi dng hiu chnh d liu nh hng t cc transaction cha hon tt. Cng dng transaction log Phc hi cc transaction c bit: Khi mt application a ra lnh ROLL BACK hoc SQL Server nhn ra mt li, th bng ghi log c dng roll back bt k hiu chnh trong sut qu trnh ca transaction cha hon tt. Phc hi tt c cc transaction cha hon tt khi Sql server c bt u: Hon tr li atabase li n mt thi im b li: Nhm m bo khng pht sinh mu thun sau khi c s c. Write-ahead Transaction Log: Dng Write ahead log m bo rng khng c d liu hiu chnh no c ct vo a trc khi ct trong log record. Check point : L mt hnh ng thc hin nh k trong CSDL, n s ghi li tt c cc transaction lin quan n data ln transaction log, nhm phc v cho vic recovery data. Check point xy ra khi: Gp cu lnh Check point. C s hiu chnh trn CSDL Trc ngay khi SQL Server Shutdow p nh nh k. Transaction RecoveryAction Required Transaction 1 Transaction 2 Transaction 3 Transaction 4 Check Point Transaction 5 System failure None
Roll Forward Roll back Roll Forward Roll back

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 116

12.2 LOCK Lock: l c cu ngn chn cc xung t do cc user khng th c hoc hiu chnh cc d liu m cc d liu ny hin ang trong mt tin trnh x l khc. Tuy nhin, bn vn c th thao tc trn nhng i tng cn ph thuc vo chuyn tc m user khc ang thc hin. Khi h thng s kim sot tin trnh ca bn c tng thch vi qu trnh trc hay khng. Cc vn ng thi (Concurrency problem) Lost Updates (cp nht mt d liu): Lost updates xy ra khi 2 hoc nhiu transaction chn cng mt d liu v sau cp nht dng da trn gi tr c. Mi transaction khng bit nhng transaction khc. Thao tc cp nht cui cng ghi ln nhng thao tc cp nht khc m kt qu dn n mt d liu. Uncommitted Dependency (Dirty Read c d liu sai): Uncommitted Dependency xy ra khi transaction th 2 chn mt dng m ang sn sng cp nht bi mt transaction. Transaction th 2 ang sn sn c d liu m cha c hon tt v c th b thay i bi transaction cp nht Inconsistent Analysis (Nonrepeatable Real c hai ln mu tin): Xy ra khi transaction th hai truy xut cng mt d liu vi vi ln v c ln nhng d liu khc nhau mi ln c. Inconsistent Analysis tng t vi Uncommitted Dependency trong trng hp transaction th nht ang hiu chnh d liu th mt trasaction th hai c d liu. Tuy nhin, d liu c bi transaction th hai c commited bi transaction update Phantom Reads (c cc mu tin ma): Xy ra khi hnh ng insert hoc delete c thi hnh trn mt dng d liu m n thuc vng d liu c ca mt transaction khc. Kiu locks Share locks: c dng cho nhng thao tc m khng lm thay i hay cp nht d liu (thao tc ch c), nh l mt cu select Exclusive locks: c dng cho nh thao tc hiu chnh d liu, nh l Insert, Update, hay Delete. m bo rng nhiu cp nht khng th c thc hin trong cng ti nguyn ti cng mt thi im. Update locks: c dng trn nhng ti nguyn m c th c cp nht. Ngn chn mt dng thng thng ca deadlock m xy ra khi nhiu session ang c, ang lock, v c kh nng cp nht ti kuyn sau ny. Intent locks: Dng thit lp mt lock k tha. Kiu intent lock l : Intent shared (IS), Intent exclusive (IX), v share with intent exclusive (SIX) Schema locks: c dng khi thao tc thy thuc vo gin ca table l ang thc thi. Kiu schema locks l schema modification (Sch-M), schema stability (Sch-S) Bulk Update (BU) locks: Cho php chia s cho Bulk-copy thi hnh. Deadlock Deadlock xy ra khi c mt s ph thuc chu trnh gia hai hay nhiu lung cho mt tp hp ti nguyn nguyn no . SQL Server s t gii quyt trng hp deadlock bng cch RoolBack mt trong cc transaction, v u tin rollback nhng transaction c thi gian t hn. gim bt deadlock, bn nn: Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000 Truy xut cc object theo th t. Trnh s tng tc ngi dng trong thi gian transaction. C gi transaction cng ngn cng tt. Dng mc c lp thp nht. Dng gii hn cc connection.

Trang 117

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 118

BI 13: S DNG CURSORS TRUY XUT D LIU


13.1 Khi nim Cursor l mt i tng ca CSDL m n h tr cho php truy xut v thao tc d liu trong mt tp kt qu (result set). Sau khi cursor c nh v trn mt dng, cc hot ng c th thc hin trn dng hoc khi cc dng bt u t v tr . Dng Cursor : nh v mt dng c bit trong tp kt qu. Truy xut mt hoc khi dng bt u t v tr cursor trong tp kt qu. Cung cp thao tc hiu chnh d liu cho cc dng ti v tr ca cursor trong tp kt qu. Cung cp cc mc khc nhau ca tnh tng minh trong d thay i c to bi nhng ngi dng khc n tp kt qu. Cung cp vic truy cp d liu trong tp kt qu cho cc cu lnh T-SQL trong scripts, Stored procedure, v triggers. Cc thao tc cn thc hin trong khi s dng cursor trong SQL Server: Cursor cn phi khai bo v cc thuc tnh ca n cng cn c xc nh. M cursor. Phi ly (fetch) cc dng cn thit t cursor. D liu trong dng hin hnh c th c hiu chnh nu cn thit. Tm thi khng dng cursor th phi ng cursor li. Cursor cn phi c gii phng (deallocate) khi khng cn dng na. Cursor: T-SQL Server cursors: Cursor ny c da trn cu lnh khi bo cursor, n c dng ch yu trong cc script, strore procedure, triggers. N c thi hnh trn server v c qun l bi cc cu lnh T0SQL gi t client n server. Khi lm vic vi cursor th phi khai bo, m, truy xut, x l, ng, gii phng. API Server cursors (API-Application Program interface): N c thc thi trn server v c qun l bi mt hm cursor API. API Server cursors c cung cp bi hm cursor API trong OLE DB, ODBC, v DB-Library. Mi ln mt ng dng ca client gi mt hm cursor API, SQL server OLE DB provider, ODBC driver, hoc DB-Library DLL gi cc yu cu n server cho hnh ng ng vi cc hm cursor API. N ch khc vi T-SQL cursor syntax, cn v bn cht tng t. Client Cursors: SQL server ODBC driver, DB-Library DLL, v ADO API DLL gip thi hnh cursor client mt cch ni ti. cursor client c thi hnh bng cch nm gi tp kt qu d liu ca clients. Mi ln Application ca client gi hm cursor API, th SQL server OLE DB provider, ODBC driver, hoc DB-Library DLL thc thi tnh ton ngay trn tp kt qu d liu c gi trn client. Ta ch dng client cursor lm gim bt s gii hn m server consor khng c cung cp cc cu lnh T-SQL. Nu con tr static hoc Scroll th ta c th dng client cursor.

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 119

Loi cursor Static Tp kt qu ca contr loi Static c xy dng trong tempdb khi con tr c m. Mt static con tr lun lun hin tp kt qu ging nh tp kt qu c c ngay sau khi con tr m. Con tr khng phn nh c bt k s thay i no trong database ngay c khi nhng dng d liu c thay i, cc dng mi c insert bi cc transaction khc cng vn khng hin ln mc d chng tha iu kin lc d liu. Thao tc Insert, Update, Delete u khng c tc dng khi dng static cursor Keyset-driven: Thnh vin v th t ca cc dng trong mt keyset-driven cursor l c nh khi cursor c m. Con tr c iu khin bi mt tp gi tr nhn dng goi l Keyset. Keyset c xy dng t mt tp cc ct m dng nhn dng cc dng trong tp kt qu. Keyset c xy dng trong Tempdb khi con tr c m Cho php hiu chnh (update, delete) d liu trn ct khng l keyset (bi ch cursor hoc t user khc) khi user duyt thng qua con tr. C th thm (insert) vo bng nu nh cursor th chn d liu vo bng. Dynamic: Tri ngc vi static cursor. Dynamic cursors phn nh c ton b s thay i ca cc dng d liu trong tp kt qu khi duyt con tr. Gi tr d liu, th t, v thnh vin ca cc dng trong tp kt qu c th thay i ng vi mi ln duyt con tr. Tt c cc lnh Insert, Update, Delete ca cc user u hu hiu thng qua con tr. S Update hu hiu ngay tc thi nu chng c update thng qua qua con tr ng vi ti mu tin hin thi, cn nu update bn ngoi con tr th n khng hu hiu cho n khi n hon tt. Fast Forward only: Tng t nh Dynamic cursor nhng n ch c th duyt con tr tho mt chiiu t First n Last Cusrsor type Forward-only Static Dynamic Keyset-driven Membership Order Dynamic Fixed Dynamic Fixed Dynamic Fixed Dynamic Fixed Values Dynamic Fixed Dynamic Dynamic

13.2 Lm vic vi T-SQL server cursors Khai bo cursor Bng cu lnh declare sau t kha AS trong stored procedures hoc functions
DECLARE cursor_name CURSOR [ LOCAL | GLOBAL ] [ FORWARD_ONLY | SCROLL ]

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000


[ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ] [ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ] [ TYPE_WARNING ] FOR select_statement [ FOR UPDATE [ OF column_name [,...n ] ] ]

Trang 120

select_statement: l cu lnh truy vn nh ngha tp kt qu ca cursor. T kha COMPUTE, COMPUTE BY, FOR BROWSE, and INTO Khng cho php trong select_statement ny. READ ONLY Khng cho php Update trong cursor ny. UPDATE [OF column_name [,...n]]: Quy nh ct cho php c update khi dng cursor. Nu OF column_name [,...n] c ch nh r rng th ch c cc ct c ch nh mi c cho php hiu chnh, nu khng c column list, all columns c th update. M cursor M cursor trc khi dng (Cursor phi c khai bo ri)
OPEN {cursor_name }

Ly mu tin hoc iu hng cursor (FETCH) Truy xut tng dng d liu. Kim tra phm vi con tr bng @@Fetch_status
FETCH [[NEXT | PRIOR | FIRST | LAST | ABSOLUTE n | RELATIVE n]] FROM cursor_name[ INTO @variable_name [,...n ] ]

@@Fetch_status: Tr v gi tr 0 hoc 1. Tr v 1 c ngha l con tr c di n qu cui tp kt qu. Tr v 0 vn cn trong phm vi ca tp kt qu. Khi dng vng lp While duyt c tp kt qu ca Cursor. X l d liu: C th dng cc cu lnh Upadte hoc Delete hiu chnh d liu S dng d liu ca mu tin hin hnh: d liu c ly ln v gn cho cc bin tng tng trong cu lnh Fetch Cp nht d liu thng qua cursor: thc cht l d liu c hiu chnh trc tip vo trong bng Cp nht gi tr cho ct
UPDATE <Ten Table> SET <TenColumn>= <Value> [,..n] WHERE CURRENT OF <Cur_Name>

Xo d liu thng qua cursor: Thc s l d liu xa trn bng


DELETE <Ten Table> WHERE CURRENT OF <Cur_Name>

ng Cursor Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 121

Kt thc hnh ng ca cursor cho ln m (open), n vn hin hu cho n khi gp mt lnh Open khc hoc gp lnh Close cursor.
CLOSE cursor_name

Gii phng Cursor Gii phng cursor, huy b tham chiu n con tr t session hin hnh. Tin trnh ny lm cho ti nguyn tr v trng thi sn sng truy xut.
DEALLOCATE cursor_name

13.3 V d. Gi s ngi qun l cn mt bng bo co lch s khch hng theo dng sau: Customer:ALFKI - Alfreds Futterkiste Order:10643 (Aug 25 1997) Order:10692 (Oct 3 1999) Order:10702 (Oct 13 1999) Customer:ANATR - Ana Trujillo Emparedados y helados Order:10625 (Aug 8 1997) Order:10759 (Nov 28 1999) Customer:ANTON - Antonio Moreno Taquera Order:10507 (Apr 15 1997) Order:10535 (May 13 1999) Order:10573 (Jun 19 1999) Order:10677 (Sep 22 1999) Order:10682 (Sep 25 1999) on Batch thc hin bo co nh sau: --- Khai bo contr DECLARE rpt CURSOR FOR SELECT c.CustomerID, c.CompanyName, o.OrderID, o.OrderDate FROM Customers c, Orders o WHERE c.CustomerID = o.CustomerID AND c.CustomerID LIKE 'A%' AND DatePart( year, o.OrderDate) = 1997 DECLARE @cid char( 8), @cname char( 40), @ordid char( 8), @orddt datetime, @old char( 8) --- M contr OPEN rpt --- Ly d liu ca mu tin u tin vo cc bin FETCH NEXT FROM rpt INTO @cid, @cname, @ordid, @orddt SELECT @old = '

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 122

WHILE @@fetch_status = 0 BEGIN IF @old = @cid BEGIN PRINT ' Order:' + rtrim( @ordid) + ' (' + cast(@orddt as CHAR( 10)) + ')' END ELSE BEGIN PRINT 'Customer:' + rtrim( @cid) + ' - ' + rtrim(@cname) PRINT ' Order:' + rtrim( @ordid) + ' (' + cast(@orddt as CHAR( 11)) + ')' SELECT @old = @cid END FETCH NEXT FROM rpt INTO @cid, @cname, @ordid, @orddt END --- ng con tr CLOSE rpt --- Gii phng con tr DEALLOCATE rpt V d 2: DECLARE MyCursor CURSOR FOR SELECT c.CustomerID,c.Companyname,c.contactname, o.OrderID,o.OrderDate FROM Customers c, Orders o WHERE c.CustomerID = o.CustomerID FOR UPDATE OPEN MyCursor DECLARE @cid VARCHAR( 8), @c VARCHAR( 80), @o INT, @od DATETIME, @cn VARCHAR( 80) FETCH NEXT FROM MyCursor INTO @cid, @c, @cn, @o, @od SELECT @cid BEGIN TRANSACTION UPDATE Customers SET CompanyName = 'q' WHERE CURRENT OF Mycursor DEALLOCATE MyCursor SELECT * FROM Customers ROLLBACK TRANSACTION Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 123

BI 14: BY LI - TRIGGER
14.1 Gii thiu v trigger Cht lng ca mt CSDL c nh gi mt phn bi tnh nht qun v chnh xc ca d liu trong CSDL. m bo tnh ton vn d liu ta c nhiu phng php, trigger l mt phng php hu hiu. Trigger l mt loi stored procedure c bit, n c nh ngha t ng thc thi khi c mt cu lnh Update, Insert, hoc Delete c pht ra trn bng hoc View. Trigger l mt cng c mnh m n c th dng rng buc cc qui tc qun l mt cc t ng khi d liu b hiu chnh. Trigger cng c th ni rng cc tnh ton vn kim sot logic ca SQL Server. Trigger t ng thc thi, khng th gi mt trigger thi hnh mt cch trc tip. Dng trigger khi: Rng buc ton vn d liu cho ph hp vi m hnh quan h CSDL. Kim sot d liu hin ti khi c thay i n gi tr trong mu tin trong bng. Kim tra d liu nhp vo ph hp vi mi quan h d liu gia cc bng. nh ngha thng bo li ca ngi dng. So snh trng thi ca d liu trc v sau hiu chnh c im v gii hn ca trigger Trigger (After trigger) l Reactive; constraints v instead of trigger l proactive. (Reactive: khi delete/insert mt dng vo table, th sau khi insert th trigger mi uc t ng thc thi th gi l reactive, proactive l kim tra trc khi Insert/Delete) Cc constraint c kim tra trc, sau mi ti trigger. Cc bng c th c nhiu trigger cho bt k hnh ng no. Tuy nhin khng nn dng qu nhiu trigger trong cng mt bng. SQl Server ch cho php ch nh trigger no thi hnh u tin, thi hnh cui cng, cn cc trigger khc th t thi hnh khng xc nh. V vy, nu c qu nhiu trigger trn 1 i tng c th s gp nhiu rt ri khi c nhiu trigger khng xc nh th t. Khng th to trigger trn cc i tng temporary. Nn thit k trigger khng tr v tp kt qu nhm m bo tnh cht chuyn tc gia cc user v lp trnh. Cc trigger c th x l hnh ng trn nhiu dng. Trigger khng ngn nga thay i cu trc, trigger ch quan tm n s thay i d liu trong bng. Khi bn xa i tng trong CSDL vi cc bc hp l, SQL Server s cho php xa i tng v trigger khng th kim sot c. Trigger Events: C 3 bin c m trigger s t ng thc thi khi bin c xy ra, l Insert, Update, Delete. Trigger khng th c gi mt cch trc tip. C cu thc thi trigger: Khi insert hoc update d liu ca bng bt trigger, trigger s lu tr dng d liu mi hoc dng d liu hiu chnh vo mt bng c tn l Inserted trong b Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 124

nh cash, khi xa d liu ca bng bt trigger ln, trigger s lu tr dng d liu b xa vo bng c tn l Deleted trong b nh cash. Cc bng tn ti trong b nh v c truy vn bi cc lnh T-SQL trong cc trigger. Bn c th s dng thng tin trong bng inserted v Deleted so snh, lu tr, rollback, nu cn, khi bn khng cn to ra cc bin lu tr thng tin v tc truy xut nhanh. Hai loi trigger trong SQL Server 2000: INSTEAD OF v AFTER (nu ch ni trigger c ngha l ni n AFTER Trigger) FOR triggers v AFTER triggers: cc trigger ny ch c thc thi khi tt c cc thao tc Insert, Update hay Delete thc hin xong. Tt c cc hnh ng tham chiu v kim tra constraint cng phi c thc hin xong trc khi trigger thi hnh. Loi trigger ny ch ci t c trn bng, khng ci t c trn View. Khi to trigger v khng ch nh r th mc nh l AFTER, FOR ch l t kha tng thch ngc vi cc phin bn trc ca SQL Server. INSTEAD OF triggers: Trigger ny ch c trong SQL Server 2000. Trigger ny s thi hnh thay cho cc cu lnh Insert, Delete, Update. Nh vy khi to trigger kiu ny bn phi vit li cc lnh insert, Delete, Update i vi d liu. C th p dng cho c bng v View, tuy nhin n khng cho php p dng vi cc view c la chn WITH CHECK OPTION. Nested trigger: c ngha l bng Table1 c trigger, Table2 c trigger khc. Nu ta thao tc trn Table1 th trigger ca n s thc thi, nu thao tc ny c lin quan n Table2 th trigger2 bng Table2 thc thi. Gi l lng cc trigger, bn c th lng ti a l 32 cp. 14.2 To v qun l cc trigger Mt trigger c th to v qun l bng cch s dng Query Analyzer hoc Enterprice Manager. To mt trigger trn i tng th phi c quyn Owner i vi i tng. 14.2.1 To trigger
CREATE TRIGGER trigger_name ON { table | view } [ WITH ENCRYPTION ] { { { FOR | AFTER | INSTEAD OF } { [DELETE] [,] [ INSERT ] [, ] [ UPDATE ] } [ WITH APPEND ] [ NOT FOR REPLICATION ] AS sql_statement [ ...n ] } }

Gii thch: - trigger_name : Tn ca trigger. Nu trong 1 bng c nhiu trigger th tn ca cc trigger phi l duy nht. - ON { table | view }: Ch nh table/View c p dng trigger, ch c instead of c p dng cho c view v table. - [ WITH ENCRYPTION ]: Trigger c m ha. Thng tin m ha nm trong bng syscomment - { FOR | AFTER | INSTEAD OF }: Xc nh loi trigger cho thao tc DELETE, INSERT, UPDATE. Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 125

Delete trigger: trigger s c thc thi khi c mu tin b xa khi bng, SQL Server to ra bng mang tn DELETED ct mu tin b xa, trong trigger ta c th tham kho n mu tin ny. Insert trigger: trigger s c thc thi khi c mu tin chn vo bng, SQL server to ra bng mang tn INSERTED ct mu tin chn, trong trigger ta c th tham kho n mu tin ny. Update trigger: Mi khi c mu tin no c cp nht, gi tr nhng ct c lin quan n trigger s c kim tra trc khi cp nht. Mu tin b cp nht s c sao lu trong bng Inserted (cha gi tr mi) v Deleted (cha gi tr c). - [ NOT FOR REPLICATION ]: Trigger s khng thc hin khi bng c lin quan n k thut sao chp nhn bn (relication) Lu : Mt hnh ng (Insert hoc Delete hoc Update) c th kch hot cng lc nhiu trigger khc nhau. Trigger s thi hnh cho d thao tc ca ngi s dng c tc ng thc s trn cc mu tin hay khng, do dng @@ROWCOUNT kim tra trc khi cho cc hnh ng trong trigger thi hnh. Cc pht biu sau khng th c trong trigger: cc pht biu Create, Drop, Alter Table, Alter DataBase, Truncate Table, Grant/Revoke, Reconfigure, Load DataBase, Transaction, Update statistics, Select Into, Disk. 14.2.2 Qun l trigger Alter Trigger 2 Hiu chnh trigger Drop Trigger : Xa trigger Sp_rename : i tn. Sp_helptrigger, Sp_heltext: Xem code trigger DISABLE TRIGGER/ ENABLE TRIGGER trong cu lnh Alter Table 14.3 Vi v d v trigger. V d 1: Vit mt trigger cho thao tc Insert, im kim tra ngy lp ho n th lun lun ln hn ngy giao. CREATE TRIGGER Trg_NgayLap_NgayGiaoHD ON Hoadon AFTER INSERT AS DECLARE @NgayLapHD DateTime, @NgayGiao DateTime SELECT @NgayLapHD=hd.NGayLapHD,NgayGiao=hd.NgayGiaoNhan FROM HoaDon hd INNER JOIN Inserted i ON hd.MaHD=i.Mahd If @NgayGiao<@NgayLapHD BEGIN RAISERROR(500103,10,1)
2

Tham tho c php lnh trong Books-Online

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000 ROLLBACK TRANSACTION END -------------------------------INSERT HoaDon VALUES (1003,'1/1/2004','N','TP. HCM',111,12/24/2003)

Trang 126

V d 2: To mt trigger c tn l Msg_InstUpd_Kh, trigger ny thc hin chi 2 thao tc Insert, Update ca bng KhachHang. Trigger s thng bo C n dong da duoc hieu chinh. Use SalesDB GO CREATE TRIGGER Msg_InstUpd_Kh On KhachHang FOR INSERT, UPDATE AS RAISEORROR(C %d dng c hiu chnh, 0,1,@@Rowcount) RETURN Kim chng: bng cch chn hoc cp nht 1 hoc nhiu mu tin vo bng KhachHang. INSERT INTO KhachHang .. V d 3: Hai bng HoaDon v CT_HoaDon c quan h 1-n, tc l khi thm mt chi tit ha n trong bng chi tit ho n th ha n ny phi c pht sinh trong bng ha n. V th ta phi vit mt trigger Insert cho bng CT_HoaDon. Nu ta c trigger ny th khi ta vi phm SQL Server cng s bo li v vi phm rng buc ton vn kha ngoi. Tuy nhin ta hy vit mt trigger thc hin thng bao khi c li ny xut hin. Use SalesDB GO CREATE TRIGGER Trigger_Ins_CT_HD ON HoaDon FOR INSERT /* Insert trigger cho bng ha n*/ AS IF NOT EXISTS (Select * From Inserted I inner join HoaDon hd ON i.Mahd = hd.Mahd) /* Nu Mahd c chn vo bng CT_HoaDon khng tn ti trong bng ha n th khng chn c */ BEGIN Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 127

RAISERROR(60000,16,1,'MaHd', 'CT_HoaDon','Mahd','Hoa Don') ROLLBACK END V d 4: Price trong CT_HoaDon lun lun ln hn hay bng GiaGoc trong bng sn phm. bt rng buc ny bn thng dng Check Constraints, tuy nhin bn cng c th by li bng trigger Create Trigger MGT_Gia ON CT_HoaDon FOR UPDATE AS IF EXISTS (Select * From INSERTED I where i.price < tblItem.OriginalPrice) Begin RAISERROR(Khong th cp nht v gi khng hp l,16,1) ROLLBACK TRAN End

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 128

BI 15: BO MT TRONG SQL SERVER


15.1 Khi nim v bo mt. 15.1.1 M hnh truy cp bo mt ca SQL Server.

Hnh 37: Cc lp kim tra bo mt chng thc ca SQL Server Vic kt ni n SQL Server 2000 tht n gin. S bo mt c kim tra ba ni khc nhau: c th b kim hp l bi Windows 2000, bn thn SQL Server, mc CSDL ring l. Ngay sau khi bn kt ni vo SQL Server bn cha tht s truy cp c bt k mt i tng CSDL no, bn cn phi c cp quyn (permissions) truy cp n i tng. 15.1.2 Cc ch bo mt. SQL Server 2000 cung cp hai ch bo mt: Hai loi chng thc Windows Authentication SQL Server kim tra nhn dng ca user v sau cho php hay t chi ng nhp truy xut da trn c s tn ca User m khng cn tn ng nhp v password ring bit. iu ny gi l kt ni tin tng. Khi bn kt ni n SQL Server theo cch ny th c ngha l bn trnh by vi SQL Server mt y nhim bo mt ca Windows (nh l mt th bi truy cp ca bn). Bn xy dng cc y nhim ny trong qu trnh ng nhp vo mng windows 2000. Cc y nhim bo mt ny c truyn m thm cho bn, v th bn khng cn lm bt c iu g c bit vt qua vic kim tra bo mt. SQL Server Authentication Ngi qun tr CSDL c th to ra cc ti khon v password ng nhp SQL Serevr. Cc ti khon ny hon ton khng tu thuc vo cc ti khon hay nhm ngi dng h iu hnh. Nu c mt kt ni ch nh chng thc SQL Server th Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 129

SQL Server 2000 thc thi chng thc chnh n bng cch kim tra xem ti khon ang nhp c tn ti hay khng v mt khu ch nh c khp vi mt ghi nhn trc y trong SQL Server 2000 khng. Ch chng thc: Windows Authentication mode: Ngi s dng ch c th kt ni vi SQL Server 200 bng Windows Authentication (Kt ni tin tng) Mixed mode: Ngi dng c th kt ni vi SQL Server 200 bng cch dng c Windows Authentication v SQL Server Authentication Chuyn i ch chng thc: Sau khi ci t, bn c th s dng Enterprise Manager chuyn i qua li gia cc ch . Ti ca s Enterprise Manager, nhp nt phi chut ti instance v chn Properties

Hnh 38: cu hnh Security cho SQL Server trang Security click chn hoc SQL Server And Windows hoc Windows Only i ch chng thc. Sau khi bn chuyn ch , bn phi stop v sau restart dch v ca SQL Server service s thay i ny c tc dng. Enterprise Manager s hi kin bn.

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 130

Hnh 39: Hp thoi hi kin ngi dng c mun Stop v Restart Server 15.1.3 Tm hiu cc Server-Wide Permission. SQL Server 2000 h tr mt s server role c nh ngha trc c kt hp vi cc quyn qun tr. Cc server role ny cp cc quyn server-wide thc hin cc tc v khc nhau v bao gm cac quyn m bn c th cp cho nhng ngi dng thng qua vic s dng cc server role ny. Bn khng th xo cc server role v khng th thay i cc quyn ca chng. cp cc quyn cho mt ngi dng, th bn thm ng nhp ca chng server role. Vi Transact-SQL, bn c th thm cc ngi dng hay nhm cc ngi dng vo mt server role Lu : Cc Server role v c bn ging nh cc group trong Windows 2000. Trong SQL Server 2000 c 8 server role Server Role sysadmin Thnh vin ca Server Role c th Thc thi bt c thao tc no trong mt th hin SQL Server 2000 v trong bt k CSDL. Mc nhin, tt c cc thnh vin ca nhm Windows builtin Administrators, ti khon ngi dng sa thuc vo server role ny. Cu hnh SQL Server 2000 bng cch dng th tc h thng sp_configure v c th kt thc cc sevice. Cc thnh vin ca nhm iu hnh vin built-in ca Windows l rt tt nhn server role ny. Ci t v cu hnh linked server, remote server, v replication. C th ch nh mt stored procedure c thc thi lc khi ng (startup), nh l sp_serveroption. Cc thnh vin ca nhm iu hnh vin built-in ca windows l rt tt nhn server role ny.

serveradmin

setupadmin

Thc hin tt c cc thao tc lin quan n security trong SQL Server 2000, k c qun l cc quyn cu lnh CREATE DATABASE, iu khin securityadmin server logins, v c error log. Gip cc nhn vin vn phng. Thnh vin ca nhm iu hnh vin built-in ca windows l rt tt nhn server role ny. processadmin dbcreator Diskadmin bulkadmin Qun l cc tin trnh chy cc instance ca SQL Server. C th ngt (kill) tin trnh ca cc user, cc truy vn. C th to, hiu chnh, v xa cc CSDL. Nhng nh qun tr CSDL lu nm m trch server role ny tt. C th qun tr cc tp v cc thit b d phng. Ni chung Role ny dng tng thch ngc vi SQL Server 6.x. C th thc hin cc cu lnh BULK INSERT. Cho php cc thnh vin ca sysadmin server role lm i din cc tc v BULK INSERTm khng Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000 Server Role

Trang 131

Thnh vin ca Server Role c th cn gn cc quyn sysadmin. Hy cn thn bi v cc thnh vin cng phi truy xut c n bt k d liu c chn v quyn INSERT trn bt k bng m d liu s c chn.

Lu : Mt thnh vin ca bt k server role no u c th thm cc user khc c server role . 15.1.4 Tm hiu cc quyn (Permission) ch nh trn c s d liu. Khi Truy xut n SQL Server 2000 th bn cha c quyn truy xut n cc CSDL. Ngoi tr cc thnh vin trong sysadmin role, thnh vin trong mt server role c sn quyn truy xut CSDL. Cc quyn truy xut CSDL phi c cp mt cch r rng bi mt system administrator hoc thnh vin ca administrator role trong CSDL. Cc quyn c th c cp (grant), t chi (deny), ci b (revoke) v bao gm cc quyn to i tng, qun tr CSDL, thc thi cc cu lnh T-SQL, chn d liu vo bng, xem d liu bng view. SQL Server 2000 c mt s c ch cp cc quyn c th cho cc user trong mt CSDL. Cc quyn c th trn CSDL Quyn Database owner DBO role M t User c th c ch nh nh l ch (owner) ca CSDL v c th thc hin bt k hnh ng lin quan n CSDL. Tt c cc thnh vin ca sysadmin server role th t ng l thnh vin ca dbo role trong mi CSDL, v c th thc hin bt k thao tc lin quan n CSDL. Cc user v group c th c cp user truy xut n CSDL theo ti khon bo mt ca Windows 2000 hoc SQL Server 2000. Sau mt giy php ngi dng CSDL c cp cc quyn trong CSDL thng qua database role, role chung, v ch nh cp cc quyn cu lnh v i tng. Mt user m c th truy xut n 1 instance ca SQL Server 2000 (nhng ngi ny khng c ti khon truy ngi dng truy xut n CSDL c th) c th c cho php truy xut n CSDL nh l mt ngi khch (guest user). Ti khon guest c th c cp cc quyn c th trong CSDL ( c d liu). Theo mc nhin, mt CSDL khng c ti khon guest user. Tt c cc user c php truy xut n CSDL tr thnh thnh vin ca public role trong mi CSDL. Public role c th c cp cc quyn c th (Tng qut cc quyn cn thit cho tt c cc user ca CSDL).

User

Guest user

Public role

Cho php cc user c th c thm vo cc fixed database role trong mt Fixed CSDL. Cc Fixed database role cha cc quyn nh trc trong CSDL database role thi hnh cc hot ng ca database-wide. Cho php cc user c th thm vo user-defined database role trong mt User-defined CSDL. Cc role ny c th c to b administrator v cp mt cch c database role th cc quyn a ra hoc cc quyn trong CSDL.

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000 Quyn Statement permissions Object permissions M t

Trang 132

Quyn thc thi cc cu lnh qun tr (nh CREATE PROCEDURE) c th c cp, hu b, t chi cc users, groups, v roles. Quyn truy xut n cc i tng CSDL (nh l bng hay view) c th c cp, hu b, t chi cc users, groups, v roles. Quyn thc thi cc hnh ng trong mt CSDL c th c cp cho mt application, thm ch cp cho user. Mt application kt ni n mt CSDL v kch hot application role. Cc User truy xut n mt CSDL thng qua s kt ni ny dnh ly cc quyn kt hp vi application role trong sut qu trnh kt ni. Cc quyn pht hnh n mt user c th th khng lin quan khi user ang truy xut CSDL thng qua application role.

Application role

15.1.5 Fixed Database Roles. Mi CSDL c 9 role v CSDL c nh ngha trc vi cc quyn kt hp vi databasewide thc hin cc tc v khc nhau. Bn khng th xa nhng database role ny v cng khng th thay i cc quyn ca chng. gn mt ngi dng cc quyn ny trong mt CSDL, bn thm ti khon ca ngi dng vo database role. Nu nhng fixed database role ny khng gn tng hp cc quyn m bn cn th bn c th to cc role vi cc quyn ngi dng (thng thng nhiu quyn hn ch).

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000 9 fixed database role c th c trong SQL Server 2000. Database Role db_owner Thnh vin ca CSDL ny c th

Trang 133

Thc hin bt k tc v trong CSDL ca SQL Server 2000. Cc thnh vin ca role ny c cng quyn nh l ch ca CSDL l cc thnh vin ca dbo role. Thm hay xa cc user v group ca Windows 2000 hoc Win NT4.0 v cc user trong mt CSDL (dng th tc h thng sp_grantdbaccess). Qun l tt c cc permission, role, role membership, v chuyn ower (ownership) trong mt CSDL (s dng lnh GRANT, REVOKE, v DENY). Thm, hiu chnh, xa cc i tng trong CSDL (s dng lnh CREATE, ALTER, v DROP). Chy cc lnh DBCC, pht hnh checkpoint, v d phng CSDL (s dng cc cu lnh T-SQL: DBCC, CHECKPOINT, v BACKUP). c d liu t bt k cc bng hoc view ca ngi dng trong CSDL (bn c quyn SELECT i vi tt c table v view). Hiu chnh hoc xa d liu t cc bng hay view ca ngi dng trong CSDL (bn phi c quyn INSERT, UPDATE, v DELETE i vi tt c cc table v view).

db_accessadmin

db_securityadmin db_ddladmin db_backupoperator db_datareader Db_datawriter

Khng c d liu t bt k bng trong CSDL (bn khng c quyn SELECT i vi bt k i tng). C th permission on any Db_denydatareader objects). C th c s dng vi role db_ddladmin cho php to cc i tng lm ch bng dbo role, nhung khng c th c nhy cm cha trong cc i tng . Khng hiu chnh hay xa d liu t cc bng ca ngi dng trong Db_denydatawriter CSDL (bn khng c quyn INSERT, UPDATE, v DELETE i vi cc i tng) 15.2 To ti khon ng nhp (Login). 15.2.1 Dng Create Login Wizard.

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 134

Hnh 40: Chn ch ng nhp cho login ang to Nu bn chn Windows authentication th bn phi lin kt login ID ny vi mt user hay group ca Windows 2000 c sn. Khai bo nh trong hnh sau

Hnh 41: Xc nh 1 ti khon ca Windows 2000 v xc nh cho php hoc t chi login mi truy xut n Server

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 135

Nu bn chn SQL Server authentication, bn s to mt ti khon bo mt ca SQL Server 2000 nh trong hnh k.

Hnh 42: Khai bo LogiID v Password Phi ch nh r tn login v Password. ngn chn (deny) mt login, n gin bn ch cn xa b login t ni cha login trong Enterprise Manager (hoc t bng sysxlogins trong CSDL master). Sau khi bn xc nh kiu ng nhp v lin kt hay to ti khon bo mt, bn ch nh server role (nu cn) cho login ny trong hp thoi k. Nu user s khng l mt serverwide administrator, th khng cn chn cc server role.

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 136

Hnh 43: Ch nh server role cho login ang c to K tip bn ch nh CSDL (nu cn) cho user ny c th truy xut trong hp thoi k tip. Nh rng hu ht cc server role khng cung cp CSDL truy xut

Hnh 44: Ch nh 1 hay nhiu CSDL login ny c truy xut Cui cng, bn c SQL Server cho xem trc cc la chn m bn thc hin trc khi login mi c to thc s. Click vo nt Finish to login. Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 137

Hnh 45: Chn nt Finish hon tt 15.2.2 Dng Enterprise Manager to mt Login. to mt login bng Enterprise Manager, nhp nt phi chut ti Security/Login ca 1 instance, v chn New Login. Thng thng, cc trang Server Role, v Database Access trong hp thoi Propertie ca login

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 138

Hnh 46: Ch nh Name, ch chng thc, chn CSDL mc nh

Hnh 47: Chn ti khon ngi dng ca Windows

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 139

Bn cng chn mt CSDL mc nh v ngn ng trong trang General. CSDL mc nh s l CSDL hin hnh khi m User ng nhp vo. Mc nh khng chn l CSDL Master nhng bn nn chn 1 CSDL khc lm mc nh. Ngn ng mt nh l ngn ng mc nh ca instance hin hnh. Lu : Bn cng c th t chi s truy xut ca mt User hay group ca Windows. iu ny c p t n vic truy xut khc ca user hay group (k c thnh vin ca mt nhm khc m c login khc).

Hnh 48: Gn login thuc server role no nu cn Lu rng nu System Administrators server role c chn, th bn c th xem nhm built-in Administrator group, v login sa ca the SQL Server l nhng thnh vin ca sysadmin server role. Chn nt properties xem mt s propererties ca Server role

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 140

Hnh 49:Thnh vin ca server role

Hnh 50: Cc quyn hn c th ca Server role

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 141

Hnh 51: Ch nh CSDL c truy xut ti v cc quyn c th cho login Khi bn chn 1 CSDL th login l thnh vin ca public role trong mi CSDL. Bn khng th xa (remove) mt login ra khi public role. 15.2.3 To Login bng T-SQL. Bn cng c th to cc Login bng T-SQL Windows Logins Cc th tc h thng dng cp, hy, t chi, hiu chnh mt login cho mt user hay group ca Windows. Ch c nhng thnh vin ca sysadmin hoc securityadmin server roles mi c th thc thi cc th tc h thng ny Th tc h thng
Sp_grantlogin 'login'

M t To mt login cho mt user hay group ca Windows 2000. Hy login t SQL Server i vi cc user hay group ca Windows 2000 (hoc Windows NT 4.0). iu ny khng r rng lm v n vn c th c cp quyn truy xut n SQL Server 2000. Ngn chn mt user hay thnh vin ca Windows 2000 (hoc Windows NT 4.0) kt ni n SQL Server 2000. Ngn chn cc user hay group ca thgn qua mt login khc kt vi user hay group ca Windows. Thay i CSDL mc nh cho mt login. Trung Tm CNTT - Trng HCN Tp.HCM

Sp_revokelogin 'login'

Sp_denylogin 'login'

Sp_defaultdb 'login', 'database'

Gio trnh SQL Server2000 Th tc h thng M t

Trang 142

Sp_defaultlanguage 'login', Thay i ngn ng mc nh ca mt login. 'language'

V d: Sp_grantlogin 'CDCN4\Bill' SQL Server Logins Cc th tc h thng sau cho php cp, hy, t chi, hiu chnh mt login kt vi mt ti khon ngi dng SQL Server. Ch c cc thnh vin ca sysadmin hoc securityadmin server roles mi c th thc thi cc th tc h thng ny Th tc h thng M T To mt login SQL Server mi. Password l NULL nu
Sp_addlogin 'login', ['password', khng ch nh. CSDL mc nh l master nu khng ch 'database', 'language', 'sid', nh. Ngn ng mc nh l ngn ng ca server hin hnh encryption_option'] nu khng ch nh. Mc nh, password trong csdl

master.
Sp_droplogin 'login' Sp_password 'old_password', 'new_password', 'login' Sp_defaultdb 'login', 'database' Sp_defaultlanguage 'login', 'language'

Xa mt SQL Server login. Thm hoc thay i password cho SQL Server login. Thay i CSDL mc nh Thay i ngn ng mc nh.

V d: Sp_addlogin 'Joe', 'Joe123', 'Northwind' To mt SQL Server login mi c tn l Joe, vi password l Joe123 v CSDL mc nh Northwind. Server Roles Cc th tc h thng sau c dng thm hay xa mt login vo mt server role. Ch c thnh vin ca sysadmin server role mi c th thm cc login vo bt k server role. Cc thnh vin ca server role cng c th thm cc login vo server role . Th tc h thng M t
Sp_ addsrvrolemember 'login', 'role' Thm login nh l thnh vin ca server role. Sp_dropsrvrolemember 'login', 'role' Xo login khng l thnh vin ca mt server role.

V d: Sp_addsrvrolemember 'Joe', 'securityadmin' Thm login c tn l Joe vo server role Security Administrator. Database Access Cc th tc sau y c dng thm hay xa mt login (Windows hoc SQL Server) hin hu c quyn truy xut trong CSDL hin hnh. Khng ging nh SQL Server Enterprise Manager, bn c th cp mt nhm ca Windows 2000 (hoc Windows NT 4.0) group truy xut n CSDL m khng cn to login trc mt cch tng minh trong Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 143

bng sysxlogins. Ch c cc thnh vin ca sysadmin server role, v db_accessadmin v db_owner fixed database role mi c th thc thi cc th tc h thng ny. Th tc h thng
Sp_grantdbaccess 'login', 'name_in_db'

M t Thm mt login nh l mt user trong CSDL hin hnh. Mc d tn user name trong CSDL c th khc vi tn login, iu ny khng khuyn co.

Sp_revokedbaccess 'name' B mt login nh l mt user trong CSDL hin hnh.

V d: USE Northwind EXEC Sp_grantdbaccess 'Joe' Cho php login tn l Joe truy xut n CSDL hin hnh, dng user name l Joe trong CSDL Northwind. Database Roles Cc th tc h thng sau y c dng thay i database owner, thm hoc xa mt ti khon bo mt vo mt database role c sn, hoc to hoc xa mt user-defined database role. Use Northwind EXEC Sp_addrolemember 'db_securityadmin', ' CDCN4\KeToan' Thm ti khon CDCN4\KeToanvo db_securityadmin database role trogn CSDL Northwind. Th tc h thng M t Thay i owner ca mt CSDL ngi dng. Ch c nhng thnh c th thau i owner ca CSDL.

Sp_changedbowner vin ca sysadmin server role hoc owner database hin hnh mi 'login', remap_alias_flag

Thm mt ti khon vo mt database role trong CSDL hin hnh. Bn c th thm mt user-defined database role vo fixed hoc user-defined database role. Ch c nhng thnh vin ca sysadmin Sp_addrolemember 'role', 'security_account' server role v db_owner and db_security fixed database roles mi c th thm thnh vin vo database role. Thnh vin ca database role c th thnh vin vo cho database role . Xa mt ti khon t mt CSDL vo CSDL hin hnh. Ch c nhng thnh vin ca sysadmin server role v db_owner v Sp_droprolemember db_security fixed dababase roles mi c th xa cc thnh vin ra 'role', 'security_account' khi database role. Cc thnh vin ca database role mi c th xa cc thnh vin ra khi database role. Thm mt user-defined database role mi trong CSDL hin hnh. Mc d bn c th ch nh mt owner ca role, s dng mc nh l dbo l khng c khuyn co. Cc thnh vin ca sysadmin server role v db_securityadmin v db_owner fixed database roles mi c th to user-defined database roles. Xa mt user-defined database role CSDL hin hnh. Cc thnh Trung Tm CNTT - Trng HCN Tp.HCM

Sp_addrole 'role', 'owner'

Sp_droprole 'role'

Gio trnh SQL Server2000 Th tc h thng

Trang 144

M t vin ca sysadmin server role, db_securityadmin v db_owner fixed database roles mi c th xa user-defined database roles. M t Tr v cc thng tin ca tt c cc login hoc mt login c ch nh, k c cc CSDL m login c truy xut n v cc database roles m login l thnh vin. Tr v thng tin v tt c cc server roles v nhng thnh vin ca chng hoc tt c cc thnh vin trong mt server role ch nh. Tr v thng tin v tt c cc user hoc user ch nh trong CSDL hin hnh, k c tt c cc hi thnh vin ca database role.

xem cc thng tin v login, dng cc th tc h thng sau: Th tc h thng

Sp_helplogins [ 'login' ]

Sp_helpsrvrolemember [ 'role' ] Sp_helpuser [ 'security_account' ]

Sp_helprolemember [ 'role' Tr v cc thng tin ca tt c cc database role hoc tt c cc ] thnh vin trong database role ch nh trong CSDL hin hnh. Sp_helpntgroup [ 'name' ]

Tr v cc thng tin v cc nhm hoc 1 nhm ch nh ca Windows 2000 (hoc Windows NT 4.0) trong CSDL hin hnh.

Gn cc quyn Database Cc view v cc stored procedure c th c to trn cc table. Khi mt user c gng ly thng tin thng qua view hoc procedure, th SQL Server 2000 phi kim tra user c c php ly d liu hay khng. Nu view hoc procedure c lm ch bi mt user v ca cc bng c s li l ca mt user khc th SQL Server 2000 phi kim tra cc quyn trn mi object trong dy chuyn . Khi mt chui cc ownership ko di th iu ny s nh hng n vic thc hin. Nhng c l quan trng hn l n c th b gt gi cho nh qun tr vch ra v g li cc t vic a ra bo mt Cc quyn v lnh Cu lnh TransactSQL Quyn thc thi cu lnh Transact-SQL Tha k bi thnh vin ca sysadmin v dbcreator server roles. Mc d sysadmin v securityadmin server roles c th cp quyn mt cch trc tip cho cc ti khon thc hin cu lnh ny, Tm li cc ti khon bo mt s dng dbcreator server role nu system administrator i din quyn. Quyn ny ch tn ti trong CSDL master. K tha bi cc thnh vin ca sysadmin server role v db_owner v db_backupoperator fixed database roles. Mc d bn c th cp quyn chy nhng cu lnh ny mt cch trc tip n cc ti khon bo mt, mt cch tng qut bn s s dng db_backupoperator fixed database role. Trung Tm CNTT - Trng HCN Tp.HCM

CREATE DATABASE

BACKUP DATABASE BACKUP LOG

Gio trnh SQL Server2000 Cu lnh TransactSQL CREATE TABLE

Trang 145

Quyn thc thi cu lnh Transact-SQL

K tha cc thnh vin ca sysadmin server role v db_owner v db_ddladmin fixed database roles. Quyn cho php to nhng i CREATE VIEW tng th c cp trc tip n nh lp trnh trong sut thi gian trin khai. Theo mc nh cc object c lm ch bi ngi to ra CREATE i tng (mc d cc i tng to bi cc thnh vin ca sysadmin PROCEDURE server role th ch s l dbo role). Cc thnh vin ca db_owner hoc db_ddladmin fixed database roles c th c ch nh dbo role nh CREATE l owner ca i tng c to. Ngoi ra, cc thnh vin ca DEFAULT sysadmin server role hoc db_owner hoc db_ddladmin fixed database role c th ch nh bt k user nh l ch ca object m CREATE RULE chng to ra. Tuy nhin, cc user m khng l thnh vin ca mt trong cc role ny th khng th ch nh user khc hoc dbo role lm CREATE ch ca object chng to ra. FUNCTION CREATE TRIGGER V d: CREATE TABLE Northwind.dbo.CustomerTable (CustID nchar (5), CustomerName nvarchar (40)) Cho php to mt bng, cp ownership cho dbo role. Ch c nhng thnh vin sysadmin server role v db_owner hoc db_ddladmin fixed database roles c th thc hin mt cch thnh cng cu lnh ny. Thay i Ownership ca Object Mt thnh vin ca db_owner, db_ddladmin, hoc db_securityadmin fixed database role, hoc a member of the sysadmin server role c th thay i ownership ca bt k object trong bng cch chy th tc sp_changeobjectowner. sp_changeobjectowner 'CDCN4\KeToan.Customer', 'dbo' i ownership ca table Customer t CDCN4\KeToanBill cho dbo role. Lu Thay i owner ca mt object th s x tt c cc quyn hin c trn i tng. Nu bn cn gi li cc quyn th nn to Scrip trc khi i owner. Dng Enterprise Manager Grant, Deny, or Revoke quyn lnh Nhp nt phi chut ti CSDL cn thc hin cp/xo/t chi/xem cc quyn K tha bi ch ca table m ca sysadmin server role, v db_owner and db_ddladmin fixed database roles. Nhng thnh vin ny khng th cp quyn chy cu lnh ny cho nhng ti khon bo mt khc..

Trung Tm CNTT - Trng HCN Tp.HCM

Gio trnh SQL Server2000

Trang 146

Hnh 52: Trang Permission ca hp thoi thuc tnh ca CSDL Dng Transact-SQL Grant, Deny, or Revoke cc quyn Dng cu lnh GRANT CREATE TABLE TO . GRANT CREATE TABLE TO Joe, SalesManagers, [CDCN4\SQLServerAdmins] Cp quyn lnh CREATE TABLE cho Joe (mt SQL Server login), SalesManagers (a user-defined database role), v CDCN4\SQLServerAdmins (mt Windows group). Xem cc quyn bng Transact-SQL : Dng sp_helprotect EXEC sp_helprotect NULL, NULL, NULL, 's' Xem tt c cc quyn cu lnh trong CSDL hin hnh.

Trung Tm CNTT - Trng HCN Tp.HCM

Вам также может понравиться