You are on page 1of 155

LI NI U

Ngy nay, chng ta ang sng v lm vic trong thi i pht trin ca cng ngh thng tin. Nhu cu s dng thng tin ngy cng c mi ngi quan tm hn. Thng tin truy xut khng nhng phi chnh xc m yu cu cn phi trnh d tha d liu v nhng d thng trong cp nht d liu. Lin quan n vn ny, l thuyt c s d liu ng gp mt vai tr ht sc quan trng. Nhp mn c s d liu l mt trong nhng gio trnh thit yu i vi sinh vin chuyn ngnh Cng ngh thng tin. Thng qua gio trnh ny, chng ti mun trnh by mt s kin thc nn tng mang tnh cht gii thiu l thuyt v c s d liu. Ni dung ca gio trnh c chia lm 6 chng. Phn bi tp cng c nh km trong gio trnh ny nhm to iu kin cho vic nng cao hiu bit ca sinh vin trong tng ch . Ngoi nhng bi tp mc trung bnh nhm gip sinh vin c th t kim tra kin thc, trong gio trnh cn nu mt s bi tp khc nhm to iu kin cho sinh vin bc u lm quen vi cc nghin cu chuyn su trong lnh vc ny. Trong qu trnh bin son gio trnh ny, tc gi nhn c nhiu kin ng gp qu bu v ni dung chuyn mn ca PGS. TS. L Mnh Thnh, TS. Nguyn Mu Hn, TS. Trng Cng Tun cng nhiu ng nghip khc trong khoa Cng ngh thng tin - trng i hc Khoa hc Hu. Tc gi xin chn thnh cm n s gip qu gi . Mc d c nhiu c gng, nhng gio trnh ny khng th trnh khi nhng khuyt im. Tc gi mong mun nhn cc kin ng gp hy vng cht lng gio trnh s c tt hn trong cc ln ti bn sau. Hu, ngy 15 thng 12 nm 2009 Hong Quang 1

Chng 1. KHI QUT V C S D LIU


1.1. Cc khi nim c bn C s d liu (database) Mt c s d liu (CSDL) l mt tp hp cc d liu c lin quan vi nhau c lu tr trong my tnh theo mt quy nh nht nh nhm phc v cho mt mc ch qun l no . V d: CSDL phc v cho vic qun l cc chuyn bay ca mt hng hng khng cung cp cc thng tin v s hiu chuyn bay, ni xut pht, ni n, s ch ngi, ngy bay ca tt c cc chuyn bay trong nm; CSDL phc v cho cng tc qun l o to trong trng cha cc d liu phn nh thng tin v hc sinh, gio vin, mn hc, phng hc,... H qun tr c s d liu (Database Management System) H qun tr CSDL (HQTCSDL) l phn mm cho php ngi dng giao tip vi c s d liu, v thng qua cung cp mt mi trng thun li v hiu qu tm kim v lu tr thng tin ca c s d liu. V d: H qun tr c s d liu FOXPRO, h qun tr c s d liu SQL SERVER,... Vic phn bit mt HQTCSDL vi cc phn mm khc c da trn hai c trng c bn sau: - Qun l d liu bn. y l kh nng lu tr cc c s d liu phc v cho mc tiu khai thc lu di. - Truy cp cc khi lng ln d liu mt cch hiu qu. HQTCSDL cung cp cc thao tc cng nh phng php t chc d liu nhm gip cho ngi s dng truy cp vo cc d liu trong CSDL mt cch nhanh chng v thun li. Ngoi ra, mt h qun tr c s d liu cn c cc kh nng sau: Qun l c s d liu lu di (d liu khng b mt khi kt thc). Qun l mt s lng ln d liu. Cho php truy cp vo mi khi lng d liu ln vi yu cu x l nhanh. Cung cp t nht mt m hnh d liu, qua ngi dng c th quan st c d liu. Cung cp mt ngn ng bc cao, qua ngi dng c th nh ngha d liu v x l d liu. 2

H c s d liu (Database System) H c s d liu l mt h thng phn mm nhm qun l c s d liu ca mt h thng thng tin c th no . Nh vy cc thnh phn bn trong mt h c s d liu gm c: chng trnh, c s d liu, h qun tr c s d liu, ngi s dng. 1.2. Cc mc tru tng ha m hnh c s d liu M hnh d liu l s hnh thc ha ton hc ca d liu bao gm hai phn: - K hiu m t d liu - Tp hp cc php ton Mi m hnh CSDL c ba mc tru tng: - Mc vt l: Mc thp nht ca s tru tng m t d liu c lu tr mt cch thc s nh th no. Ti mc ny CSDL c xem l mt b cc tp tin, cc tp tin ch mc hoc cu trc lu tr khc gi chung l CSDL vt l. CSDL vt l tn ti bn trong cc thit b lu tr ph v nhiu CSDL vt l c th c qun l bi mt HQTCSDL. - Mc khi nim: Mc cao hn tip theo ca s tru tng m t nhng d liu no c lu tr trong CSDL v cc mi quan h no tn ti gia cc d liu ny. CSDL mc khi nim l s tru tng ha th gii thc khi n gn lin vi ngi s dng CSDL. Mt HQTCSDL cung cp mt ngn ng nh ngha mc khi nim (DDL-Data Definition Language) thng gi l m hnh c s d liu (database model). - Mc khung nhn (View ): Mc cao nht ca s tru tng m t ch mt phn ca ton b CSDL. Mc du s dng cu trc n gin hn mc logic, mt s phc tp vn cn tn ti do kch thc ln ca CSDL.H thng c th cung cp nhiu khung nhn i vi cng mt CSDL. Ta c th hnh dung cc mc tru tng ca CSDL nh trong hnh v sau y:
NSD 1 V ie w 1

NSD 2

V ie w 2

C S D L k h i n i m

CSD L v t l

NSD n

V ie w n

V d. Xt mt mng d liu hai chiu n x m phn t . 3

- Ti mc quan nim ta c th hnh dung mng ny nh l mt bng c n dng v m ct. Mng ny c c m t trong mt vi ngn ng lp trnh C nh sau: int A[n][m] ; mc ny ta khng bit c d liu c lu tr nh th no trong thit b nh m ch c th bit rng phn t dng i ct j l A[i][j]. - Mc vt l ca mng chnh l mng c lu tr trong thit b nh. - Mc khung nhn: T mc tru tng trn ta c th m t cc khung nhn ca mng. Chng hn, cho bit tng tt c cc gi tr trn dng i.

f(i) = A[i][j]
j=1

1.3. Lc v th hin xy dng cc CSDL chng ta phi hoch nh cho cc d liu trong CSDL mt qui cch lu tr. Qui cch ny ny c hnh thc ho nh l khung cho mi d liu trong CSDL, gi l lc CSDL. V d: t chc CSDL v cc nhn vin trong mt c quan chng ta to trc lc NHANVIEN(HOTEN,NAMSINH ,DIACHI, SODT) lu tr cc d liu bao gm: h tn, nm sinh, a ch, s in thoi ca cc nhn vin. Ni dung hin thi ca cc d liu trn lc gi l mt th hin ca lc . Chng hn, vi lc trn th bng sau y l mt th hin: Nguyn Van Anh Hong Th Lan Hunh Dung Trn Quang Phan Thanh Bnh 1957 1958 1958 1956 1960 Ph vang 14. L Li, Hu 315 Chi Lng, Hu 12 ng a, Hu 32 Chi Lng, Hu 3837756 3825424 3545245 3822789 3345053

Nh vy mt lc c th c nhiu th hin khc nhau. 1.4. Cc ngn ng CSDL Trong cc ngn ng chng trnh th cc ch th m t v cc ch th thc hin l hai b phn ca mt ngn ng. Trong cc HQTCSDL hai chc nng m t v tnh ton ni chung c chia thnh hai ngn ng khc nhau. Cc ngn ng nh ngha d liu (DDL)

Ngn ng nh ngha d liu DDL (Data Definition Language) khng phi l ngn ng th tc m ch l m t cc loi i tng v quan h gia cc i tng. Chng hn, cc chuyn bay ca mt hng hng khng c th c lu tr trong mt CSDL c nh ngha nh sau: CREATE TABLE CHUYEN-BAY (SO:INT, NG: CHAR(6),CH:INT , TU : CHAR (3),DEN : CHAR (3) ); trong SO l s hiu chuyn bay, c m t l mt s nguyn; NG l ngy thng thc hin chuyn bay, c m t l mt chui 6 k t; CH l s ch ngi cha c t trn chuyn bay, c m t l mt s nguyn; TU, DEN l k hiu ni xut pht v ni n, mi a im c vit tt bi 3 k t. Cc ngn ng x l d liu (DML) Cc h QTCSDL i hi phi c ngn ng x l cc php ton trn CSDL gi l DML (Data Manipulation Language) hoc ngn ng truy vn (Query Language). Chng hn, xt cc yu cu x l di y trn ngn ng SQL i vi c s d liu CHUYEN-BAY. - Gim 4 ch ngi trn chuyn bay 123 ngy 31 thng 8 c th vit: UPDATE CHUYEN-BAY SET CH = CH - 4 WHERE SO = 123 AND NG = AUG 31 ; - Thm vo chuyn bay 147 c 72 ch ngi t H ni (HAN) n Hu (HUI). INSERT INTO CHUYEN-BAY VALUES (147, AUG 21 , 72 , HAN , HUI ); - Tm li t CSDL s ch ngi cn trng trn chuyn bay 148 ngy 24 thng 7. SELECT CH FROM CHUYEN-BAY WHERE SO= 148 AND NG = JULY 24; - Tm li tt c cc chuyn bay t H ni n Hu ngy 20 thng 8. SELECT SO FROM CHUYEN-BAY WHERE NG = AUG 20 TU = HAN AND DEN = HUI; Cc ngn ng ch (Host Language) Ngoi nhng php x l thng thng sn c trong cc HQTCSDL cc chng trnh ng dng cn phi c thm mt s cng vic phc tp hn. 5

Chng hn, mt chng trnh c s dng bng mt hng hng khng ng k ch khng ch cn truy tm s ch trng t CSDL m cn phi lm cc cng vic phc tp hn nh in v, lm giy hn, i thoi vi ngi s dng,... Nh vy, cc chng trnh x l d liu cn c vit chung trong mt ngn ng ch - l ngn ng thun tin cho vic lp trnh, chng hn C, C++. Ngn ng ch c s dng cho cc quyt nh, hin th cu hi, c cu tr li,... 1.5. Cc m hnh c s d liu Mi h qun tr c s d liu cung cp mt m hnh cho c s d liu v thng qua m hnh ngi dng c th thy c bn cht ca d liu v mi quan h gia cc d liu. C cc loi m hnh c s d liu nh sau: M hnh E-R (Entity Relationship) M hnh mng M hnh phn cp M hnh quan h M hnh hng i tng 1.6. Quy trnh thit k c s d liu Qu trnh thit k mt c s d liu cho mt h c s d liu c th c thc hin bi s sau: Th gii thc

M hnh mc khi nim

M hnh E-R Thit k UML

M hnh mc logic

M hnh mng M hnh phn cp M hnh quan h M hnh hng i tng Chn h qun tr CSDL thc hin vic thit k. 6

M hnh mc vt l

Chng 2. M HNH THC TH-MI QUAN H


2.1. Gii thiu M hnh E-R c xut bi P. Chen (1976). y l mt m hnh khi nim da vo vic nhn thc th gii thc thng qua tp cc i tng c gi l cc thc th v cc mi quan h gia cc i tng ny. Thc th (entity) l mt vt th tn ti v phn bit c vi cc vt th khc. Chng hn, mi cn b ging dy trong trng i hc l mt thc th, mi sinh vin l mt thc th, mi mn hc l mt thc th,... Mt nhm bao gm cc thc th tng t nhau to thnh mt tp thc th. Chng hn, tp hp cc sinh vin trong khoa Cng ngh Thng tin l mt tp thc th, trong mi sinh vin l mt thc th; tp hp cc mn hc cho sinh vin ngnh Tin hc l tp thc th, trong mi mn hc l mt thc th. xc nh mt tp thc th cn phi thit lp mt s hu hn cc tnh cht c trng ca tt c cc thc th trong tp thc th , gi l cc thuc tnh. La chn cc tp thc th l mt bc quan trng trong vic xy dng s v mi quan h thc th phn nh thng tin qun l cho mt th gii thc no . M hnh E-R thng c biu din di dng s (s E R).

Trong : - Cc hnh ch nht biu din cc tp thc th - Hnh thoi biu din mi quan h, chng c lin kt vi cc tp thc th bng cc cnh v hng hoc c hng. 7

- Hnh Oval biu din thuc tnh, chng c lin kt vi cc tp thc th bng cc cnh v hng. Trong thc t, c nhiu h thng thng tin c thit k xut pht t m hnh E R. Da vo m hnh E-R, cc m hnh E-R m rng cng c xut nhm biu din s phong ph v phc tp ca th gii thc (thit k UML l mt v d). 2.2. Cc thnh phn c bn 2.2.1. Tp thc th Mi tp thc th c mt tp cc tnh cht c trng, mi tnh cht c trng ny c t bi mt tn gi l thuc tnh (attribute) ca tp thc th. Thng tin v mi thc th trong tp thc th c xc nh bi mt b gi tr cc thuc tnh. ng vi mi thuc tnh c mt tp cc gi tr cho thuc tnh gi l min. La chn tp cc thuc tnh cho cc tp thc th l mt bc quan trng trong thit k mt s CSDL quan nim. Mt thuc tnh hay mt tp ti thiu cc thuc tnh m cc gi tr ca n xc nh duy nht mt thc th trong mt tp thc th gi l kha (key) cho tp thc th . Trong cc v d sau ny ta quy c kha ca mt tp thc th ch c mt thuc tnh v thuc tnh c gi l thuc tnh kha. V d: qun l tp cc sinh vin trong mt trng i hc, ngi ta c th s dng tp thc th sinh vin bao gm mt s cc thuc tnh sau: MaSV HoTen Sinhvien Lop
NgaySinh

SoThich Ta c mt th hin ca tp thc th Sinhvien, chng hn: (K25-15, L Vn Nam, Tin_K30B, 15/12/83, {m nhc, bng }) Lu trong vic thit k cc tp thc th: - Th nht, pht hin mt tp thc th bng cch pht hin tp cc i tng m ta cn qun l (c 2 phn t tr ln). T xc nh cc thng tin cn qun l cho tp thc th (cc thng tin chnh l cc thuc tnh). - Th hai, cn c thuc tnh kho cho mi tp thc th. 8

- Th ba, khng s dng thuc tnh m d liu ca n c ly t thuc tnh ca tp thc th khc, m thay vo iu l mi quan h gia cc tp thc th. 2.2.2. Mi quan h gia cc tp thc th Mt mi quan h trong m hnh E - R biu th quan h gia cc thc th ca cc tp thc th. Mi quan h R gia hai tp thc th E1 v E2 c biu din trong s E - R nh sau: E1 R E2

Ta c th din t khi nim mi quan h gia cc tp thc th mt cch hnh thc nh sau: Mi quan h R trn cc tp thc th E1, E2,..., En l mt tp con ca tch Descartes E1 x E2 x...x En. V vy, mt th hin ca R l mt b n thnh phn (e1, e2,..., en), gi tt l n-b, trong ei Ei (i = 1..n). Nu n-b (e1,e2,...,en) l mt th hin ca R th ta ni rng e1, e2,..., en c mi quan h R vi nhau. Lu : Mt mi quan h phi tng ng vi mt ng ngha xc nh. V d xt hai tp thc th: Sinhvien (tp cc thc th sinh vin) v Lp (tp cc thc th lp hc), xt mi quan h Hoctai c ng ngha nh sau: (s, l) Hoctai (vi s Sinhvien, l Lp) Sinh vin s hc ti lp l. S biu din mi quan h bng E - R. Sinhvien (1,1) (1,n) Lp

Hoctai

Lu : Rng buc v cc bn s ca mt mi quan h: trn mi cung ni gia hnh ch nht v hnh thoi phi c cp (min, max) c gi l bn s ca mi quan h. Nu min/max ln hn 1, ta c th vit tt l n. xc nh mt mi quan h l thuc loi no (1-1, 1-n, hay n-n), ta cn da vo bn s. C th, cho mi quan h R nh sau:
(min1, max1) (min2, max2)

E1

E2

Rng buc ny ch ra rng : o Mi phn t (thc th) ca E1 c mi quan h R vi t nht l min1 phn t ca E2, v nhiu nht l max1 phn t ca E2. 9

o Tng t, mi phn t ca E2 c mi quan h R vi t nht l min2 phn t ca E1, v nhiu nht l max2 phn t ca E1. Khi , mi quan h R gia E1 v E2 l mi quan h: max2 - max1 Cc thuc tnh ca mt mi quan h: mt mi quan h cng c th c cc thuc tnh ca ring n (c bit l cc mi quan h n - n). Cc thuc tnh ca mt mi quan h quy c rng ch l cc thuc tnh n tr. Trong trng hp mi quan h R c thuc tnh, nu R l mi quan h 1-1 th ta c th chuyn thuc tnh ny thnh thuc tnh ca mt trong hai tp thc th tham gia, v nu R l mi quan h 1-n th chuyn thuc tnh ny thnh thuc tnh ca tp thc th tng ng vi pha nhiu. 2.3. Phn loi mi quan h 2.3.1. Mi quan h nh nguyn y l mi quan h gia hai tp thc th, bao gm: Quan h mt - mt: Mi quan h R gia tp thc th A v tp thc th B c gi l mi quan h mt-mt (hay 1-1) nu mi thc th ca A c quan h R vi duy nht mt thc th ca B v ngc li mi thc th ca B c quan h R duy nht vi mt thc th ca A. Nu R l mi quan h mt - mt gia A v B th c cc cnh nh hng t hnh thoi nhn R n cc hnh ch nht nhn A v B.
A R B

V d: Gi s chng ta ang xt hai tp thc th sau: tp thc th KHOA, bao gm tt c cc khoa trong mt trng i hc no v tp thc th TRUONGKHOA, bao gm tt c cc trng khoa trong trng ny. Mi quan h QUANLY gia cc tp thc th KHOA v TRUONGKHOA theo ngha trng khoa X c quan h QUANLY vi khoa Y nu X l trng khoa ca khoa Y. R rng rng mi quan h ny l mt-mt, v rng mi khoa c mt trng khoa v mi trng khoa qun l mt khoa duy nht. Ta c th thy mi quan h ny mt cch trc quan bi hnh sau:

10

KHOA Ton L Ho Vn S

QUN L

TRUONGKHOA Nguyn Vn Nam Trng Vit H H Huy Khi Nguyn Thnh Trung L Th Tm

Quan h nhiu - mt: Gi s R l mi quan h gia hai tp thc th E1 v E2. Nu mt thc th E2 lin kt vi 0 hoc nhiu thc th ca E1, v mi thc th trong E1 lin kt vi nhiu nht mt thc th ca tp thc th E2 th ni rng R l mi quan h nhiu - mt t E1 vo E2. Nu R l mi quan h nhiu - mt t A vo B th ta v mt cnh nh hng t hnh thoi nhn R vo hnh ch nht nhn B v mt cnh khng nh hng t hnh thoi nhn R vo hnh ch nht nhn A.
A R B

V d: Gi s KHOA l tp thc th bao gm tt c cc khoa cn NHANVIEN l tp th tt c cc cn b ging dy trong mt trng i hc. Mi quan h LAMVIEC gia KHOA v NHANVIEN theo ngha nhn vin x lm vic trong khoa Y l quan h nhiu - mt t tp thc th NHANVIEN vo tp thc th KHOA . Mi quan h ny c th c din t bi hnh sau: KHOA TON LAMVIEC NHANVIEN Nguyn Ngc Hoan Bi Th Tn L T Lc Nguyn Ngc Lm L Trn Thu Trang Nguyn Mnh Qun Hunh Ngc Long inh Ngc Mai Ho u Tun Ngc

11

Quan h nhiu - nhiu: Cho hai tp thc th E1, E2 v mi quan h R gia chng. Nu mt thc th ca E1 c quan h R vi 0 hoc nhiu thc th ca E2 v ngc li, mi thc th ca E2 c quan h R vi 0 hoc nhiu thc th ca E1 th ta ni rng R l mi quan h nhiu-nhiu gia E1 v E2 . V d: Gi s SINHVIN l tp thc th cc sinh vin cn kho st trong mt trng i hc, cn NGOAINGU l tp thc th cc ngoi ng m cc sinh vin c hc, th mi quan h BIET vi ngha sinh vin x bit ngoi ng y l mt quan h nhiu - nhiu, v rng mt sinh vin c th bit nhiu ngoi ng v mi mt ngoi ng c th c bit bi nhiu sinh vin. NGOAINGU Ting Nga Ting Anh Ting Php Ting Trung BIET SINHVIEN Phan nh Diu Nguyn Vn Nhn Lm Cng Quang Nguyn Vn Chin Nguyn Xun Cng Nguyn Th Thng

2.3.2. Mi quan h Is-a (mi quan h k tha) Cho hai tp thc th A v B chng ta ni rng A c mi quan h I-sa vi B, k hiu l A Isa B, nu mi thc th ca A l mt thc th ca B. Nh vy A bao gm cc thuc tnh ca B ng thi thm cc thuc tnh khc. Chng hn, B l tp thc th cc nhn vin ca khoa Cng ngh Thng tin, A l tp thc th cc cu th bng trong khoa th A Isa B, v rng mt cu th trong khoa cng l mt nhn vin ca khoa. Ngoi nhng thuc tnh chung vi tp thc th A nh h tn, tui, hc hm, hc v, a ch B cn thm mt s thuc tnh khc chng hn nh v tr cu th s tham gia trong sn. Mi quan h Is-a l trng hp c bit ca mi quan h nh nguyn 1-1. Ta c th biu din n trong m hnh E-R nh sau:

12

E1

E1 Hoc E2

Is-a

E2 Nhn xt: Nu E1 Is-a E2 th mi thc th thuc E1 th cng thuc E2 v mi thuc tnh no c trong E2 th cng c trong E1. V d: HT NS SH Ngi Lng Giaovien TB SV-TN SV Hocbong SV-CTN

2.3.3. Mi quan h phn x (mi quan h quy) Mi quan h phn x l mi quan h gia cc thc th ca cng mt tp thc th. Biu din: E R V d: Ngi
Con(0,1) Cha(1,1)

LaCha n1 l b ca n2. 13

Ng ngha:

(n1, n2) LaCha

Lu : i vi mi quan h phn x, chng ta cn xc nh r tn vai tr cho mi bn s c trong mi quan h ny. Cc mi quan h phn x 1-1, 1-n, hoc n-n cng tng t nh mi quan h nh nguyn 1-1, 1-n, n-n. V d: (Mi quan h phn x 1-1)
Vo(0,1)

Ngi
Chong(0,1)

KetHon

Ng ngha:

(n1, n2) KetHon n1 hin l chng ca n2

V d: (Mi quan h phn x n-n)


Id_Nguoi HT NS YeuAi(0,n)

Nguoi
AiYeu(0,n)

Yeu

TG

Ng ngha: (n1, n2) Yeu n1 tng yu n2 trong thi gian TG 2.3.4. Mi quan h a nguyn Mi quan h a nguyn l mi quan h gia 3 tp thc th tr ln. GiaoVien
(0,n)

Day
(n,n) (n,n)

hk Lop

MonHoc

Ng ngha: (g, l, m) Day gio vin g dy mn m cho lp l vo hc k l hk ca nm hc n.

14

Lu : Rng buc hm ca mi quan h a nguyn: Trong mi quan h a nguyn, ngoi rng buc v bn s cn c "rng buc hm". V d mi quan h Day nu trn c rng buc hm nh sau: {Lop, MonHoc} {GiaoVien} (c l: Lop v MonHoc xc nh GiaoVien). iu ny c ngha rng: nu bit trc lp hc l v mn hc m th xc nh ti a mt gio vin g ca mi quan h. Khi , trn m hnh E-R s dng cung mi tn nh sau: GiaoVien
(0,n)

Day
(n,n) (n,n)

hk Lop

MonHoc

15

Chng 3. M HNH QUAN H


3.1. Quan h - lc quan h 3.1.1. Quan h (Relation) Quan h l mt bng m khng c dng no ging nhau, mi dng ca bng c gi l b (tuple) v mi ct ca bng c k hiu bng mt tn gi l thuc tnh ca quan h. V d: r= A a a b b B b d c a C c b a a

Nh vy, ta c th xem quan h nh l mt tp cc b. V d: t = (a, d, b) r V vy, ngi ta cn nh ngha: quan h r trn tp thuc tnh A1, A2, , An: r Dom(A1) x Dom(A2) x x Dom(An) Trong , Dom(Ai) l tp cc gi tr c th c ca Ai (min tr ca Ai), vi i = 1, 2, ..., n. 3.1.2. Lc quan h (Relational Schema) Lc quan h l mt cp c th t: R = <U , SC> Trong : U l tp hu hn cc thuc tnh ca lc quan h R. SC l tp cc rng buc ca lc quan h R. V d: Sinhvien = <U, SC> U = {MaSV, Hoten, Ngaysinh} SC: MaSV xc nh duy nht (kho ca Sinhvien).

Lu : (Quan h r trn lc quan h R) Cho lc quan h R = <U, SC>, khi quan h r c gi l quan h trn R nu r c tp thuc tnh U v tha mn cc rng buc trong SC Ta xem: R = { r | r c tp thuc tnh U v tha cc rng buc trong SC}

16

Vi thut ng thng dng: Mt tp cc lc quan h trong mt h thng thng tin th c gi l mt m hnh c s d liu quan h (c th c gi tt l m hnh quan h, hay: lc c s d liu quan h). Tp hp cc quan h (hin hnh) ca cc lc quan h trong mt m hnh quan h th c gi l c s d liu quan h. 3.2. Kho ca quan h nh ngha: Cho quan h r ca lc quan h R vi tp thuc tnh U = {A1, A2, , An}, gi tt l lc R(A1, A2, , An). Tp X U (X : tp thuc tnh) c gi l kho ca quan h r nu n tha mn c 2 iu kin: i) Vi mi b t r u c gi tr khc nhau trn X, khi X c gi l siu kho ca r. ii) X X (tp con thc s ca X): X l siu kho ca r. V d: A B C r= a b c b b a c a a Suy ra: r c hai kho: {A}, {B, C}, vit tt l A v BC. Lu : X c gi l kho ca lc quan h R nu X l kho ca mi quan h r trn lc quan h R. Kho chnh (Primary key) ca mt lc quan h: Mt lc quan h c th c nhiu kha. Trong s , phi c ng mt kha chnh do ngi thit k c s d liu quy c. Kha chnh ca mt lc quan h thng c s dng cho vic tham chiu d liu. Trong s biu din mt m hnh quan h, biu din rng buc kha chnh, ta s dng k hiu # ngay trc tn cc thuc tnh ca kha chnh Kha ngoi (Foreign key) ca mt lc quan h: Cho 2 lc quan h R1 = <U1, SC1> v R2 = <U2, SC2>. Gi PK U1 l kho chnh ca R1. Xt FK U2. Khi , ta gi FK l kho ngoi ca lc quan h R2 tham chiu n R1 nu c s d liu lun tha mn 2 iu kin sau: i. Min tr ca FK l trng vi min tr ca PK. ii. Gi tr ca FK hoc l NULL hoc phi bng mt gi tr hin c no ca PK. 17

V d: Hnh v sau biu din rng buc kha ngoi: {HocTai} l kha ngoi ca lc quan h SinhVien tham chiu n lc quan h Lop. SinhVien #MaSV HoTen NgaySinh HocTai Lop #MaLop TenLop

3.3. Chuyn i m hnh E-R sang m hnh quan h Vo: S E-R Ra: Tp cc lc quan h (DB). Quy c v mt s k hiu: ER: m hnh ER (gi thit). DB: lc c s d liu quan h cn to lp. UR: tp tt c cc thuc tnh ca lc quan h R. E: tp tt c cc thuc tnh n v ca tp thc th E. R: tp tt c cc thuc tnh ca mi quan h R. PKR: kho chnh ca lc quan h R (Primary Key). KE: tp cc thuc tnh kho ca tp thc th E. min(E;R), max(E;R): cc ch s ti thiu & cc i ca bng s trn cung ni tp thc th F vi mi quan h R. FKR: tp tt c cc kho ngoi ca lc quan h R. ch FK l mt kho ngoi ca lc quan h R (tc l FK FKR) tham chiu n kho chnh ca quan h R ta s dng k hiu: FK PKR. Tn cc thuc tnh c trong FK vn c th khc vi tn cc thuc tnh c trong PKR nhng FK cn tha mn ng thi 2 iu kin sau: Cc thuc tnh trong FK phi c cng min tr vi cc thuc tnh tng ng trong PKR. Gi tr ca FK ti mt b t ch c th l NULL hoc bng gi tr PKR ti mt b t no R. Cc iu kin trn ca kho ngoi FK c t mt rng buc ton vn tham chiu gia hai quan h R & R. Lu rng, ch rng buc ton vn tham chiu ny ng thi tn cc thuc tnh c trong FK phi trng tn vi cc thuc tnh tng ng c trong PKR, ta s k hiu: FK PKR. Khi , thut ton chuyn i t m hnh ER sang m hnh quan h ln lt tri qua cc bc sau: 18

Bc 1: Chuyn i cc tp thc th thnh cc lc quan h. Mi tp thc th E c chuyn thnh lc quan h R(E) c cng tn v cng tp thuc tnh. Thuc tnh kho ca E chuyn thnh kho chnh ca R(E). Lu : Chuyn i thuc tnh a tr Nu E c thuc tnh a tr A th trong lc quan h, chng ta phi to thm lc quan h mi biu din thuc tnh a tr ny. UR(A) = {PKR(E), A} R(A) c kho ngoi la PKR(E) tham chiu n PKR(E) cua R(E). Ly v d thuc tnh s thch ca lc quan h Sinhvien. MaSV Sinhvien HoTen SinhVien #MaSV HoTen SoThich #MaSV #SoThich

SoThich Chng hn, ta c cc quan h tng ng vi d liu nh sau: SinhVien MaSV HoTen 1 L Vn A 2 L Vn B 3 L Vn C SoThich MaSV 1 1 1 2 2

SoThich Phim Bng Ni Tr Phim Bng

Chuyn i mi quan h Is a (mi quan h k tha) chuyn i mi quan h Is - s c hai cch thc hin.

19

V d: M hnh ER: Nguoi DTB HB SinhVien IdNguoi HoTen NgaySinh Luong BienChe

GiaoVien

Kt qu chuyn i: Cch 1: (Khng s dng lc quan h biu din lp cha) SinhVien #MaSV HoTen NgaySinh DTB HB GiaoVien #MaGV HoTen NgaySinh Luong BienChe

Trong : MaSV, MaGV chnh l IdNguoi Cch 2: (B sung kho ngoi cho cc lc quan h biu din lp con) SinhVien #MaSV DTB HB Nguoi #IdNguoi HoTen NgaySinh GiaoVien #MaGV Luong BienChe

Bc 2: Chuyn i cc mi quan h nh nguyn 1 1. Phng php: B sung kho ngoi cho mt trong hai lc quan h V d: M hnh ER
MaGV HT NS (0,1) (1,1) MaLop

GiaoVien

ChuNhiem

Lop

TenLop

20

Ng ngha: (g, l) ChuNhiem Gio vin g hin l gio vin ch nhim ca lp l. Kt qu chuyn i GiaoVien #MaGV HT NS Lop #MaLop TenLop MaGVCN

Bc 3: Chuyn i cc mi quan h nh nguyn 1 n (mt - nhiu) Phng php: B sung kho ngoi cho lc quan h tng ng vi pha nhiu. V d: M hnh E-R
MaSV HT NS (1,1) (n, n) MaLop

SinhVien

HocTai

Lop

TenLop

Kt qu chuyn i SinhVien #MaSV HT NS MaLop Lop #MaLop TenLop

Bc 4: Chuyn i cc mi quan h nh nguyn n-n (nhiu nhiu) Phng php: Xt mi quan h R gia E1 v E2 l mi quan h n-n. Khi , ta cn to thm mt lc quan h mi S biu din mi quan h R (t cng tn vi mi quan h). Trong , tp thuc tnh c xc nh nh sau: US = PKR(E1) PKR(E2) , vi l tp thuc tnh ca mi quan h. Cc rng buc: Kho chnh: PKS = PKR(E1) PKR(E2) Kho ngoi: S c hai kho ngoi: - PKR(E1) ca S tham chiu n R(E1), - PKR(E2) ca S tham chiu n R(E2). 21

V d: M hnh E-R
Nam MaGV HT NS (1,n) (1,n) MaMH

GiaoVien

Day

MH

TenMH

Ng ngha: (g, m) Day Gio vin g dy mn hc m bt u t nm Nam. Kt qu chuyn i:


GiaoVien #MaGV HT NS Day #MaGV #MaMH Nam MH #MaMH TenMH

Lu : i vi mi quan h 1-1, 1-n ta cng c th chuyn i tng t nh vic chuyn i i vi mi quan h n-n. Vic chuyn i ch khc v rng buc kho chnh m thi. Mi quan h 1-1
MaGV HT NS (0,1) (1,1) MaLop

GiaoVien

ChuNhiem

Lop

TenLop

GiaoVien #MaGV HT NS

ChuNhiem #MaGV MaLop

Lop #MaLop TenLop

Trong trng hp ny, ta c th chn MaLop l kho chnh cng c.

22

Mi quan h 1-n.
MaSV HT NS (1,1)

(n,n)
HocTai

MaLop

SinhVien

Lop

TenLop

Kt qu chuyn i: SinhVien #MaSV HT NS HocTai #MaSV MaLop Lop #MaLop TenLop

Bc 5: Chuyn i mi quan h phn x. c thc hin tng t nh vic chuyn i mi quan h nh nguyn 1-1, 1-n, n-n. V d 1 (Mi quan h phn x 1-1)
Id_Nguoi HT NS Vo(0,1)

Nguoi
Chong(0,1)

KetHon

Nguoi #Id_Nguoi HT NS Id_VoChong

23

V d 2 (Mi quan h phn x 1-n)


Id_Nguoi HT NS Con(0,n)

Nguoi
Bo(1,1)

LaCha

Nguoi #Id_Nguoi HT NS Id_Bo V d 3 (Mi quan h phn x n-n)


Id_Nguoi HT NS YeuAi(0,n)

Nguoi
AiYeu(0,n)

Yeu

TG

Nguoi #Id_Nguoi HT NS Bc 6: Chuyn i mi quan h a nguyn.

Yeu #Id_YeuAi #Id_AiYeu TG

Phng php: Tng t nh phng php chuyn i mi quan h nh nguyn n-n.

24

V d: M hnh E-R
NamHoc MaGV HT NS (n,n) (n,n) MaMH

GiaoVien
(n,n)

Day

MH
MaLop

TenMH

Lop

TenLop

Kt qu chuyn i: GiaoVien #MaGV HT NS Lop #MaLop TenLop

Day MaGV #MaLop #MaMH NamHoc

MH #MaMH TenMH

Lu : Kho chnh ca lc quan h S l hp cc kho chnh ca cc lc lin quan. Tuy nhin, nu c rng buc hm th phi loi b kho chnh tng ng vi tp thc th c mi tn. 3.4. i s quan h 3.4.1. Php hp (Union) Hp ca hai quan h r v s c cng mt lc , k hiu r s, c xc nh nh sau: r s = {t | t r t s} 3.4.2. Php giao (Intersection) Giao ca hai quan h r v s c cng mt lc , k hiu r s, c xc nh nh sau: 25

r s = {t | t r t s} 3.4.3. Php hiu (Difference) Hiu ca hai quan h r v s c cng mt lc , k hiu r - s, c xc nh nh sau: r - s = {t | t r t s} Lu : Php giao c th biu din thng qua php hiu: r s = r - (r - s) 3.4.4. Tch Descartes (Cartersian Product) Cho r v s l cc quan h xc nh ln lt trn tp cc thuc tnh {A1, A2, , An} v {B1, B2, , Bm}. Tch Descartes ca r v s, k hiu: r s, l tp cc b c (m+n) thnh phn sao cho n thnh phn u l mt b thuc r v m thnh phn sau l mt b thuc s. Hay: r s = {(t1,t2) | t1 r t2 s} V d: Xt r= A a a b B b c c a C a a D b c A a a a a b b B b b c c c c E c d C a a a a a a D b c b c b c E c d c d c d B b c c rs= A a s= A a a B b B b a A a b B c c

rs=

A a a b a

r-s=

Xt

r=

q=

A a a b

B b c c

rq=

Nhn xt:

|rs|=|r||s| 26

3.4.5. Php chiu (Projection) Cho quan h r trn lc quan h R = <UR,SC>, v X UR, php chiu trn tp X ca quan h r, k hiu: X(r), c nh ngha: X(r) = {t[X] | t r} y, t[X] ch mt b t ch cha cc thnh phn c trong X. V d: Xt v d trn. A A(r) a b
CD(q) =

C a a

D b c

Lu : | X(r) | | r | n gin ta c th k hiu CD thay cho {C, D} 3.4.6. Php chn (Selection) Cho quan h r v f l mt biu thc logic m mi b trn r c th tha mn hoc khng. Khi , php chn trn r cc b tha mn f, k hiu f(r), c xc nh nh sau:
f(r) = {t | f(t) l ng}

V d: r= A a a b B b c c
A=a(r) =

A a a

B b c

3.4.7. Php ni (Join) Xt hai quan h r v s. Gi f l mt biu thc logic m mi b thuc tch Descartes r s c th tha mn hoc khng. Khi , php ni r v s theo s iu kin f, c k hiu: r , c xc nh nh sau: f s = f (r s) r f V d: A B C C D r= s= a 1 1 1 2 b 2 1 2 1 c 0 2 Vi f = r.B s.D, ta c: 27

A B r.C s.C D a 1 1 2 1 f b 2 1 1 2 b 2 1 2 1 Lu : Nu r v s c cc thuc tnh trng tn nhau th phi i tn cc thuc r s tnh ny trong quan h thu c t . f r s= Php ni t nhin: Nu r v s c cc thuc tnh chung v f l mt biu thc logic ch mi cp thuc tnh chung ny u c gi tr bng nhau, th ta s . gi php ni ny l php ni t nhin v k hiu l: r V d: Xt v d trn. r s= A a b c B 1 2 0 C 1 1 2 D 2 2 1

Lu : Quan h thu c t php ni t nhin c th loi b cc thuc tnh lp. 3.4.8. Php chia (Division) Gi r l quan h trn tp thuc tnh {A1, A2, , An} s l quan h trn tp thuc tnh {Ap+1, Ap+2, , An}, vi p > 0. Khi : r s = {(a1, a2, , ap) | (ap+1, ap+2, , an) s; (a1, a2, , an) r} V d: A B C D A B C D r= s= rs= a b c d c d a b a b e f e f e d b c e f e d c d e d e f a b d e Nhn xt: Php chia c th c nh ngha thng qua php ton khc. Vi r, s ln lt l quan h trn tp thuc tnh Z, X (X Z). r s = T1 T2 (c tp thuc tnh: Y = Z X) = T1 - Y((s T1) - r) , vi T1 = Y(r) 28

V d:

Xt v d trn. A a b e B b c d T1 s = A a b e a b e B b c d b c d C c c c e e e A b D d d d f f f B c

T1 = Y(r) =

= (T1 s) - r =

A b b B b d

B c c

C c e

D d f

Y() =

rs=

A a e

ng dng ca i s quan h Da vo i s quan h c xt trn, ngi ta c th xy dng cc biu thc i s quan h tr li cc cu truy vn. V d: Xt lc quan h trnh by trong mc trc. Xt 1 CSDL hin hnh bao gm cc quan h sau: NGUOI, GIAOVIEN, SINHVIEN, LOP, MONHOC, DAY. S dng cc php ton i s quan h tr li cc cu hi sau: Lit k h tn nhng sinh vin sinh vo ngy 1/1/1985. Hoten (Ngaysinh = {1/1/1985}(Nguoi SinhVien )) (Ngaysinh = {1/1/1985}(Nguoi))) = Hoten (Sinhvien Cho bit h tn ca nhng gio vin c dy mn CSDL. Hoten (IdMon = CSDL(Nguoi Giaovien Day)) Tm h tn v lng nhng gio vin dy mn hc trn 60 tit cho lp no c s s > 60. Hoten,Luong((Sotiet>60)(Siso>60)(Nguoi Giaovien Day Monhoc Lop)) = Hoten,Luong(Nguoi Giaovien Day
(Sotiet>60)(Monhoc) (Siso>60)(Lop))

29

Chng 4. M

HNH HNG I TNG

4.1. Gii thiu chung M hnh hng i tng (Object-Oriented Model) hnh thnh vo cui nhng nm 1980, pht trin M vi nhiu h qun tr c s d liu c xy dng da trn nn tng l thuyt ca m hnh ny nh: O2, Object Store, Objective, Orion, Jasmin, ... Cho n nay, m hnh ny vn cha c chun thng nht. 4.2. Cc thnh phn c bn 4.2.1. Lp, i tng v nh danh i tng Lp c hiu nh l mt tp cc thc th, hay cc i tng c cng cc c tnh v hnh vi ging nhau. Cc c tnh ny c m t nh cc thuc tnh bn trong mt lp i tng. Cc hnh vi chnh l cc phng thc (methods) c thc hin trn mi i tng ca lp . Mi i tng trong mt lp c xc nh thng qua tn ca i tng. Ngi ta s dng thuc tnh nh danh OID (Object Identifier) xc nh tn duy nht cho cc i tng trong mi lp. M Hnh Hng i Tng Lp i tng nh danh i tng (mc nh) M Hnh E-R Tp thc th Thc th Thuc tnh kho (do ngi s dng thit k)

4.2.2. Thuc tnh v phng thc Vic khai bo cc thuc tnh th hin cu trc ca lp c khai bo. Mi thuc tnh c th l thuc tnh n tr hoc thuc tnh a tr (s dng t kho set khai bo). Ngoi ra, mt thuc tnh c th l mt thuc tnh phc hp: l thuc tnh c xc nh t tp cc thuc tnh khc (s dng t kho tuple khai bo). Thuc tnh mi quan h l thuc tnh biu din mi quan h gia lp ny vi lp kia v gi tr ca n l OID ca lp kia. Vic khai bo cc phng thc ca mi i tng trong mt lp nhm phn nh cc hnh vi c thc hin trn mi i tng thuc lp .

30

Mu c t cho mt lp c th c xc nh nh sau: Class <tn lp> properties {khai bo cc thuc tnh} Operations {khai bo cc phng thc} end <tn lp>. V d: M hnh ER m rng
Id_SV HT NS ST NN

SV

(1 , 1)

Hoctai

(1 , n)

LOP
Siso

TDNN CB

Id_Lop

Ten

M hnh hng i tng: class SV properties Id_SV : string; HT : string; NS : Date; ST : set(string); TDNN : set( tuple( NN : string; CB : char(1))); Hoctai : LOP; { mang gi tr OID ca class LOP} operations . end SV; {=======================================} class LOP properties Id_Lop : string; Ten : string; Siso : integer; [Gom : set(SV); {Inverse SV.Hoctai}] operations . end LOP;

31

Minh ho d liu: LOP: OID Lop001 Lop002 SV: OID SV1 SV2 SV3 SV4 HT X Y Z T Id_Lop A B Ten TinK25A TinK25B Siso 70 80 Hoctai {SV1, SV2} {SV2, SV4} Hoctai Lop001 Lop001 Lop002 Lop002

NS ST 1/1/85 {BB, BD, CN} 11/3/84 {B} 1/1/85 11/3/84 {BB, CN}

TDNN (NN, CB) {(Anh, C), (Nga, B)} {(Anh, B)} {(Anh, C), (Nga, A)}

Lu : khai bo thuc tnh ngc ca mt thuc tnh quan h, ta dng t kho Inverse. V d: [Gom : set(SV); {Inverse SV.Hoctai}] iu ny c ngha Gom l thuc tnh mi quan h ngc ca thuc tnh Hoctai thuc lp SV. Vic dng thuc tnh ngc cng c u im l thun tin trong vic biu din cc cu truy vn. Tuy nhin n cng c nhc im l gy d tha d liu. 4.2.3. Phn cp lp v s k tha Cc lp trong m hnh hng i tng c th c t chc theo mt phn cp lp, tng t nh mi quan h Is-a ca m hnh E-R. Ta ni rng lp C2 l lp con ca lp C1, c ngha l tp cc c tnh (cc thuc tnh v phng thc) ca lp C1 l tp con ca tp cc c tnh ca lp C2, ng thi tp cc i tng ca lp C2 li l tp con ca tp cc i tng ca lp C1. 4.3. Chuyn i m hnh ER sang m hnh hng i tng Qu trnh chuyn i c thc hin qua cc bc nh sau: Bc 1: Chuyn i cc tp thc th E Mi tp thc th ca m hnh ER s c chuyn i thnh mt lp i tng c cng tn v cng tp thuc tnh. Ngoi ra, ta gi thit rng bt k mt mi quan h c xc nh trong mt m hnh ER ch c th l gi thit ca mt trong cc bc c trnh by y: Lu : (chuyn i mi quan h Is-a) Nu tp thc th A c mi quan h Is-a vi tp thc th B th lp A s k tha tt c cc thuc tnh trong lp B bng cch s dng t kho Inherits, ng thi c th b sung thm cc thuc tnh ca lp A. 32

V d: M hnh ER NGUOI Id Nguoi HT Tuoi M hnh hng i tng class NGUOI Id_Nguoi : string; HT : string; Tuoi : integer; end NGUOI; class NHANVIEN inherits : NGUOI; Luong : integer; end NHANVIEN;

NHANVIEN

Luong

Bc 2: Chuyn i mi quan h nh nguyn 1-1, 1-n, n-n (khng c thuc tnh) Nu 2 tp thc th A v B c mi quan h R (R khng c cc thuc tnh nh km), th mi lp tng ng A v B, ngoi cc thuc tnh c trong tp thc th A v B, s c b sung thm thuc tnh R (thuc tnh mi quan h).
MaGV (1,n) (1,n) MaMH

GV
HT

Giang

Mon
TenMH

Class GV MaGV: string; HT: string; Giang: Set(Mon); End GV; Class Mon MaMH: string; TenMH: string [DuocGiangBoi: Set(GV); {Inverse GV.Giang}] End Mon; Bc 3: Chuyn i mi quan h nh nguyn n-n (c thuc tnh) Nu mi quan h R ca hai tp thc th A1 v A2 c km cc thuc tnh, khi , ngoi 2 lp A1 v A2 tng ng, ta cn b sung thm mt lp mi C ng vai tr trung gian. C th: 33

Lp C bao gm cc thuc tnh sau: Cc thuc tnh ca mi quan h R. Hai thuc tnh c khai bo: <Tn thuc tnh > : <Lp A1> <Tn thuc tnh > : <Lp A2> V d:
Id_GV HT TG
Id_Mon

GV

(1 , n)

Day

(1 , n)

MON

Ten_MH

M hnh hng i tng: class GV Id_GV : string; HT : string; day1 : set(DAY); end GV; class MON Id_Mon : string; Ten_MH : string; day2 : set(DAY); end MON; class DAY day1 : GV; day2 : MON; TG : string; end DAY;

Bc 4: Chuyn i mi quan h phn x i vi mi quan h phn x, vic chuyn i c thc hin tng t nh mi quan h nh nguyn (bc 2 v bc 3). V d: M hnh ER M hnh hng i tng NGUOI Cha/Me (1,1) Con (0,n) Id Nguoi HT Tuoi class NGUOI Id_Nguoi : string; HT : string; Tuoi : integer; Cha, Me : NGUOI; Con : set(NGUOI); end NGUOI;

SinhThanh

Bc 5: Chuyn i mi quan h a nguyn i vi mi quan h a nguyn, vic chuyn i c thc hin tng t nh mi quan h nh nguyn n-n c thuc tnh (bc 3). Nu k tp thc th A1, A2, , Ak c quan h vi nhau thng qua mi quan h a nguyn R bc k, th ngoi k lp A1, A2, , Ak ta s b sung thm mt lp mi C ng vai tr trung gian. C th: Lp C bao gm cc thuc tnh sau: 34

Cc thuc tnh ca mi quan h R. Cc thuc tnh Ri c khai bo: <Tn thuc tnh > : <Lp Ai> V d: M hnh ER

Id_gv GIAOVIEN Hoten


(0, n)

DAY
(1, n) (1, n)

Thoigian LOP Id_lop MONHOC Id_monhoc


M hnh hng i tng Class MONHOC properties Id_monhoc: String; Sotiet: Integer; End MONHOC.

Sotiet

Class GIAOVIEN properties Id_gv: String; Hoten: String; End GIAOVIEN. Class LOP properties Id_lop: String; End LOP.

Class LICHDAY properties Thoigian: String; Giang: GIAOVIEN; Gomco: MONHOC; Botri: LOP; End LICHDAY.

35

Chng 5. L THUYT THIT K C S D LIU


QUAN H
Nh trnh by trong chng 3 m hnh CSDL quan h l mt m hnh c tnh c lp d liu cao, thun li cho ngi s dng nn trong chng ny chng ta chng ta c bit quan tm nghin cu mt s phng php thit k mt m hnh CSDL tt t mt m hnh CSDL cho. Ni dung ca chng ch yu trnh by cc rng buc d liu trong cc quan h, cc dng chun ca cc lc CSDL quan h, v vic tch mt lc thnh mt s lc con theo mt dng chun no . 5.1. Gii thiu Trong qu trnh thit k mt c s d liu quan h, mt s vn thng c th xy ra: D tha d liu D thng trong cp nht d liu V d: Xt lc quan h NC(TCC,DCC,TMH,GIA), trong TCC l tn ngi cung cp, DCC l a ch ngi cung cp hng, TMH l tn mt hng c cung cp, GIA l gi tin tng ng ca mt hng c cung cp. C mt vi vn ny sinh i vi lc ny: S d tha: a ch ca ngi cung cp c lp li mi khi mt mt hng c cung cp. Chng hn, trong quan h sau a ch ca ng Trn Ngc An lp li 3 ln.
TCC DCC 23. L Li 17. H ni 23. L Li 23. L Li 18. Thun An 30. An Lng TMH Khoai ty C chua Bp ci Hnh Ty Ti C rt GI 4000 5000 2000 4000 100000 8000

Trn Ngc An L Th Nga Trn Ngc An


Trn Ngc An L Vn Hon Anh Tun

Bng 5.1 S mu thun khi b sung: Nu mt ngi cung cp hng quen thuc no cung cp mt hng mi nhng a ch anh ta thay i th trong quan h s xut hin s mu thun (mt ngi c hai i ch). Chng hn, ng L Vn Hon sau khi chuyn v c tr ti 15. V Th Su bn thm cho siu th mt hng su ho vi gi 7000 ng/kg quan h s tr thnh nh sau: 36

TCC Trn Ngc An L Th Nga Trn Ngc An Trn Ngc An L Vn Hon Anh Tun L Vn Hon

DCC 23. L Li 17. H ni 23. L Li 23. L Li 18. Thun An 30. An Lng 15. V Th Su

TMH Khoai ty C chua Bp ci Hnh Ty Ti C rt Su ho Bng 5.2

GI 4000 5000 2000 4000 1000 8000 7000

S bt thng khi loi b: Khi cn xa cc mt hng c cung cp bi mt ngi chng ta li xa ht cc thng tin v ngi . Nh vy c th xy ra trng hp thng tin v mt ngi cung cp mt hng no khng th tm thy trong CSDL. Chng hn, nu siu th khng cn mt hng C chua th c s d liu bng trn cn phi loi dng th 2 ra khi bng khi cn li l: TCC Trn Ngc An Trn Ngc An Trn Ngc An L Vn Hon Anh Tun L Vn Hon DCC 23. L Li 23. L Li 23. L Li 18. Thun An 30. An Lng 15. V Th Su TMH Khoai ty Bp ci Hnh Ty Ti C rt Su ho Bng 5.3 Do cc thng tin v nh cung cp c chua cng khng cn trong CSDL v chng ta khng th tm khi cn thit. S bt thng khi b sung: Mt nh cung cp cha cung cp hng th khng th a a ch, tn nh cung cp vo quan h. Chng ta c th t gi tr null cho cc thnh phn TMH v GIA ca mt b cho ngi cung cp mi nhng khi chng ta a vo mt mt hng vi ngi cung cp ny, liu chng ta c nh xa b cha gi tr null hay khng? Trong v d nu, nhng nhc im trn c khc phc nu chng ta thay quan h NC bng hai quan h: NCC(TCC,DCC) v CC(TCC,TMH,GIA) Khi quan h bng 5.1 c th c tch thnh 2 bng: GI 4000 2000 4000 100000 8000 7000

37

TCC DCC Trn Ngc An 23. L Li L Th Nga 17. H ni L Vn Hon 18. Thun An Anh Tun 30. An Lng Bng 5.4 TMH GIA Khoai ty 4000 C chua 5000 Bp ci 2000 Hnh Ty 4000 Ti 1000 C rt 8000 Bng 5.5 R rng rng d liu bng 5.4 v 3.5 c t chc trn hai lc mi cng cho mt lng thng tin nh quan h trn lc ban u, ng thi trnh c cc nhc im nu trn. C hai phng php thit k mt c s d liu quan h Phng php 1: Thit k xut pht t m hnh E-R. Phng php 2: Thit k bng phng php chun ha. V d: Gi s ta cn xy dng mt h thng qun l thng tin ca cc sinh vin trong mt trng i hc (MaSV, HT, NS) v thng tin v cc khoa trong trng (MaKhoa, TenKhoa, TruongKhoa). Ngoi ra ta cn phi qun l sinh vin thuc khoa no. Thit k theo phng php 1. Xy dng m hnh E-R.
MaGV HT NS (1,1) (n,n) MaKhoa

TCC Trn Ngc An L Th Nga Trn Ngc An Trn Ngc An L Vn Hon Anh Tun

GV

Giang

Khoa

TenKhoa TruongKhoa

GV #MaGV HT NS MaKhoa

Khoa #MaKhoa TenKhoa TruongKhoa

38

Thit k theo phng php 2. Gi s ngi ta ch s dng mt lc quan h qun l h thng ny. GiaoVien = <U, SC> Trong : U = {MaGV, HT, NS, MaKhoa, TenKhoa, TruongKhoa} Cho quan h r nh sau: MaGV HT NS MaKhoa TenKhoa TruongKhoa 1 Le Van A 1/1/08 A1 CNTT Mr.Han 2 Le Van B 1/2/08 A1 CNTT Mr.Han 3 Le Van C 1/3/08 A2 Toan Mr.Phung 4 Le Van D 1/4/08 A2 Toan Mr.Phung SC = {MaSV U ; MaKhoa TenKhoa.TruongKhoa} Vic thit k c s d liu ch s dng mt lc quan h nh trn c th ny sinh cc vn nh sau: D tha d liu, d thng trong cp nht d liu : sa, b sung, xo. Da theo phng php th hai, ta s pht hin ra nhng iu ny do lc quan h SinhVin khng t chun 3NF (hoc BCNF). T ta c th thc hin vic phn tch lc quan h SinhVien thnh hai lc con SV v Khoa tng t nh kt qu cui cng ca phng php 1. 5.2. C s l thuyt ca ph thuc hm 5.2.1. Qui c v cc k hiu Cc thuc tnh: A, B, C, , A1, A2, Tp cc thuc tnh: X, Y, Z, ; ABC {A, B, C} Hp ca cc tp thuc tnh: XY XY; XYZ XYZ; Lc quan h: R, S, , RS = <U, SC> ;(SC : Set of Constraint) Quan h: r, s, B: t, t1, t2, Vi t l mt b, X l tp thuc tnh th k hiu t[X] ch gi tr ca b t trn tp thuc tnh X. 5.2.2. Ph thuc hm (Functional Dependency) nh ngha: (Quan h tha mn ph thuc hm) Cho lc quan h R = <U, SC>, cho X, Y U. Xt quan h r trn R. Quan h r c gi l tha ph thuc hm: X Y (c l X xc nh Y, hoc Y ph thuc hm vo X) nu v ch nu: t1, t2 r sao cho: t1[X] = t2[X] t1[Y] = t2[Y] 39

Nhn xt : Do , r khng tha XY t1,t2 r : t1[X] = t2[X] t1[Y] t2[Y] V d: r = A a a b B b c c C c a b D a a a

r khng tha : A B r tha : AB C r khng tha : B C r tha : C A r tha : CD A r khng tha : AD C Thut ton: Kim tra quan h r c tha mn ph thuc hm X Y khng? Function Ktra(r, X, Y); Begin Temp := true ; for i := 1 to n-1 do for j := i+1 to n do if (ti[X]= tj[X] and ti[Y]<> tj[Y]) then begin temp:= false; break; end; Ktra:= temp; End; nh ngha: (Lc quan h tha mn ph thuc hm) Cho lc quan h R = <U, SC>, cho X, Y U. R c gi l tha ph thuc hm XY r R: r tha XY. r R, t1, t2 r : t1[X] = t2[X] t1[Y] = t2[Y] Lu : Thng thng ta quy c rng tp cc rng buc SC chnh l tp cc ph thuc hm v c k hiu l F. V vy, mt lc quan h c k hiu l R = <U, F> th R phi s tha tt c cc ph thuc hm trong F. nh ngha: (Suy din logic) Cho lc quan h R = <U, F>, X, Y U. 40

Ta ni ph thuc hm XY c suy din logic t F, k hiu: F XY, nu vi mi quan h r ca R tha mn cc ph thuc hm ca F th cng tha XY. Khi ta cng ni rng XY l ph thuc hm h qu ca F. V d: F = {A B, B C} th A C c suy din logic t F (d thy !) nh ngha: (Bao ng ca tp ph thuc hm) Cho R = <U, F>. Bao ng ca tp ph thuc hm F, k hiu l F+, l tp tt c cc ph thuc hm c suy din logic t F, ngha l: F+ = {XY | X, Y U v F XY} V d: Cho R = <ABC, {A B, B C}> Ta c F+ = {A B, B C, A C, AB C, A A, ...} Lu : F F+ nh ngha: (Kho ca lc quan h) Cho R = <U, F>, cho X U. Khi X c gi l kho ca R nu v ch nu tha mn ng thi 2 iu kin: 1. XU F+ (hay: X l siu kho ca lc quan h R) 2. Khng X X : X l siu kho ca R V d 1: Cho R = <U, F> U = ABC; F = {AB, BC} X = A l kho ca lc quan h R Ta chng minh: A ABC F+ R tha A ABC r R : R tha A ABC (d dng!). V d 2: Cho R = <U, F> U = ABC; F = {ABC, CA} R c hai kho l AB v AC (v sao ?) Lu : Kho ca mt lc quan h l khng duy nht. Mt lc quan h lun kho. 5.2.3. H tin Amstrong Cho R = <U, F>, Armstrong a ra ba qui tc (tin , lut) sau: Lut phn x: Nu X, Y U v X Y th YX F+ Lut gia tng (tng trng): Nu X, Y, Z U v XY F+ th XZYZ F+ Lut bc cu: Nu X, Y, Z U v XY F+, YZ F+ th XZ F+ Ta c cc quy tc suy din m rng: 41

Mnh : Cho R = <U, F>, X, Y, Z, W U. Lc : 1) Lut hp: Nu XY v XZ th XYZ 2) Lut tch: Nu XY v Z Y th XZ 3) Lut ta bc cu: Nu XY v WYZ th WXZ nh l: H tin Armstrong l ng n v y . Lu : Tnh y ca h tin trn c hiu l vi bt k ph thuc hm h qu no ta lun c th s dng mt s hu hn quy tc trong h tin ny chng minh. V d: Cho R = <U, F>, trong : U = ABC, F = {AB, AC} Chng minh: A BC F+ Ta c: AB (1) A C (2) (3) (Lut gia tng) T (1) A AB T (2) AB BC (4) (Lut gia tng) (Lut bc cu) T (3) & (4) A BC pcm 5.2.4. Bao ng ca tp thuc tnh nh ngha: Cho R = <U, F>. Cho X U. Khi , bao ng ca X, k hiu l X+, c nh ngha nh sau: X+ = {A | XA F+} Lu : ch r bao ng ca X c xc nh trn tp ph thuc hm F, ta k hiu: X+F X l siu kho X U F+ X+ = U X X+ nh l: (Bi ton thnh vin: iu kin cn v XY F+) Cho R = <U, F> v X, Y U. Khi : X Y F+ Y X + Chng minh: Gi s Y = A1An, vi Ai U l cc thuc tnh. : Gi s Y X+, suy ra Ai X+, vi mi i =1,,n. 42

T nh ngha ca X+ ta c X Ai, suy ra X Y (lut hp). Cn: Gi s c X Y F+, suy ra X Ai F+ (lut tch). T suy ra Y X+. V d: Cho R = <U, F>, trong : U = ABC, F = {AB, AC} AB C F+ do (AB)+ = ABC C B A F+ (do B+ = B khng cha A) 5.2.5. Thut ton tnh bao ng ca tp thuc tnh Vo: R = <U, F> v X U Ra: X+F Phng php: Function BaoDong(X); Begin new:= X; Repeat old:= new; for mi X Y F do if X new thenm new:= new Y; Until old = new; Return new; End; V d: Cho R = <U, F>, trong : U = ABCDEG F = {ABC, CA, BCD, DEG, BEC, CGBD, CEAG} Tnh (BD)+: X(0) = BD X(1) = BD {EG} = BDEG X(2) = BDEG {C} = BDEGC X(3) = BDDEGC {A, AG} = BDEGCA X(4) = BDEGCA = X(3) (BD)+ = ABCDEG Chng minh BD l kho ca R: Theo cu trn ta c BD l siu kho. Mt khc ta c: B+ = B U B U F+ D+ = DEG U D U F+ pcm 43

Bi tp: Vit thut ton ta Pascal nhm kim tra tp X no c phi l kho ca R hay khng? Vo: R = <U, F> v X U Ra: Yes/No 5.3. Ph ti thiu (ph cc tiu) nh ngha: (Hai tp ph thuc hm tng ng) Cho 2 tp ph thuc hm F v G. Khi : F c gi l tng ng vi G, k hiu: F G, nu v ch nu F+ = G+. V d: Cho F = {AB, BC}, G = {AB, BC, AC} FG ngha: Cho R = <U, F> v G tng ng vi F th ta c th dng G thay cho F trong lc quan h R. Tc l R = <U, F> = <U, G> B 1: Nu F G F+ G+. B 2: (F+)+ = F+ Tnh cht:

F G + (1) F G G F + (2)
Chng minh, dng 2 b trn: (): F F+ = G+ (1) ng G G + = F+ (2) ng (): F G+ (F)+ (G+)+ = G+ (b 1) G F+ (G)+ (F+)+ = F+ Vy F+ = G+, do F tng ng G. ngha: Cho php xy dng thut ton kim tra xem hai tp ph thuc hm c tng ng vi nhau hay khng. Thut ton kim tra F tng ng G Procedure KTTD(F, G) ; Begin 1. {Kim tra F G+} for mi XY F do if X+G Y then begin 44

write(F v G l khng tng ng); exit; end; 2. {Kim tra G F+} for mi XY G do if X+F Y then begin write(F v G l khng tng ng); exit; end; 3. writeln( F tng ng vi G); End; B : Cho R = <U, F>, X U, Ai U, i = 1..n

X A1 F+ + X A 2 F + Ta c: X A1A 2 ..A n F M X A n F+
Tnh cht: Cho R=<U, F>. Khi bao gi cng mt ph thuc hm G GF V phi ca mi ph thuc hm trong G ch c mt thuc tnh. nh ngha: (Ph ti thiu ca mt lc quan h) Cho R = <U, F>, F c gi l ph ti thiu ca R khi v ch khi: a. V phi ca mi ph thuc hm trong F l ch c 1 thuc tnh. b. Mi ph thuc hm trong F khng c thuc tnh d tha v tri, ngha l: X A F, B X, ((F \ {XA} ) (X \ {B} A))+ F+ c. Trong F khng c ph thuc hm no l d tha, ngha l: X A F, XA (F \ {XA})+ Nhn xt: 1) Kim tra iu kin a) kh d dng. 2) iu kin b) X A F, B X, ((F \ {XA} ) (X \ {B} A))+ F+ Ta c th xem iu kin trn iu kin sau: X A F, B X th X \ {B} A F+ 45

X A F, B X th (X \ {B})+ A 3) iu kin c) X A F, XA (F \ {XA})+ X A F, X+F\{XA} A


V d:

R = <U, F>, U = ABC, F = {AB, ABC} Hi F c phi l ph ti thiu ca R khng? Kim tra iu kin a: ng Kim tra iu kin b: Xt ABC F, ta c: X = AB, xem th thuc tnh B c d tha khng? Ta c: (X\B)+ =A+ = ABC C Suy ra thuc tnh B v tri ca ph thuc hm ABC l d tha. Vy F khng phi l ph ti thiu ca R.
V d: Cho R = <U, F>, U = ABC, F = {AB, BC, AC}. Hi F c phi l ph ti thiu ca R khng? Kim tra iu kin a: ng Kim tra iu kin b: ng Kim tra iu kin c: Xt AC F, ta c: F \ {AC} = {AB, BC} A+{AB, BC} = ABC C Vy trong F c ph thuc hm AC l d tha, do F khng phi l ph ti thiu ca R. Bi tp: Cho R = <U, F>. Vit gii thut ta Pascal kim tra F c phi l mt ph ti thiu ca R hay khng? nh ngha: (Ph ti thiu ca tp ph thuc hm) Cho R = <U, F>. Tp ph thuc hm G c gi l mt ph ti thiu ca F nu tha hai iu kin: GF G l ph ti thiu ca R = <U, G> Lu : Ph ti thiu ca mt ph thuc hm l khng duy nht V d: Cho R = <U, F>, U = ABC F = {AB, BA, AC, CA, BC, CB} Khi , F c cc ph ti thiu khc nhau nh sau: (?) G1 = {AB, BA, AC, CA} G2 = {AB, BA, BC, CB} G3 = {AB, BC, CA}

46

Thut ton (Tm mt ph ti thiu ca F) Vo: R = <U, F> Ra: G (G l mt ph ti thiu ca T) Phng php: Procedure TimPhuCucTieu(F); 1. Phn r cc ph thuc hm trong F m v phi c 2 thuc tnh tr ln (lm cho F tha iu kin a). C th: X A1 X A % 2 Phan ra X A1A 2 ...A n M X A n

2. (Lm cho F tha iu kin b) for (mi X A F) do for (mi B X) do if ((X \ {B})+F A) then X := X \ {B}; 3. (Lm cho F tha iu kin c) for (mi X A F) do if (X+F\{XA} A) then F := F \ {XA}; 4. Kt lun: G := F; End; Cho R = <U, F>, U = ABC, F = {A BC, AB C} Tm mt ph ti thiu ca F. Bc 1: F = {A B, A C, AB C} Bc 2: Xt AB C F, ta c: (AB\B)+ = A+ = ABC C. Vy thuc tnh B l d tha. (AB\A)+ = B+ = B C. Vy thuc tnh A khng d tha. F = {A B, A C} Bc 3: Xt A B: A+F\{AB} = AC B Xt A C: A+F\{A C} = AB C Kt lun: Vy G = {A B, A C} l mt ph ti thiu ca F cn tm. 47
V d

Lu : Trong thut ton tm mt ph ti thiu ca F, khng th thc hin lm cho F tha iu kin c) trc khi lm cho F tha iu kin b) (ni cch khc, vic l cho F tha iu kin c) lun phi c thc hin sau khi lm cho F tha iu kin b)). Phng php sai: (Bc 3 thc hin trc bc 2) Cho R = <U, F>, U = ABD, F = {BD, BA, DA, ABD} Nu ta loi b cc ph thuc hm d tha trc, th ln lt xt: + B F\{BD} = BAD D loi b B D. F = {BA, DA, ABD} + B F\{BA} = B A D+F\{DA} = D A (AB)+F\{ABD} = AB D Tip n, loi b thuc tnh d tha v tri, ch xt: AB D Ta c: B+F = BAD D loi b A F = {BA, DA, BD} Th nhng, ta thy BA F l ph thuc hm d tha. Phng php ng: Loi b thuc tnh d tha v tri, ch xt: ABD Ta c: B+F = BAD D loi b A F = {BA, DA, BD} Loi b cc ph thuc hm d tha: BD: Ta c: B+F\{BD} = BA D

BA: Ta c: B+F\{BA} = BDA A loi b BA F = {DA, BD} DA: Ta c: D+F\{DA} = D A Kt lun: F = {DA, BD}
5.4. Cc thut ton xc nh kho ca mt lc quan h 5.4.1. Cc thut ton xc nh mt kho ca mt lc quan h X l kho ca lc quan h R = <U, F> nu: 1) X U F+ hay X+F = U (X l siu kho) 2) Khng tn ti X X, X+ = U Thut ton tm mt kho ca mt lc quan h. Vo: R =<U,F>

48

Ra : K (mt kho ca R) Phng php: Function Key(R) Begin K:= U; For mi A U do If (K\A)+F = U then K := K \ {A}; {loi b thuc tnh A} Return K; End;
V d

R = <U,F>, U = ABCDEG; F = {B C,C B,A GD} K = ABCDEG Ta c: (K\A)F+ = (BCDEG)+ = BCDEG U (K\B)F+ = (ACDEG)+ = ACDEGB = U K = ACDEG (loi B) (K\C)F+ = (ADEG)+ = ADEG U (K\D)F+ = (ACEG)+ =ACBEGD = U K = ACEG (loi D) (K\E)F+ = (ACG)+ =ACGBD U (K\G)F+ = (ACE)+ = ACEGDB = U Vy K = ACE l kho ca lc quan h. Ch : Khi thay i th t vic loi b cc phn t ca K, ta c th thu c kha khc ca lc quan h. Chng ta c th ci tin thut ton trn thng qua nh l sau:
nh l H Thun - Nguyn Vn Bo: (iu kin cn X l kho). Cho R = <U, F>, cho X U. Khi , nu X l kho ca R th: (U \ P) X (U \ P) (T P) Trong : T = U X
X YF

P=

X YF

ngha: nh l ny cho php ta thu hp phm vi tm kim kho V d: Cho R = <U,F>, trong : U = ABCDEG; F = {B C,C B,A GD}

49

T = ABC T P=BC P = BCDG

Gi X l kho ca R: U\P = AE X (U\P) (TP) =AEBC Nu gi K l tp tt c cc kho ca R K ch c th cha AE, AEB, AEC, AEBC. Ta c: (AE)+ = AEGD U AE K (AEB)+ = AEBGDC = U AEB K (AEC)+ = AEBGDC = U AEC K C th ch ra K = {AEB, AEC} Ngoi ra, AEBC ch l siu kho ca R H qu 1: Nu (U \ P)+ = U th U \ P l kho duy nht ca R. V d: Xt R = <U, F>, vi U = A1A2A3A4A5A6 F = {A1 A2 , A3 A4, A5 A6} m (U \ P)+ = (A1A3A5)+ = A1A3A5A2A4A6 = U P = A2A4A6 R c 1 kho duy nht l A1A3A5 H qu 2: Nu T P = th U \ P l kho duy nht ca R. H qu 3: (U \ P) (T P) l siu kho ca R.
Nhn xt: T 3 h qu trn cho php ta xc nh gii thut tm mt kho ca lc quan h R nh sau : Vo: R = <U, F> Ra: Tm 1 kho ca R Phng php:

Function Key(R) Begin K := (U \ P) (T P) For <mi A (T P)> do If <(K \ A)+ = U> then K := K \ A; {loi b thuc tnh A} Return K. End;

50

V d: R = <U,F>, U = ABCDEG;

F = {B C,C B,A GD}

T =ABC T P = BC P = BCDG X = (U\P) (TP) = ABCE (X \ B)+ = U X = ACE (loi B) (X \ C)+ = (AE)+ U ACE K Ngoi ra ta c gii thut tm mt kho K nhn S lm siu kho nh sau : Vo: + R = <U, F> + Siu kha S Ra: Tm kho K ca R nhn S lm siu kho Phng php: Function Key(R, S) Begin K := S For <mi A S \ (U \ P)> do If <(K \ A)+ = U> then K := K \ A; {loi b thuc tnh A} Return K. End;
5.4.2. Gii thut xc nh tt c cc kho ca mt lc quan h. Phng php 1: S dng cy tm kha tng: Dng mt cy c nt gc l U\P, ri thm dn cc thuc tnh cn thiu trong TP cho n khi c cc siu kho V d: Cho R = <U, F> vi U = ABCDEG

F = {B C, C B, A GD} Dng cy: Tnh (AE)+ = AEGD U (AEB)+ = AEBCGD = U (AEC)+ = AECBGD = U Kt lun:

P = BCGD U \ P = AE T = ABC T P = BC

AE B AEB C AEC
51

K = {AEB, AEC}
M t phng php: Bc 1: tnh (U\P)+. Nu (U\P)+ = U th kt lun K = {U\P}. Ngc li, dng cy c nt gc l U\P v cc nt con l: (U\P)A, vi A TP Bc 2: ln lt duyt cy theo chiu rng i vi cc nt cha c nh du n chng no mi nt l ca cy u c nh du. Lu : Ti mi nt X cha c nh du ta thc hin th tc sau: Procedure DuyetNut (X); Begin If X cha nt nh du kho then nh du X l nt xt Else if X+ = U then nh du X l nt kho Else To cc nt con ca X bng cch b sung cc thuc tnh cn thiu trong TP. End; Phng php 2: S dng nh l Lucchessi-Osborn nh l Lucchessi v Osborn: (iu kin cn v b sung kho) Cho R = <U, F>. Gi K l mt tp khc rng cc kho ca lc quan h R. Khi , iu kin cn v c th b sung kho mi vo K l: K K, XY F: T = X (K \ Y) khng cha phn t no ca K. Lu : Phn chng minh ca nh l ny chng t rng nu iu kin trn c tha mn th kho mi c b sung vo K l kho k nhn T lm siu kho. T y, ta c th xc nh c gii thut tm tt c cc kho ca R nh sau: Thut ton tm tt c cc kho ca mt lc quan h Vo: R = <U, F> Ra: K Phng php:

Procedure TimTatCaKhoa(R); Begin 1. Tm mt kho K K {theo thut ton tm mt kha} K := {K}; 52

2. For <mi K K> do For <mi X Y F> do begin T := X (K \ Y) ; If <T khng cha phn t no ca K> then begin Tm mt kho K nhn T lm siu kho ; K := K {K} goto 2; {khng cn xt li (K, XY) xt} endIf; end; Return; End;
V d: Cho R = <U, F> vi U = ABCDEG F = {B C, C B, A GD} Tm mt kha ca R theo thut ton tm 1 kha: ABE t K = {ABE} Xt K = ABE K: Xt B C F T = B (K\C) = ABE cha phn t ca K Xt C B F T=C (K\B) = ACE khng cha phn t no ca K Tm kho K nhn T = ACE lm siu kho (theo thut ton bit), ta tm c kha l K = ACE K = {ABE, ACE} Xt A GD F T = ABE cha phn t ca K Xt K = ACE K: Xt B C F T = ABE cha phn t ca K Xt C B F T = ACE cha phn t ca K Xt A GD F T = ACE cha phn t ca K Vy K = {ABE, ACE} 5.5. L thuyt phn tch T mt CSDL ln, c th lm ny sinh s d tha d liu v nhng d thng trong cp nhp d liu. Chnh v vy cn phn tch lc ny thnh cc lc con. Trong l thuyt phn tch, yu cu vic phn tch ny phi m bo c tnh cht bo ton thng tin. Ngoi ra, phn tch ny s to iu kin thun li cho ngi lp trnh nu n cn bo m c tnh cht bo ton ph thuc hm. nh ngha: (Phn tch / Php tch)

53

Cho lc quan h R = <U, F>, cc lc con R1 = <U1, F1>, R2 = <U2, F2>, , Rn = <Un, Fn>. c gi l mt phn tch ca R thnh cc lc = (R1 ,R 2 ,...,R n ) con R1, R2, , Rn, (k hiu ) nu = (U1 , U 2 , ..., U n )

UU
i =1

= U.

V d: Cho R = <U, F> vi U = ABCD Suy ra: = (AB, BC, ACD) l 1 phn tch ca R. Nhn xt: Cho r l mt quan h trn R v = (U1,U2,,Un) l mt phn tch ca R. Khi , phn tch cho ta cc quan h con tng ng r1, r2, , rn c xc nh nh sau: ri = Ui (r) (i = 1,n ) 5.5.1. Phn tch bo ton thng tin

(Php tch c kt ni khng mt thng tin)


nh ngha: (Phn tch bo ton thng tin trn mt lc quan h) Cho lc quan h R = <U, F>. Khi , php tch = (U1,U2,,Un) c gi l bo ton thng tin trn R nu: U1 (r) >< U2 (r) >< ... >< Un (r) = r, r R nh l 1: (iu kin mt phn tch thnh hai lc con l bo ton thng tin) Cho R = <U, F> v X, Y U. Khi , nu XYF+ sao cho XY = v Z = (U\XY) th: = (XY, XZ) l bo ton thng tin (BTTT). V d: Cho NKBH = <U, F>, vi F = {STTU, MHTH, MHG} = (HG, NK) vi HG (MH, TH, G); NK (STT, TK, NG, MH, SL) T F suy ra MH {TH, G} F+ Hay: = (U1, U2) l BTTT. nh l 2: (iu kin cn v mt phn tch thnh hai lc con l bo ton thng tin) Cho R = <U, F>. Khi , phn tch = (U1, U2) trn R bo ton thng tin nu v ch nu: U1 U2 U1 \ U2 F+ hoc U1 U2 U2 \ U1 F+ V d: Xt v d NKBH trn (U1 U2)+ = (MH)+ = {MH, TH, G}

54

(U1 \ U2) = {TH, G} Vy (U1 \ U2) (U1 U2)+ Suy ra: U1 U2 U1\U2 F+ Hay: = (U1, U2) l bo ton thng tin.
Thut ton kim tra tnh cht bo ton thng tin ca mt phn tch: Vo: R = <U, F> vi U = {A1, A2, , An} v = (U1,U2,,Uk) Ra: Yes/No Phng php: Bc 1 (Lp bng): Thnh lp 1 bng gm k dng v n ct. Cc ct c k hiu bi cc

thuc tnh Ai (i = 1,n ), cc dng c k hiu bi cc tp thuc tnh Uj (j=1,k ), cc phn t ca bng s c ghi l ai hoc bij theo nguyn tc sau:

phn t dng i ct j l aj nu Aj Ui phn t ct dng i ct j l bij nu ngc li


Bc 2 (Bin i bng): Repeat For mi X Y F do Thc hin vic bng trn Y vi nhng dng c chung X (u tin bin i bij thnh aj) Until bng khng thay i i vi vng for Bc 3: (Kt lun) Nu tn ti mt dng (b) hon ton cc gi tr ai (i = 1,n ) bo ton thng tin Ngc li khng bo ton thng tin. V d: Cho R = <U, F>, vi U = ABCDE F = {A C, B C, C D, DE C, DE A} V = (AD, AB, BE, CDE, AE) Bc 1: (Lp bng) A B C D AD b12 b13 a4 a1 AB a1 a2 b23 b24 b31 a2 b33 b34 BE CDE b41 b42 a3 a4 a1 b52 b53 b54 AE Bc 2: (Bin i bng)

E b15 b25 a5 a5 a5

55

Xt A C AD AB BE CDE AE Xt B C: AD AB BE CDE AE Xt C D AD AB BE CDE AE Xt DE C: AD AB BE CDE AE DE A AD AB BE CDE AE A a1 a1 a1 a1 a1 B b12 a2 a2 b42 b52 C b13 b13 a3 a3 a3 D a4 a4 a4 a4 a4 E b15 b25 a5 a5 a5 56 A a1 a1 b31 b41 a1 B b12 a2 a2 b42 b52 C b13 b13 a3 a3 a3 D a4 a4 a4 a4 a4 E b15 b25 a5 a5 a5 A a1 a1 b31 b41 a1 B b12 a2 a2 b42 b52 C b13 b13 b13 a3 b13 D a4 a4 a4 a4 a4 E b15 b25 a5 a5 a5 A a1 a1 b31 b41 a1 B b12 a2 a2 b42 b52 C b13 b13 b13 a3 b13 D a4 b24 b34 a4 b54 E b15 b25 a5 a5 a5 A a1 a1 b31 b41 a1 B b12 a2 a2 b42 b52 C b13 b13 b33 a3 b13 D a4 b24 b34 a4 b54 E b15 b25 a5 a5 a5

T bng ny ta thy dng 3 c b (a1, a2, a3, a4, a5). Vy phn tch l bo ton thng tin. Lu : Trong qu trnh thc hin bc 2 (cha xong) nu tn ti mt dng ton l cc gi tr ai th ta cng c th kt lun ngay phn tch l bo ton thng tin.
5.5.2. Phn tch bo ton ph thuc hm nh ngha: (Phn tch bo ton ph thuc hm) Cho R = <U, F>, = (R1,R2,,Rk) l phn tch trn R vi Ri = <Ui, Fi>

(i =1,k ). Khi , c gi l phn tch bo ton ph thuc hm nu tng ng F (hay ( U Fi )+ = F+).


i =1 k

UF
i =1

V d: Cho R = <U, F>, trong : U = ABCD, F = {A BCD, C D}, v = (R1, R2), vi R1 = <CD, {C D}>, R2 = <ABC, {A BC}>. Do G = {C D, A BC} tng ng F nn l php phn tch bo ton ph thuc hm. Nu cho trc R = <U, F>, = (U1, U2, , Uk) th: vic xc nh cc Fi (i = 1, k ) c thc hin da vo nh ngha sau: nh ngha: (Chiu ca tp ph thuc hm trn tp thuc tnh) Cho R = <U, F> v Ui U. Khi , chiu ca F trn tp thuc tnh Ui, k hiu l Ui(F), c xc nh nh sau:

Ui(F) = {XA F+ | X, A Ui v A X}
V d: Cho R = <U,F>, vi U = ABCD, F = {A D, D B, A C} (U1 = ABC, U2=AD) Xt = (ABC, AD) F1 = (A C, A B) (chiu ca F ln tp U1) v F2 = {A D} (chiu ca F ln tp U2) Nhn xt: Ui(F) l bao gm cc ph thuc hm tm thng v khng tm thng (ph thuc hm tm thng l ph thuc hm m v phi l con ca v tri). y chng ta dng (A X) l loi b cc ph thuc hm tm thng. Theo , vic xc nh cc Fi (i =1,k ) l da vo vic xc nh ph ti thiu ca Ui(F). Thut ton: Tm X(F) Bc 1: Tnh cc X+, X X v X

57

Bc 2: Xc nh cc ph thuc hm ca X(F), da vo thut ton sau: Begin F = For mi X+ = A1A2...Ak do For i = 1 to k do If (Ai X+) and (Ai X) then F = F {X Ai} X(F) = F; End; V d: Cho R = <ABCD, {AD, DB, AC}>, v X = ABC (AB)F+ = ABCD AF+ = ABCD BF+ = B (AC)F+ = ABCD (BC)F+ = BC. CF+ = C F1 = {A B, A C, AB C, AC B} Nhn xt: Cc ph thuc hm tm thng s b loi b khi xt mt ph ti thiu vi Fi. V d: Xt v d trn: Ta c 1 ph ti thiu ca F1 l: F1 = {A C, A B} kim tra mt phn tch c bo ton ph thuc hm hay khng, theo phng php nu trn ta phi thc hin vic xc nh cc Fi (i = 1,k ). T

suy ra G = ng sau:

UF
i =1

v vic kim tra F tng ng G da vo tnh cht tng

G F + F tng ng G + F G
Thut ton: Kim tra F G + Vo: F, G Ra: Yes/No Phng php: Procedure KiemTra; Begin For mi X Y F do If XG+ Y then

(1) (2)

Do (1) l hin nhin nn ta ch cn kim tra (2) da vo thut ton sau:

58

Begin

Write( khng bo ton ph thuc hm); Exit;

End; Write( bo ton ph thuc hm); End;


Thut ton: Tnh XG+ m khng cn phi xc nh G c th tnh c XG+ m khng cn phi xc nh G (khng cn xc nh cc Fi) ta c th da vo thut ton sau: Vo: R = <U, F> = (R1,R2,,Rn) XU Ra: XG+ Phng php: Procedure Tnh XG+; Begin Z := X; Repeat For i:= 1 to n do Z := Z ((Z Ui)+F Ui) Until <Z khng thay i> XG+ = Z; End; V d: Cho R = <U, F>, U = ABCD, F = {A B, B C, C D, D A}, v = (AB, BC, CD) c bo ton ph thuc hm - Xt D A F, tnh DG+ nh sau: 1. Z := D 2. i := 1; U1:= AB Z := Z ((ZUi)F+ Ui) = D ((DAB)F+ AB) = D i := 2; U2 = BC Z:= D ((DBC)F+ BC) = D i := 3; U3 = CD Z:= D ((DCD)F+ CD) = CD : Z thay i quay li i := 1 Z = CD i := 2 Z = BCD i := 3 Z = BCD i := 1 Z = ABCD i := 2 Z = ABCD

59

i := 3 Z = ABCD DG+ = ABCD D A G+ - Xt A B F, tnh A+G = ABCD B - Xt B C F, tnh B+G = ABCD C - Xt C D F, tnh C+G = ABCD D Kt lun: bo ton ph thuc hm
Lu : Mt phn tch bo ton thng tin nhng c th khng bo ton ph thuc hm. V d: R = <U, F> , vi U =CSZ, F = {CS Z, Z C} Xt = (ZC, SZ), bo ton thng tin (bi tp) nhng khng bo ton ph thuc hm. Mt phn tch bo ton ph thuc hm nhng cng c th khng bo ton thng tin. V d: Cho R = <U, F>, vi U = ABCD, F = {A B, C D} Xt = (AB, CD), l bo ton ph thuc hm v: F1 = {A B } F2 = {C D } Nhng r rng l khng bo ton thng tin. Nhn xt: Mt phn tch bo ton thng tin nhng khng bo ton ph thuc hm th vn c th s dng c. Tuy nhin iu ny s gy phin phc i vi ngi lp trnh, bi l vic cp nht d liu trn mt quan h ri Ri (i = 1,k ) s c th lm cho quan h gc r khng tha F. Do vic cp nht thng c thc hin theo quy trnh sau: Bc 1: Cp nht d liu trn ri Bc 2: Tnh r Bc 3: Nu r tha F th vic cp nht c chp nhn, cn nu khng vic cp nht s b hu b. 5.6. L thuyt chun ho Mt lc quan h quan h thit k khng tt s gy ra nhng d thng d liu nh d tha d liu v do vic cp nht d liu. trnh d thng d liu, lc quan h cn thit phi bin i thnh cc dng ph hp. Qu trnh c xem l qu trnh chun ha lc quan h. L thuyt chun ho s xc nh cc dng chun (Norm Form) ca mt lc quan h. ng thi cho php xy dng cc thut ton phn tch

60

mt lc thnh cc lc con sao cho cc lc con u thuc mt dng chun no .


5.6.1. Dng chun 1 (1NF) nh ngha: (Dng chun 1) Mt lc R c gi l thuc dng chun 1 (k hiu: R 1NF) nu min gi tr ca cc thuc tnh trong R ch cha nhng gi tr nguyn t (khng th phn chia c), hay cc thuc tnh ny u l n v n tr. Ngc vi thuc tnh n l thuc tnh phc hp, l thuc tnh c xy dng t nhiu thuc tnh khc. Ngc vi thuc tnh n tr l thuc tnh a tr, l thuc tnh m gi tr ca n l mt tp hp. Quy c: Tt c cc lc quan h c xt n sau ny thuc 1NF. 5.6.2. Dng chun 2 (2NF) nh ngha: (Thuc tnh kho) Cho R= <U, F>. Khi , thuc tnh A c gi l thuc tnh kho nu A thuc mt kho no ca R. Ngc li, A c gi l thuc tnh khng kho. V d: 1) R = <U, F>, vi U = ABCD, F = {AB C, C D} tp cc kha K ca R l K = {AB}. Suy ra: R c hai thuc tnh kho: A v B, v R c hai thuc tnh khng kho: C v D.

2) R = <U, F>, vi U = ABCD, F = {AB C, B D, BC A} Suy ra: tp cc kha K ca R l K = {AB, BC} R c ba thuc tnh kho: A, B v C, cn D l thuc tnh khng kho.
nh ngha: (Ph thuc hm y ) Cho R = <U, F>. Khi , X Y F c gi l mt ph thuc hm y (c l: Y ph thuc hm y vo X) nu: Z X sao cho ZYF+ V d: NKBH = <U, F> vi U = {NG, SP, MH, G, SL}, F = {{SP, MH}U, MHG} Suy ra: {SP, MH} G F+ khng l ph thuc hm y (v {MH} {MH, SP}: MH G F+) Nhn xt: X U F+ l mt ph thuc hm y khi X l kho ca R. nh ngha: (2NF)

61

Cho R = <U, F>, R c gi l thuc dng chun 2 (k hiu R 2NF) nu vi mi thuc tnh khng kho ca R l ph thuc hm y vo mi kho ca R. Nh vy:

R 2NF nu v ch nu A l thuc tnh khng kho, X thuc tp cc kho ca R th X A F+ l ph thuc hm y . R 2NF nu v ch nu A l thuc tnh khng kho v X thuc tp cc kha ca R sao cho XA F+ khng l ph thuc hm y .
Cc v d: V d 1: Xt v d trn, lc NKBH c tp cc kho l K = {SP, MH}, do hai thuc tnh kho l SP v MH. Suy ra cc thuc tnh khng kho: NG, G, SL. Theo trn ta c : {SP, MH}G F+ khng l ph thuc hm y v MHG. Suy ra: NKBH 2NF. V d 2: Cho R = <SAIP, {SI P, S A}. Lc R 2NF. Tht vy, R ch c kha SI nn A l thuc tnh khng kha, mt khc A khng ph thuc hm y vo kha SI v S A. V d 3: Cho R = <SAIP, {SI P}>. R 2NF. Tht vy, R ch c kha SI nn A, P l cc thuc tnh khng kha, mt khc A v P ph thuc hm y vo kha SI v khng c tp con no ca SI xc nh hm A v P. Thut ton: Kim tra R thuc 2NF Vo: R = <U, F> Ra: Yes/No Phng php:

Procedure KiemTra2NF (R); Begin For mi A khng phi l thuc tnh kho do {K l tp cc kha ca R} For mi X K do If <X A khng l ph thuc hm y > Then Return No; Return Yes; 62

End;
Nhn xt: 1. Nu mi kho ca lc quan h R ch c mt thuc tnh th R 2NF. Hay ( X K: |X| = 1) R 2NF.

2. Lc quan h R 2NF XA F+, vi A X v X K (K l kho ca R) th A l thuc tnh kho. (bi tp)


5.6.3. Dng chun 3 (3NF) V d: Cho NKBH = <U, F>, vi U = {STT, NGAY, MH, TH, G, SL}, F = {STTU, MHTH, MHG} Suy ra: NKBH 2NF (do lc c mt kho duy nht l STT ch c mt thuc tnh) nhng vn tn ti d tha d liu trong lc ny. STT 1 2 3 4 Ngay 01/01/01 02/01/01 03/01/01 04/01/01 MH A1 A2 A1 A2 TH Tiu Cafe Tiu Cafe G 50 20 50 20 SL 10 20 30 40

Suy ra: Phn tch NKBH thnh 2 lc con: HANG = <U1, F1>, vi U1 = {MH, TH, G} v F1 = {MH U1} NK = <U2, F2>, vi U2 = {STT, NGAY, MH, SL} v F2 = {STT U2}

63

NK # STT Ngay MH SL

HANG # MH TH G

Ta s chng minh rng: NKBH 3NF HANG, NK 3NF


nh ngha: (R 3NF) Cho R = <U, F>. Khi R c gi l thuc dng chun 3 (k hiu R 3NF) nu XA F+ vi A X th: hoc X l siu kho hoc A l thuc tnh kho T nh ngha suy ra: R 3NF X A F+ vi A X sao cho tha hai iu kin sau: 1. X khng l siu kho 2. A l thuc tnh khng kho V d 1: Xt v d trn, NKBH = <U, F>, vi U = {STT, NGAY, MH, TH, G, SL}, F = {STTU, MHTH, MHG} NKBH ch c mt kha STT v d dng thy NKBH 3NF bi v tn ti ph thuc hm MH TH F+ m MH khng l siu kho, TH cng khng phi l thuc tnh kho. Xem hai lc con ca NKBH l HANG v NK: HANG = <U1, F1>, vi U1 = {MH, TH, G} v F1 = {MH U1} NK = <U2, F2>, vi U2 = {STT, NGAY, MH, SL} v F2 = {STT U2} R rng HANG c duy nht kha l MH v NK c duy nht kha l STT, t d thy HANG v NK 3NF. V d 2:

Cho R = <CSZ, {CS Z, Z C}>. Lc ny c hai kha l CS v SZ. Vy R khng c thuc tnh khng kha nn R 3NF.

64

V d 3:

Cho R = <SIDM, {SI D, SD M}>. Lc ny ch c mt kha l SI, D, M l cc thuc tnh khng kha. R 3NF v SD M.
Ch : Nu R khng cha thuc tnh khng kha th R 3NF. Thut ton: Kim tra 3NF Vo: R = <U, F> Ra: Yes/No Phng php:

Procedure KiemTra3NF(R); Begin For mi X khng l siu kho ca R do If <X+ A l thuc tnh khng kho v A X> then Return No; {R khng thuc 3NF} Return Yes; {R thuc 3NF} End;
Nhn xt: Nu R 3NF th R 2NF Nu R 2NF th R 1NF

Ta c th chng minh rng: R 3NF X Y F+ v Y A F+ vi: X l kho Y khng l siu kho A l thuc tnh khng kho v A Y Hay: R 3NF X l kho Y, YA v A khng l thuc tnh kho, A Y
V d: Xt v d trn: NKBH = <U, F>, vi U = {STT, NGAY, MH, TH, G, SL}, F = {STTU, MHTH, MHG}

NKBH 3NF, v: {STT}_kho MH TH_khng kho.

Thut ton 1: Phn tch thnh cc lc con 3NF bo ton thng tin Vo: R = <U, F> Ra: = (R1, R2, , Rk) vi Ri 3NF (i = 1,k ) v l bo ton thng tin.

65

Phng php: Bc 1: Kim tra R 3NF Nu R 3NF: khng phn tch v dng Nu R 3NF th X_kho Y, m Y A_khng kho, A Y. Phn tch R thnh 2 lc con: = (YA, U\A) Bc 2: Kim tra cc lc con Kim tra ln lt cc lt cc lc con c thuc 3NF khng, nu khng thuc th li phn tch tip (theo quy tc ch ra trong bc 1) cho n khi no tt c cc lc con u thuc dng chun 3NF. By gi chng ta s c mt cy phn tch (cy nh phn) m cc nt l l cc lc con thuc chun 3NF. l kt qu cn tm. Procedure PhanTach(U, F); Begin If ( X A, X_khng siu kho, A_khng kho, A X) then begin PhanTach(XA, F1); PhanTach(U\A, F2); end; End; Lu : Nu phn tch = (U1, , Un) tn ti Ui l tp con ca Uj (i j) th ta loi b lc tng ng vi tp thuc tnh Ui.

Xt v d trn: {STT} {MH, TH} G Suy ra: = ({MH, TH, G}, {STT, NGAY, MH, TH, SL}) 3NF 3NF, do STT MHTH

V d:

Vy:

{MH,TH} {STT,NGAY,MH,SL} 3NF 3NF = ({MH,TH, G},{STT,NGAY,MH,SL})

Lu : Thut ton trn khng duy nht

66

V d: Xt v d trn {STT} {MH} TH. = ({MH, TH} , {STT, NGAY, MH, G, SL}) Suy ra: 3NF 3NF, do: STT MHDG

Vy:

{MH, G} {STT,NGAY,MH,SL} 3NF 3NF = ({MH, TH}, {MH, G}, {STT, NGAY, MH, SL})

Lu : Ta c th gp cc lc c dng nh sau to thnh mt lc m vn bo ton thng tin v ph thuc hm.

R1 =< AA1 , { A A1} > R2 =< AA2 , { A A2 } > R =< AA1 A2 ... Ak , { A A1 A2 ... Ak } > 3 NF ... Rk =< AAk , { A Ak } > Thut ton 2: Phn tch thnh cc lc con 3NF bo ton thng tin v bo ton ph thuc hm Vo: R = <U, F>
Ra:

= (R0, R1, R2, , Rk) vi Ri 3NF (i =

0,k ), l bo ton

thng tin v bo ton ph thuc hm.


Phng php:

{Phn tch thnh cc lc con 3NF bo ton thng tin v bo ton ph thuc hm}
Bc 1: Bc 2: Bc 3:

Xc nh ph ti thiu ca F: F = {Xi Ai | i = 1,m } Tm mt kho X bt k ca R. Xc nh cc lc con R0 = <U0, F0> vi U0 = X Ri = <Ui, Fi> vi Ui = XiAi (i = 1,m )

Lu

Nu i j m Ui Uj (i, j = 0,m ) th loi b Ri. Qu trnh ny s tip tc cho n khi khng th loi b c mt Ri no na. 67

Chng ta c th gp cc lc nh bn n.
V d

Cho R = <U, F>, vi U = ABCD, F = {AB, BC, CDA, ACD} Bc 1: Ta c mt ph ti thiu ca F l: F = {AB, BC, CDA, AD} Bc 2: Ta c A l mt kho ca R. Bc 3: R0 = <U0, F0> vi U0 = A , F0 = R1 = <AB, {AB }> R2 = <BC, {BC}> R3 = < ACD, {CDA, AD, AC}> R4 = <AD, {AD}> Loi R0 v R4 Kt lun: = (AB, BC, ACD) Lu : Thut ton khng duy nht, bi v: Do cch tm mt kho ban u c th khc nhau. Do cch xc nh ph ti thiu l khng duy nht.
5.6.4. Dng chun BCNF (Boyce - Codd Normal Form) V d Cho R = <U, F>, vi U = CSZ v F = {CSZ, ZC}. Nh thy trn, R 3NF, tuy nhin lc ny vn cn d tha d liu, chng hn xt quan h r R nh sau:

r =

C VN VN M M M M X

S Hue HN A B C D A

Z 84 84 1 1 2 2 99

68

Tch thnh lc con: C VN M M X Z 84 1 2 99 S Hue HN A B C Khng d tha D A Z 84 84 1 1 2 2 99 Khng d tha

Ta thy R 3NF (v R c 2 kho: CS v SZ), nhng R vn d tha. Ta s chng minh R BCNF.


nh ngha: (Dng chun BCNF) Cho R = <U, F>. Khi R thuc dng chun BCNF (k hiu RBCNF) nu vi mi XA F+ vi A X th X l siu kho ca R. Nhn xt: R BCNF R 3NF R BCNF XA F+ vi A X v X khng l siu kho. V d: Cho R = <U, F>, vi U = CSZ v F = {CSZ, ZC}, R BCNF v ZC F+ m v tri (Z) khng phi l siu kho. Thut ton: Kim tra mt lc quan h c thuc BCNF Vo: Ra:

R = <U, F> Yes/No

Phng php: Procedure KiemTraBCNF(U, F); Begin For <mi X khng l siu kho> do If X+F X then Return No; Return Yes; End;

69

Nhn xt: Tt c cc dng chun: 1NF, 2NF, 3NF u c th d tha d liu. R BCNF c ngha l R vn tn ti d tha d liu. Khi R BCNF, tt c cc ph thuc d liu u l cc rng buc v kho.

1NF 2NF 3NF


BCNF

Thut ton 1 (Phn tch R thnh cc lc tha BCNF v bo ton thng tin) Phi tm chiu ca cc ph thuc hm trn cc lc con. Vo: Ra:

R = <U, F>

= (R0, R1, R2, , Rk) bo ton thng tin v Ri BCNF

Phng php: xy dng cy phn tch theo cc th tc sau:

Procedure BCNF_PTH (U, F); Begin If <XA F+ vi A X vi X khng l siu kho> Then begin BCNF_PTH(XA, XA(F)); BCNF_PTH(U\A, U\A(F)); end; End;
V d: Cho R = <U, F>, vi U = CSZ v F = {CSZ, ZC}. R BCNF v ZC F+, Z khng l siu kho (tp kho: {CS, ZS}). Do vy ta phn tch R thnh 2 lc con nh sau:

R1 = <ZC, {Z C}> R1 BCNF

R2 = <SZ, > R2 BCNF

Nhn xt: u im: vic phn tch cc lc thnh cc lc con BCNF l dng.

70

Nhc im: c phc tp hm m ( l s thuc tnh ca mi lc con).


B 1:

Mi lc c hai thuc tnh u thuc dng chun BCNF. iu ny c ngha: |U| = 2 R = <U, F> BCNF. Chng minh: Gi s R = <AB, F>, xet cc trng hp sau:

F =

F = { A B} R =< U , F > BCNF F = { B A} F = { A B , B A}


B 2: Nu R BCNF th A, B U (A B): U\AB A F+. Tc l: nu A, B U (A B): U\AB A F+ th R BCNF. Chng minh: bng phng php phn chng Gi s R BCNF X A F+: A X v X khng l siu kho (X+F U). Do X+ U B U: B X+ (A B) B X X U\AB. U\AB X F+. Ngoi ra: X A F+ U\AB A F+ (mu thun) iu phi chng minh.
U X
+

X A. B.

Da vo hai b trn ta c thut ton sau y:


Thut ton 2: Phn tch R thnh cc lc tha BCNF v bo ton thng tin (khng cn tnh chiu ca F trn cc lc con). Vo: R = <U, F> Ra:

= (R0, R1, R2, , Rk) bo ton thng tin v Ri BCNF

71

Phng php: Procedure BCNF_PTH(U, F); Begin := ; Z:= U; Repeat PhanTach(Z, Y, A);{nhm xc nh Y v A phn tch Z thnh hai lc con Y BCNF v Z \ A}; := {Y}; Z := Z \ A ; Until A, B Z (A B): A(Z-AB)+; End; Trong :

Procedure PhanTach(Z, Y, A); Begin Y:= Z; While A, B Y: A B v A (Y-AB)+ do begin Y:= Y - B; A:= A; end; End;
V d

Cho R = <U, F>, vi U = CSZ v F = {CSZ, ZC} Y= CSZ A C + Z C F B S Y CZ Y = CSZ

CZ (Z C)

SZ 2 thuc tnh

= (CZ, SZ) l phn tch cn tm.

72

Nhn xt u im: thut ton ny c phc tp tnh ton l a thc O(n2m) vi n = |U|, m = |F|. Nhc im: i khi li phn tch mt lc quan h dng chun BCNF. V d 1: Cho R = <ABC , F = {C A, C B}>

Y = ABC A A B B Y AC C+ = CAB

AC (C A)

BC 2 thuc tnh

= (AC, BC) l phn tch cn tm. V d 2: Cho R = <ABCDEFG, {AB D, CD E, E B, EF G}>


ABCDEFG A B B B A C Y BCDEFG BDEFG BCDEFG = (CDEFG)+ B B B D F G BEFG BEG BE

BE EB

ACDEFG

EFG EFG

A B Y ACDEF

G A CDEFG

G C DEFG

G D EFG

CDE ACDF CDE BCNF = (BD, EFG, CDE, ACDF).

A B Y

E A CDEF

E F CDE

73

Nhn xt: - C hai thut ton trn u c th cho phn tch khng duy nht. - R rng khng tn ti mt thut ton phn tch thnh BCNF va bo ton thng tin, va bo ton ph thuc hm.

74

Chng 6. GII THIU V SQL


6.1. nh ngha d liu trong SQL v cc kiu d liu.

SQL s dng tp hp cc bng, dng v ct biu din mt m hnh CSDL quan h, trong cc bng, dng v ct ln lt tng ng vi cc quan h, cc b v cc thuc tnh. Cu lnh chnh ca SQL c s dng khai bo mt lc c s d liu l CREATE, cu lnh ny cho php to ra cc lc , cc quan h v cc domain (nh cc view, assertion, trigger). 6.1.1. Luc v nhng khi nim danh mc trong SQL Trong version u tin, SQL khng c tng xy dng cho mt lc c s d liu quan h. tng v xy dng mt lc c s d liu c bt u t SQL version 2.0, cc bng c t chc kt nhm v c nhng quan h vi nhau cng gii quyt mt ng dng. Mt lc trong SQL c xc nh thng qua tn lc , quyn hn truy xut v cc yu t bn trong nh: cc quan h, cc rng buc, cc khung nhn, cc domain v cch m t lc . Cu lnh to lc : CREATE SCHEMA <SchemaName> AUTHORIZATION <UserName>
V d 6.1: Cn t chc mt lc CSDL qun l s hoat ng ca mt cng ty c tn COMPANY. Bit rng, cng ty ny c mt tp th nhn vin ca cng ty, cc b phn qun l con trc thuc cng ty v cc n m cng ty ang thc hin. Mt s thng tin m t c bn tnh hnh hot ng ca cng ty COMPANY nhm phc v cho vic thit k l:

- Cng ty cn qun l s b phn (DEPARTMENT) trc thuc. Mi b phn c tn b phn, mt m s b phn, mt ngi qun l b phn v ni t b phn. Mt b phn c th t ti mt vi a phng khc nhau. - Mt b phn c th qun l mt s n (PROJECT). Mi n c mt tn, mt s hiu v ni t n. - Cng ty cn qun l mt tp th nhn vin (EMPLOYEE) trc thuc cng ty. Cng ty qun l nhn vin thng qua tn nhn vin, m s nhn vin, a ch, lng, gii tnh v ngy sinh ca nhn vin. Ngoi ra, cng ty cn bit quan h gia cc thnh vin trong cng ty c nhng chnh sch thch hp vi tng thnh vin. Vi cch m t nh trn, chng ta c th a ra lc CSDL COMPANY qun l vi d liu ca cng ty nh sau: 75

EMPLOYEE
Fname
John Franklin Alicia Jennifer Ramesh Joyce Ahmad James

Mvinit
B T J S K A V E

Lname
Smith Wong Zelaya Wallace Narayan English Jabbar Borg

Ssn
123456789 333445555 999887777 987654321 666884444 453453453 987987987 888665555

Bdate
1965-0109 1955-1208 1968-0119 1941-0620 1962-0915 1972-0731 1969-0329 1937-1110

Address
731Fondren,Houston,TX 638 Voss,Houston,TX 3321 Castle,Sping,TX 291 Berry,Bellaire,TX 975 Fire,Houston,TX 5631 Rice,Houston,TX 980 Dallas,Houston,TX 450 Stone,Houston,TX

Sex
M M F F M F M M

Salary
30000 40000 25000 43000 38000 25000 25000 55000

Super_ssn
333445555 888665555 987654321 888665555 333445555 333445555 987654321 NULL

Dno
5 5 4 4 5 5 4 1

DEPARTMENT Dname Dnumber Mgr_ssn Mgr_start_date


Research Administration Headquarters 5 4 1 333445555 987654321 888665555 1988-05-22 1995-01-01 1981-06-19

DEPT_LOCATIONS Dnumber Dlocation


1 4 5 5 5 Houston Stafford Bellaire Sugarland Houston

WORKS_ON Pno Essn


123456789 123456789 666884444 453453453 453453453 333445555 333445555 333445555 333445555 999887777 999887777 987987987 987987987 987654321 987654321 888665555 1 2 3 1 2 2 3 10 20 30 10 10 30 30 20 20

Hours
32.5 7.5 40.0 20.0 20.0 10.0 10.0 10.0 10.0 30.0 10.0 35.0 5.0 20.0 15.0 NULL

76

6.1.2. Lnh to bng trong SQL

Cu lnh CREATE TABLE c s dng to mt quan h mi vi cc ch nh km theo gm: tn quan h, cc thuc tnh v cc rng buc km theo nu c. Cc thuc tnh cn c xc nh trc v mi thuc tnh c mt tn, kiu d liu cho thuc tnh v cc rng buc vng km theo nu c. Cc kha chnh, kha ph, kha ngoi cng nh cc rng buc cng c th c to ra trong lnh CREATE. Lu rng, khi mt quan h c to ra nhng vn cn sa i hoc b sung mt s yu t cn thit khc chng ta c th s dng cu lnh ALTER TABLE thc hin iu chnh. D chng ta khng qu quan tm n tnh y ca mt bng c to. C php chung: CREATE TABLE [<Schema>].<TableName> (FieldName1 Type1[(size)] [NOT NULL], .... FieldNameN TypeN[(size)] [NOT NULL], PRIMARY KEY (FieldName), FOREIGN TableName(Field)); Gii thch cc thnh phn: - TableName: Tn quan h. - FieldName: Tn cc thuc tnh; cn khai bo kiu, kch thc, qui nh v nhn gi tr NULL/NOT NULL (mc nh cho nhn gi tr NULL). - PRIMARY KEY: Ch nh kha ca quan h. Nu quan h c nhiu kha th cc kha c lit k cch nhau mt du phy. - FOREIGN KEY: Ch nh kha ngoi Vi lnh Creat Table c th to dng mt lc quan h vi cc quan h, cc kha ch nh, cc rng buc theo yu cu. Sau y l mt v d minh ha. To lc COMPANY vi tn ngi dng Jsmith CREATE SCHEMA COMPANY AUTHORIZATION Jsmith.
CREATE TABLE EMPLOYEE

KEY

(FieldName)

REFERENCES

(Fname Minit Ssn Bdate

VARCHAR(15) CHAR, VARCHAR(9) DATE,

NOT NULL, NOT NULL,

77

Address Sex Salary Super_ssn Dno

VARCHAR(30) CHAR, DECIMAL(10,2), CHAR(9), INT

NOT NULL,

NOT NULL,

PRIMARY KEY (ssn), FOREIGN KEY (Super_ssn) REFERENCES EMPLOYEE(ssn), FOREIGN KEY (Dno) REFERENCES DEPARTMENT(Dnumber);
CREATE TABLE DEPARTMENT

(Dname Dnumber Mgr_ssn Mgr_start_date UNIQUE(Dname),

VARCHAR(15) INT CHAR(9) DATE,

NOT NULL, NOT NULL, NOT NULL,

PRIMARY KEY (Dnumber), FOREIGN KEY (mgr_ssn) REFERENCES EMPLOYEE(ssn));


CREATE TABLE DEPT_LOCATIONS

(Dnumber Dlocation

INT VARCHAR(15)

NOT NULL, NOT NULL,

PRIMARY KEY (Dnumber, Dlocation),


FOREIGN KEY (Dnumber) REFERENCES DEPARTMENT(Dnumber));

CREATE TABLE PROJECT

(Pname Pnumber Plocation Dnum UNIQUE(Pname),

VARCHAR(15) INT VARCHAR(15), INT

NOT NULL, NOT NULL, NOT NULL

PRIMARY KEY (Pnumber), FOREIGN KEY DEPARTMENT(Dnumber));


CREATE TABLE WORKS_ON

(Dnum)

REFERENCES

78

(Essn Pno Hours

CHAR(9) INT DECIMAL(3,1)

NOT NULL, NOT NULL, NOT NULL,

PRIMARY KEY(Essn, Pno), FOREIGN KEY (Essn) REFRENCES EMPLOYEE(ssn), FOREIGN KEY (Pno) REFRENCES PROJECT(Pnumber));
CREATE TABLE DEPENDENT

(Essn Sex Bdate Relationship

CHAR(9) CHAR, DATE, VARCHAR(8),

NOT NULL, NOT NULL,

Dependent_name VARCHAR(15)

PRIMARY KEY(Essn, Dependent_name), FOREIGN KEY (Essn) REFRENCES EMPLOYEE(Ssn)); y c mt vi kho ngoi c th b li c php bi v c nhng quan h vng hoc c mt vi bng lin quan ti mt bng cha c to. V d, thuc v kho Super_ssn trong bng EMPLOYEE l quan h vng bi v n lin quan ti chnh bng . Kha ngoi Dno trong bng EMPLOYEE c lin quan ti bng DEPARTMENT m bng ny cha c to ra. gii quyt vn ny, nhng rng buc ny c th ra khi cc cu lnh CREATE TABLE trong v d trn v s c b sung sau bng cu lnh ALTER TABLE (mc 6.3.2).
6.1.3. Cc kiu d liu trong SQL

Nhng kiu d liu c bn c gi tr cho thuc tnh bao gm: Numeric, Character string, Bit string, Boolean, Date v Time. - D liu kiu s (Numeric): l cc kiu d liu s bao gm cc s nguyn vi cc kch c khc nhau (INTEGER hoc INT v SMALLINT) v cc s vi du phy ng (real) khi cn biu din chnh xc (FLOAT hoc REAL v DOUBLE PRECISION). inh dng cc s c th c th hin bi vic s dng cch biu din DECIMAL(i,j) - hoc DEC(i,j) hoc NUMERIC (i,j) Trong i l tng di chnh xc ca dy s k c du chm thp phn v j l s ca ch s sau du chm thp phn. Mc nh j=0 v i l di ca kiu d liu c nh ngha. - D liu chui k t (Character string): L mt chui k t vi di l c nh hoc c th thay i. 79

Khai bo: + CHAR (n) v VARCHAR (n): khai bo cc chui k t vi di chnh xc, trong n l s k t. + VARCHAR((n), CHAR VARYING(n) hoc CHARACTER VARYING(n): Chui k t vi di c th thay i c, trong n l s k t ln nht m chui c th nhn c. - D liu chui Bit: S dng khai bo BIT(n) khi cn khai bo chui bit c di c nh n; hoc BIT VARYING(n), khi cn khai bo chui BIT c di c th thay i- n l s ln nht ca Bits. - D liu Boolean: l nhng gi tr truyn thng TRUE hoc FALSE. Trong SQL, v s hin din ca nhng gi tr NULL nn kiu d liu logic ba gi thng c s dng, nh vy ba nh gi nh mt kiu d liu Boolean nh UNKNOWN. Chng ta tho lun s cn thit cho gi tr UNKNOWN v logic ba tr trong mc 6.5.6. - D liu kiu Date v Time: Kiu d liu DATE c di 10 v n gm cc thnh phn YEAR, MONTH v DAY trong dng YYYY-MM-DD. D liu kiu TIME c t nht 8 v tr vi cc thnh phn HOUR, MINUTE v SECOND trong dng HH:MM:SS. Ch nhng d liu ngy v gi hp l mi cho php thc hin y cc php tnh ton trong SQL. Ngoi ra, s so snh < c th s dng vi tt c d liu ngy hoc gi.
6.2. Ch nh nhng rng buc trong SQL 6.2.1. Rng buc vng v gi tr mc nh ca thuc tnh

- Gi tr NOT/NOT NULL. Bi v SQL cho php cc thuc tnh nhn cc gi tr NULL, mt rng buc NOT NULL l c xc nh nu trong thc t thuc tnh lin quan khng th nhn gi tr NULL. Gia tr NOT NULL lun c xc nh cho nhng thuc tnh kho chnh trong mi quan h, cc thuc tnh cn li c th nhn gi tr ny hay khng ty thuc vo yu cu ca lc . - Gi tr mc nh trn thuc tnh. Gi tr mc nh cho mi thuc tnh c th c xc nh bng cch s dng mnh DEFAULT <value>. Khi c mt b mi c thm vo quan h v nu c mt thuc tnh ca b khng nhn c gi tr th gi tr mc nh (nu c) s c thay vo. - Rng buc vng vi mnh CHECK C php: [CONSTRAINT <constrainName>] CHECK (condition) 80

Mt kiu rng buc khc c tc ng trn phm vi gi tr thuc tnh hoc gi tr vng l mnh CHECK. V d, m s b phn yu cu l nhng s nguyn nm gia 1 v 20, khi chng ta c th chuyn i khai bo thuc tnh ca Dnumber trong bng DEPARTMENT nh sau: Dnumber INT NOT NULL CHECK (Dnumber > 0 AND Dnumber < 21); Mnh CHECK c th cng c s dng cng vi cu lnh CREATE DOMAIN. V d, chng ta vit cu lnh sau y: CREATE DOMAIN D_NUM AS INTEGER CHECK (D_NUM > 0 AND D_NUM <21) Cc thuc tnh c th s dng D_NUM l Dnumber ca Department, Dnum ca PROJECT, Dno ca EMPLOYEE,...
V d 6.2:

V d minh ho cch khai bo gi tr mc nh ca cc thuc tnh v mt s rng buc. CREATE TABLE EMPLOYEE (..., Dno INT NOT NULL DEFAULT 1, CONSTRAINT EMPPK PRIMARY KEY(Ssn) CONSTRAINT EMPSUPERFK FOREIGN KEY (Super_Ssn) REFERENCES EMPLOYEE(Ssn) ON DELETE SET NULL CONSTRAINT EMPDEPTFK FOREIGN KEY (Dno) REFERENCES DEPARTMENT(Dnumber) ON DELETE SET NULL CREATE TABLE DEPARTMENT (..., Mgr_ssn CHAR(9) ..., CONSTRAINT DEPTPK PRIMARY KEY(Dnumber) 81 NOT NULL DEFAULT 888665555, ON UPDATE CASCADE; ON UPDATE CASCADE,

CONSTRAINT DEPTSK UNIQUE(Dname) CONSTRAINT DEPTMGRFK FOREIGN KEY (Mgr_ssn) REFERENCES EMPLOYEE(Ssn) ON DELETE SET DEFAULT ON UPDATE CASCADE; CREATE TABLE DEPARTMENT (..., PRIMARY KEY (Dnumber, Dlocation), FOREIGN KEY DEPARTMENT(Dnumber) (Dnumber) REFERENCES

ON DELETE CASCADE
6.2.2. Kho ch nh v cc rng buc ton vn

ON UPDATE CASCADE;

Cc kha v nhng rng buc ton vn c lin quan ng vai tr rt quan trng, cc i tng ny c ch nh trong cu lnh CREATE TABLE thng qua nhng mnh c bit. Mt hoc nhiu thuc tnh c ch nh trong mnh PRIMARY KEY to kho chnh ca quan h. Nu kho chnh c thuc tnh n th mnh c th i theo sau ngay thuc tnh. C php to kha chnh:
[CONSTRAINT ConstrainName] PRIMARY KEY [(ColumnList)]

V d, kho chnh ca DEPARTMENT c th c ch nh sau y (thay th phng php c ch nh trong V d 6.1): Dnumber INT PRIMARY KEY; Mnh UNIQUE khai bo cc kho ph nh minh ho trong bng DEPARTMENT v PROJECT c khai bo trong v du 6.6. C php to kha ph:
[CONSTRAINT ConstrainName] UNIQUE [(ColumnList)]

Nh chng ta bn trong cc mc trc, rng buc ton vn c th b vi phm khi cc b c chn hoc xo hoc khi cc kho ngoi hoc kho chnh c gi tr thuc tnh b thay i. Thao tc mc nh m SQL thc hin l khi c li ton vn n s loi b qu trnh cp nht v iu ny s gy ra li. Tuy nhin, ngi thit k lc c th ch nh mt tc ng khc thc hin nu rng buc ton vn c lin quan b vi phm gn lin vi mnh tc ng ton vn c lin quan n mi rng buc kho ngoi. Bao gm cc la 82

chn SET NULL, CASCADE v SET DEFAULT. Mt la chn s m t vi mt trong hai trng hp ON DELETE hoc ON UPDATE. y, ngi thit k c s d liu chn SET NULL ON DELETE v CASCADE UPDATE cho kho ngoi Super_ssn ca EMPLOYEE. Bin php ny nu c thnh vin b xo, gi tr ca Super_ssn tr thnh b t ng v NULL cho tt c cc b thnh vin ngha l lin quan n vic xa b thnh vin. Mt hng khc, nu gi tr Ssn trong qun l thnh vin c cp nht, gi tr mi c xp lp vi Super_ssn cho tt c cc b thnh vin c lin quan vi b thnh vin cp nht. C php chung to mt kha ngoi: [CONSTRAINT ConstaintName] FOREIGN KEY [(ColumnList)] REFERENCES ReferenceTableName(ReferenceColumnName) [ON DELETE CASCADE | NO ACTION | SET NULL | SET DEFAULT] [ON UPDATE CASCADE | NO ACTION | SET NULL | SET DEFAULT] Cch thc x l i vi cc bn ghi trong bng c nh ngha trong trng hp cc bn ghi c tham chiu trong bng tham chiu b xo (ON DELETE) hay cp nht (ON UPDATE). SQL chun a ra 4 cch x l: - CASCADE: T ng xo (cp nht) nu bn ghi c tham chiu b xo (cp nht). - NO ACTION: (Mc nh) Nu bn ghi trong bng tham chiu ang c tham chiu bi mt bn ghi bt k trong bng c nh ngha th bn ghi khng c php xo hoc cp nht (i vi ct c tham chiu). - SET NULL: Cp nht li kho ngoi ca bn ghi thnh gi tr NULL (nu ct cho php nhn gi tr NULL). - SET DEFAULT: Cp nht li kho ngoi ca bn ghi nhn gi tr mc nh (nu ct c qui nh gi tr mc nh). Mc nhin, la chn thc hin bi DBMS i din cho SET NULL hoc SET DEFAULT l nh nhau cho c hai ON DELETE v ON UPDATE: gi tr ca cc thuc tnh c lin quan thiu chnh xc s c chuyn i v NULL bng SET NULL v gi tr mc nhin c ch nh l SET DEFAULT. La chn CASCADE ON DELETE s xo cc b lin quan, ngc li la chn CASCADE ON UPDATE s chuyn i d liu ca kho ngoi ti cp nht gi tr kho chnh cho tt c cc b c lin quan. Trch nhim ca ngi thit k c s d liu l hng ti s chn la thch hp v 83

ch nh trong lc c s d liu. Bng quy tc thng thng, chn la CASCADE l thch hp cho nhng quan h c quan h nh WORKS_ON; i din cho nhiu quan h c thuc tnh a dng nh DEPT_LOCATIONS; i din cho nhiu quan h c cc b thc th yu nh DEPARTMENT.
6.2.3. t tn cho nhng rng buc

Tn ca tt c cc rng buc trong phm vi l lc ring bit bt buc tn ti duy nht. Tn mt rng buc c dng nhn bit mt rng buc ring bit trong trng hp rng buc phi c tr v sau v thay th vi rng buc khc nh chng ta tho lun trong mc 6.3. Tn cho cc lc l tu .
6.2.4. Ch nh nhng rng buc trn nhng b s dng CHECK

Ngoi ra, kho v rng buc ton vn c lin quan c ch nh vi t kho c bit, bng cc rng buc khc c th ch nh r thng qua mnh b sung CHECK kt thc ca cu lnh CREATE TABLE. iu c th gi cc rng buc b d liu c s bi v n p dng cho mi b ring l v kim tra mi khi mt b c thm vo hoc gim bt. V d, gi s rng bng DEPARTMENT c thm thuc tnh Dept_create_date, c lu tr ngy khi thnh vin c to ra. Lc chng ta c th thm sau mnh CHECK kt thc ca cu lnh CREATE TABLE cho bng DEPARTMENT c chc chn ca vic bt u qun l ngy ban u v cc ngy c to ra v sau. CHECK (Dept_create_date <= Mgr_start_date); Mnh CHECK c th cng c s dng ch r nhng rng buc chung hn ca vic s dng cu lnh CREATE ASSERTION ca SQL. Chng ta tho lun iu ny trong mc 6.7 bi v n qui nh kh nng y ca truy vn v c tho lun trong mc 6.4 v 6.5..
6.3. Thay i lc bo co trong SQL

Trong phn ny, chng ta c cch nhn tng quan v cc cu lnh sn c pht trin lc trong SQL, cc cu lnh ny thng c s dng sa i mt lc nh vic b sung hoc xo cc bng, cc thuc tnh, cc rng buc v cc thnh phn khc ca lc .
6.3.1. Lnh DROP

Lnh DROP c th c s dng xo tn cc yu thnh phn ca lc nh cc bng, cc vng hoc cc rng buc. Hn na, ta c th xo mt lc . V d, nu mt lc khng cn s dng na th c th lnh DROP SCHEMA xa n. y c hai chn la cch thc hin CASCADE v RESTRICT. V d xo lc c s d liu COMPANY v tt c cc thnh phn bn trong nh cc bng, cc vng v thnh phn khc ta s dng t kha CASCADE nh sau: 84

DROP SCHEMA COMPANY CASCADE; Nu s dng RESTRICT thay cho CASCADE th lc s b xa nu cc thnh phn bn trong n l rng; nu ngc li lnh DROP s khng c thc hin. Nu quan h c s trong mt lc l cn thit na th quan h v cc nh ngha lin quan ca n c th c xo bi lnh DROP TABLE. V d, nu chng ta khng cn theo di mi quan h ca cc nhn vin trong c s d liu COMPANY, chng ta c th b i quan h DEPENDENT bng cch s dng lnh sau y: DROP TABLE DEPENDENT CASCADE; Nu chn RESTRICT thay v chn CASCADE, mt bng b xo khi v ch khi n khng c lin trong bt k rng buc no (v d, kho ngoi c nh ngha thng qua mt quan h khc) hoc nhng khung nhn (xem mc 6.8). Vi la chn CASCADE, tt c nhng rng buc v nhng khung nhn c mi quan h vi cc bng b xa s c t ng xo. Ch rng lnh DROP TABLE khng ch xo tt c nhng mu tin trong bng nu c php m cn xa c cu trc bng khi lc . Nu c yu cu xo cc mu tin nhng cho php gi li cu trc bng s dng v sau th lnh DELETE (xem mc 6.6.2) s c s dng thay v chn lnh DROP TABLE. Ngoi ra, lnh DROP cn thng c dng xo cc thnh phn khc ca lc , nh xa rng buc hoc vng.
6.3.2. Lnh ALTER

Cc bng c s hoc cc thnh phn khc ca lc sau khi nh ngha c th c sa i bng lnh ALTER. Vi mt quan h c s cho trc, lnh Alter c th thc hin vic: b sung hoc xa mt ct; thay i cch nh ngha ct; b sung hoc xa b cc rng buc trong quan h.
C php chung ca cu lnh ALTER TABLE nh sau:

ALTER TABLE TableName ADD ColumnDefine ALTER COLUMN <ColumnName> <DataType> [NULL | NOT NULL] | DROP COLUMN <ColumnName > ADD CONSTRAINT <ConstraintName> < ConstraintDefine > DROP CONSTRAINT <ConstraintName>

85

V d, cn b sung thuc tnh theo di cc cng vic ca cc nhn vin trong quan h c s EMPLOYEE ca lc COMPANY, chng ta c th s dng lnh: ALTER TABLE COMPANY.EMPLOYEE ADD COLUMN job VARCHAR(12); Khi chng ta cn nhp vo gi tr cho thuc tnh mi Job cho tng b ring l ca quan h EMPLOYEE. iu ny c th thc hin qua mnh Default hoc s dng lnh UPDATE (xem mc 6.6). Nu mnh Default khng c ch nh, thuc tnh mi s nhn gi tr NULL trong tt c cc b ca quan h khi lnh c thc thi, v do rng buc NOT NULL s khng cho php trong trng hp ny. xo ct, chng ta bt buc phi chn CASCADE hoc RESTRICT. Nu CASCADE c chn, tt c cc rng buc v cc khung nhn c lin quan n ct b xa s c t ng xa khi lc cng vi ct b xa. Nu RESTRICT c chn, lnh ch thc hin c nu khng c cc rng buc hoc cc khung nhn (hoc cc thnh phn khc) c lin quan n ct. V d, cu lnh sau s xa thuc tnh Adress khi bng c s EMPLOYEE:
ALTER TABLE COMPANY.EMPLOYEE DROP COLUMN Address CASCADE;

Cu lnh ALTER cng c th chnh sa mt ct c nh ngha nh b i mt mnh DEFAULT ang tn ti hoc b sung mt mnh DEFAULT mi. Sau y l v d minh ho mnh ny: ALTER TABLE COMPANY.DEPARTMENT ALTER COLUMN Mgr_ssn DROP DEFAULT; ALTER TABLE COMPANY.DEPARTMENT ALTER COLUMN Mgr_ssn SET DEFAULT 333445555; C th chuyn i ch nh cc rng buc trn bng bng cch thm vo hoc xo mt rng buc. Khi n c ch nh xo mt rng buc bt buc phi c tn ca n. V d, xo rng buc c tn EMPSUPERFK trong v d 6.2 t quan h EMPLOYEE, chng ta vit: ALTER TABLE COMPANY.EMPLOYEE DROP CONSTRAINT EMPSUPERFK CASCADE; Chng ta c th thm vo mt rng buc mi cho quan h, bng cch s dng t kho ADD trong cu lnh ALTER TABLE v theo sau l rng buc mi; rng buc mi c th c tn hoc khng c. 86

6.4. Truy vn c bn trong SQL

SQL c mt cu lnh cn bn cho vic tm kim thng tin t c s d liu: cu lnh SELECT. Cu lnh SELECT khng c mi quan h ti tnh ton SELECT ca i s quan h c tho lun trong chng trc. y c nhiu la chn v thm vo cu lnh SELECT trong SQL, v vy chng ta s dn dn gii thiu nt c bit ca n. Trc khi bt u, chng ta xem xt im khc bit quan trng gia SQL v m hnh quan h: SQL cho php mt bng (quan h) c hai hoc nhiu b l ging nhau trong tt c cc gi tr thuc tnh ca n. V l do , ton b bng ca SQL khng phi thit lp ca cc b bi v thit lp khng cho php hai b phn ging nhau, hn na mt bng trong SQL khng phi l mt tp hp ca nhng b, bi v mt tp hp khng cho php c nhng phn t ging ht nhau. Thng qua mt s v d chng ta s r hn cc vn ny.
6.4.1. Cu trc truy vn c bn SELECT-FROM-WHERE

Truy vn trong SQL c th rt phc tp. Chng ta s bt u vi v d tiu biu v cc truy vn v sau pht trin ci phc tp hn theo cch x l tng bc mt. Dng cn bn ca cu lnh SELECT, mt vi i hi s sp xp hoc mt khi Select-From-Where l s thit lp ca ba mnh SELECT, FROM v WHERE v nh s thit lp sau y: SELECT FROM WHERE Trong : - <attribute list>: lit k cc tn thuc tnh lin quan n nhng gi tr cn tm trong cu truy vn. - <table list>: lit k cc tn quan h cn x l ca cu truy vn. - <condition>: L biu thc iu kin (Logic) trch lc cc b cn tm trong cu truy vn. Trong SQL, cc ton t so snh c bn dng so snh cc gi tr thuc tnh vi mt gi tr khc. Cc ton t so snh gm =, <, <=, >, >= v <>. iu ny ph hp vi cc ton t i s quan h =, <, , >, v theo th t v vi cc ton t ca ngn ng lp trnh C/C++: =, <, <=, >, >= v !=. S khc nhau chnh l ton t khng ging nhau. Chng ta minh ho cu lnh SELECT c bn trong SQL vi mt vi v d truy vn. Cc cu truy vn c nhn y vi nhng gi tr truy vn ging nhau c cp v d dng tham kho trong chng trc. 87 <attribute list> <table list> <condition>

Truy vn 0: Tm ngy sinh v a ch ca cc thnh vin c tn l John B. Smith. Q0: SELECT

Bdate, Adress EMPLOYEE Fname=John AND Minit=B AND Lname=Smith;

FROM WHERE

Cu truy vn ny ch s dng quan h EMPLOYEE trong mnh FROM. Truy vn thc hin la chn cc b trong quan h EMPLOYEE tho mn iu kin ca mnh WHERE, kt qu c lit k theo thuc tnh Bdate v Adress trong mnh SELECT. Q0 tng t vi biu din i s quan h sau y:

Bdate,Adress(Fname=John AND Minit=B AND Lname=Smith(EMPLOYEE))


Mnh SELECT ca SQL ch r nhng thuc tnh c tham chiu v mnh WHERE ch r vic la chn iu kin. S khc nhau trong cu truy vn SQL l chng ta c c nhng b ging nhau trong kt qu bi v s rng buc ca mt quan h l mt tp hp khng bt buc. Kt qu ca cc truy vn SQL khi ng dng hin th trng thi c s d liu COMPANY: (a) Q0. (b) Q6. (c) Q2. (d) Q8. (e) Q9. (f) Q10. (g) Q1C.

88

(a)

Bdate 1965-01-09

Adress 731 Fondren, Houston, TX

(b)

Fname Jonh Frankin Ramesh Joyce

Lname Smith Wong Narayan English

Adress 731 Fondren, Houston, TX 638 Voss, Houston, TX 975 Fire Oak, Humble, TX 5631 Rice, Houston, TX Ssn 123456789 333445555 999887777 987654321 666884444 453453453 987987987 888665555 123456789 333445555 999887777 987654321 666884444 453453453 987987987 888665555 123456789 333445555 999887777 987654321 666884444 453453453 987987987 888665555
Salary
30000 40000 38000 25000

(c)

Pnumer 10 30

Dnum 4 4

Lname Wallace Wallace

Adress 291 Berry, Bellaire, TX 291 Berry, Bellaire, TX

Bdate 1941-06-20 1941-06-20

(f)

(d)

E.Fname John Franklin Alicia Jennier Ramesh Joyce Ahmad

E.Lname Smith Wong Zelaya Wallace Narayan Englsh Jabbar

S.Fname Franklin James Jennifer James Franklin Franklin Jennifer

S.Lname Wong Borg Wallace Borg Wong Wong Wallace

(e)
E.Fname
123456789 333445555 999887777 987654321 666884444 453453453 987987987 888665555
Fname
John Franklin Ramesh Joyce B T K A

Dname Research Research Research Research Research Research Research Research Administration Administration Administration Administration Administration Administration Administration Administration Headquarters Headquarters Headquarters Headquarters Headquarters Headquarters Headquarters Headquarters
Dno
5 5 5 5

(g)

Minit

Lname
Smith Wong Narrayan English

Ssn
123456789 333445555 666884444 453453453

Bdate
1965-09-01 1955-12-08 1962-09-15 1972-07-31

Adress
731 Fondren, Houston, TX 638 Voss, Houston, TX 975 Fire Oak, Humble, TX 5631 Rice, Houston, TX

Sex
M M M F

Super_ssn
333445555 888665555 333445555 333445555

Truy vn Q0 cng tng t vi php tnh biu thc quan h b d liu sau, tr nhng bn sao, nu c, ln na khng c loi tr trong cu hi SQL.
Q0: (t.Bdate, t.Minit=B

t.Adress|

EMPLOYEE(t)

AND

t.Fname=John

AND

AND t.Lname=Smith) Do , chng ta c th thy mt b bin d liu n trong cu truy vn SQL trn phm vi mi b trong bng EMPLOYEE v nh gi iu kin trong mnh WHERE. Ch nhng b tho mn iu kin, iu c ngha l nh gi diu kin ca cc b la TRUE sau khi thay th cc gi tr thuc tnh ng vi n c chn.
Query 1: Tm tn v a ch ca ca tt cc thnh vin thuc b phn Reseach.

89

Q1: SELECT

Fname, Lname, Adress EMPLOYEE, DEPARTMENT Dname=Research AND Dnumber=Dno;

FROM WHERE

Truy vn Q1 tng t vi trnh t SELECT-PROJECT-JOIN ca php ton i s quan h. Th d nh cu truy vn thng gi select-project-join. Trong mnh SQL ca Q1, iu kin Dname=Research l iu kin c chn v ph hp vi php ton SELECT trong i s quan h. iu kin Dnumber=Dno l iu kin kt hp v ph hp vi iu kin JOIN trong i s quan h. Ni chung, nhiu gi tr ca cc iu kin Select v Join c ch r trong mt cu lnh SQL: Tip theo l v d v cu truy vn select-projectjoin vi hai iu kin ni lin vi nhau:
Query 2: Lit k s lng n, s lng b phn qun l, tn ngi qun l b phn, a ch v ngy sinh ti a phng Stafford. Q2: SELECT

Pnumber, Dnum, Lname, Adress, Bdate PROJECT, DEPARTMENT, EMPLOYEE Dnum=Dnumber AND Mgr_ssn=Ssn AND Plocation=Stafford;

FROM WHERE

iu kin ph hp Dnum=Dnumber c lin quan gia n v b phn qun l ca n nhng ngc li iu kin tip theo Mgr_ssn=Ssn c lin quan gia b phn qun l v ngi qun l thnh vin.
6.4.2. Cc tn, b danh v cc bin b thuc tnh o

Trong SQL mt tn c th dng cho hai (hoc nhiu) thuc tnh trong cc quan h khc nhau. Nu y l trng hp c xem l truy vn n hai hoc nhiu thuc tnh cng tn, chng ta cn phi ni r tn thuc tnh vi tn quan h ngn nga s nhp nhng. iu ny c thc hin bng vic thm vo u l tn quan h ri ti tn thuc tnh v phn cch bi du chm. minh ho iu ny, gi s rng thuc tnh Dno v Lname ca quan h EMPLOYEE c xem l Dnumber v Name, v thuc tnh Dname ca DEPARTMENT c xem l Name; ngn nga s nhp nhng, cu truy vn Q1 s c ni li bng cch a vo trong Q1A. Chng ta cn phi thm vo u nhng thuc tnh Name v Dnumber trong Q1A ch r ci no chng ta cn xem xt bi v cc tn thuc tnh c s dng cho c hai quan h.
Q1A:

SELECT FROM WHERE

Fname, EMPLOYEE.Name, Adress EMPLOYEE , DEPARTMENT DEPARTMENT.Name=Research AND 90

DEPARTMENT.Dnumber=EMPLOYEE.Dnumber; Tnh trng c nhiu ngha cng xy ra trong trng hp cu truy vn c hai quan h ging nhau trong v d sau y:
Query 8: Lit k h v tn tng nhn vin v h v tn ca ngi qun l trc tip anh y. Q8: SELECT

E.Fname, E.Lname, S.Fname, S.Lname EMPLOYEE AS E, EMPLOYEE AS S E.super_ssn=S.Ssn;

FROM WHERE

Trong trng hp ny, chng ta chp nhn khai bo mt trong hai tn quan h E v S, gi l cc b danh hoc cc bin b cho quan h EMPLOYEE. Mt b danh c th i theo sau t kho AS, c trnh by trong Q8, hoc n c th i theo sau ngay tn quan h - V d, vit EMPLOYEE E, EMPLOYEE S trong mnh FROM ca Q8. N cng c th thc hin c vic i tn cc thuc tnh quan h trong phm vi cu truy vn trong SQL bng cch cho n b danh. V d, nu chng ta vit: EMPLOYEE AS E(Fn, Mi, Ln, Ssn, Bd, Addr, Sex, Sal, Sssn, Dno) trong mnh FROM, Fn tr thnh mt b danh cho Fname, Mi cho Minit, Ln cho Lname,... Trong Q8, chng ta c th thy E v S l hai bn sao khc nhau ca quan h EMPLOYEE, u tin E m t cc thnh vin trong vai tr chu s qun l; th hai S m t cc thnh vin trong vai tr qun l. By gi chng ta c th c hai bn sao ph hp. Mt vn d nhin, trong thc t y ch c mt quan h EMPLOYEE ph hp vi iu kin ni quan h vi chnh n bi s ph hp cc b tho mn iu kin ni E.Super_ssn=S.Ssn. Ch rng trong v d ny mt mc truy vn quy bng cch chng ta tho lun trong mc 6.4.2. Trong phin bn u tin ca SQL, i s quan h l khng th thc hin c vi ton b truy vn quy c ch nh vi mt n s ca cc v tr trong mt cu lnh SQL. Mt xy dng bng cch ch r cc truy vn quy c kt hp cht ch vo trong SQL-99, c tho lun trong chng 22. Cc kt qu ca cu truy vn Q8 c trnh by trong hnh (d). Bt c lc no mt hoc nhiu b danh c gn cho quan h, chng ta c th s dng cc tn ny c kt qu khc nhau c lin quan trong quan h. iu ny cho php s lin quan n cng quan h trong phm vi cu truy vn. Ch rng, nu cn chng ta c th dng k thut tn b danh trong nhiu cu truy vn SQL vi vic ch r b cc bin cho mi bng trong mnh WHERE. Trong thc t, hnh ng ny ngc li vi l thuyt c gii thiu t nhng 91

kt qu trong cc cu truy vn m c hiu d dng. V d, chng ta c th ch r cu truy vn Q1A bng cu Q1B:


Q1B: SELECT

E.Fname, E.Lname, E.Adress EMPLOYEE E, DEPARTMENT D D.Name=Research AND D.Dnumber=E.Dnumer;

FROM WHERE

Nu chng ta ch r b cc bin cho mi bng trong mnh WHERE, mt cu truy vn select-project-join trong SQL cht ch tng t ng vi biu thc php tnh c quan h b d liu tng ng. V d, so snh Q1B vi biu thc php tnh c quan h b d liu tng ng sau trn cc bng gc:
Q1: {e.Fname, e.Lname, e. Adress| EMPLOYEE(e) AND (d)
(DEPARTMENT(d) AND d.Dname=Research AND d.Dnumber=e.Dno)}

6.4.3. Khng s dng mnh WHERE v cch s dng du *

- Khng s dng mnh WHERE: Khi khng ch nh mnh WHERE, tc khng c iu kin la chn b d liu th tt c cc b d liu ca quan h ch c xc nh qua mnh FROM v SELECT la chn cho kt qu truy vn. Nu c nhiu hn mt quan h c xc nh trong mnh FROM v mnh WHERE y th CROSS PRODUCT c th kt hp tt c cc b - ca la chn ny. V d, Query 9 chn tt c EMPLOYEE Ssns v truy vn 10 chn tt c t hp ca mt EMPLOYEE Ssn v mt DEARTMENT Dname.
Query 9 v 10: Chn tt c EMPLOYEE Ssns (Q9) v tt c t hp ca EMPLOYEE Ssn v DEPARMENT Dname Q(10) trong c s d liu. Q9: SELECT

Ssn EMPLOYEE; Ssn EMPLOYEE, DEPARTMENT;

FROM
Q10: SELECT

FROM

Cc k quan trng khi ch r mt la chn v iu kin thnh vin trong mnh WHERE nu nh nhiu iu kin b qua khng ng v cho kt qu quan h rt ln. Ch trong Q10 l ging nhau CROSS PRODUCT tho mn php ton tip theo bng php ton PROJECT trong i s quan h. Nu chng ta ch nh tt c cc thuc tnh ca EMPLOYEE v DEPARMENT trong Q10, chng ta c c CROSS PRODUCT. - Cch s dng du * Khi cn lit k tt c cc gi tr ca cc thuc tnh ca cc b d liu c la chn, chng ta khng cn lit k cc tn thuc tnh mt cch r rng; chng ta s dng du * sau mnh SELECT i din cho tt c cc thuc 92

tnh. V d, cu truy vn Q1C tm tt c cc nhn vin trong quan h EMPLOYEE lm vic ti b phn s 5 trong quan h DEPARTMENT. Truy vn Q1D tm tt c cc gi tr thuc tnh ca nhn vin EMPLOYEE v cc thuc tnh ca DEPARTMENT trong anh ta hoc c ta l cc thnh vin ca b phn Research. V Q10A ch nh CROSS PRODUCT ca cc quan h EMPLOYEE v DEPARTMENT.
Q1C: SELECT

* EMPLOYEE Dno=5; * EMPLOYEE, DEPARTMENT Dname=Research AND Dno=Dnumber; * EMPLOYEE, DEPARTMENT

FROM WHERE
Q1D: SELECT

FROM WHERE
Q10A:

SELECT FROM

6.4.4. Cc bng nh cc tp hp trong SQL

Nh chng ta cp phn trc, vi SQL mt bng khng c xem nh mt tp hp hay ng hn n c xem nh mt Mulltiset, cc b trng c th c xut hin kh nhiu trong mt bng v trong kt qu ca mt truy vn. SQL khng t ng loi ra cc b trung trong cc kt qu ca cc cu truy vn bi v l do sau y: . S loi tr cc b trng lp l php ton qu t. Mt phng php thc hin l: trc ht n phn loi b d liu v sau loi tr b trng lp. . Ngi s dng c th cn thy cc b trng trong kt qu truy vn. . Khi mt hm tng hp (xem mc 6.5.7) c p dng cho cc b d liu, hu ht chng ta khng mun loi b cc b trng lp. Mt bng SQL c mt kho cho ta mt tp hp, vi gi tr kho gip phn bit gi tr gia cc b d liu trong quan h. Nu chng ta mun loi tr cc b trng t kt qu ca cu truy vn SQL, chng ta dng t kho DISTINCT trong mnh SELECT, c ngha l nhng b d liu phn bit cn li trong kt qu. Ni chung, cu truy vn vi SELECT DISTINCT loi tr nhn i, nhng ngc li khng c cu truy vn vi SELECT ALL. Ch nh SELECT khng km t kha ALL v cng khng c t kha DISTINCT trong v d trc - l tng ng mnh SELECT ALL. V d, Q11 tm tin lng mi thnh vin, nu c mt vi thnh vin khc nhau c tin lng ging nhau th gi tr tin lng s xut hin nhiu ln trong kt qu ca cu truy vn. Nu chng ta quan tm ch cc gi tr tin lng ring, chng ta cn 93

c mi gi tr ch xut hin mt ln, khng ch ti vic c bao nhiu thnh vin nhn c tin lng , chng ta s dng t kho DISTINCT trong Q11A gii quyt iu ny. (a)
Salary 30000 40000 25000 43000 38000 25000 25000 55000

(b)

Salary 30000 40000 25000 43000 38000 55000

(c) (d)

Fname

Lname

Fname James

Lname Borg

Query 11: Tm tin lng ca mi thnh vin (Q11) v tt c cc gi tr tin lng ring. Q11: Q11A:

SELECT FROM SELECT FROM

ALL Salary EMPLOYEE; DISTINCT Salary EMPLOYEE;

SQL c ngay tc khc mt vi sp nhp ca php ton tp hp trong i s quan h. y cc php tnh tp hp lin kt (UNION), tp hp khc nhau (EXCEPT) v tp hp giao nhau (INTERSECT). Kt qu ca cc quan h t php tnh tp hp ny nhiu tp hp ca cc b d liu, iu cc b nhn i s b loi tr t kt qu. Bi v ch thm cc php tnh ca tp hp ny t cc quan h lin kt-tng thch, chc chn rng chng ta phi to hai quan h trn chng ta dng php ton c cc thuc tnh ging nhau v cc thuc tnh xut hin theo th t trong c hai quan h. V d tip theo minh ho cch s dng UNION.
Query 4: To mt danh sch v s n ca cc thnh vin c last name l Smith tr cc nhn vin hoc ngi qun l ca b phn iu khin n. Q4: (SELECT

DISTINCT Pnumber PROJECT, DEPARTMENT, EMPLOYEE Dnum=Dnumber AND Mgr_ssn=Ssn AND Lname=Smith)

FROM WHERE UNION (SELECT FROM

DISTINCT Pnumber PROJECT, WORK_ON, EMPLOYEE 94

WHERE

Pnumber=Pno AND Essn=Ssn AND Lname=Smith);

u tin cu truy vn SELECT tm cc thnh vin c tn Smith l b phn qun l iu khin n, th hai tm cc thnh vin c tn Smith. Ch rng nu cc thnh vin khc nhau c tn cui cng l Smith th cc tn ca thnh vin, cc tn n ko theo bt k ca chng s tm c. p dng thao tc UNION vi hai SELECT truy vn s cho kt qu mong mun. SQL cng ng vi cc php tnh nhiu tp hp, i theo sau bi t kho ALL (UNION ALL, EXCEPT ALL, INTERSECT ALL). Nhng kt qu ca n l nhiu tp hp (nhn i khng loi tr). V c bn, c phi n l mt bn sao hoc khng khi c xem xt nh mt b d liu khc nhau khi p dng vo thao tc ny.
6.4.5. S thch hp mu chui con v ton t s hc

Trong mc ny chng ta tho lun mt s im c trng ca SQL. im c trng u tin l so snh trn cc thnh phn ca chui k t, dng ton t LIKE so snh. C th s dng chui ph hp vi mu. Cc chui b phn c ch nh s dng hai k t dnh ring: K t % thay th mt s bt k zero hoc nhiu k t; K t gch di _ thay th cho mt k t. V d, tnh ton ca cu truy vn sau y:
Query 12: Tm tt c cc thnh vin c a ch l Houston, Texas. Q12: SELECT

Fname, Lname EMPLOYEE Address LIKE %Houston, TX%;

FROM WHERE

Tm tt cc thnh vin c nm sinh trong thi gian 1950, chng ta c th s dng Query 12A. y, 5 l k t th ba ca chui (theo nh dng ngy), nhng chng ta s dng gi tr _ _ 5 _ _ _ _ _ _ _ vi mi du gch di gi ch cho k t bt k.

95

Kt qu ca cc php ton multiset SQL: (a) Hai bng R(A) v S(A), (b) R(a) hp ton b S(A), (c) R(A) loi tr ton b S(A), (d) R(A) phn ct ton b S(A) (a) R A a1 a2 a2 a3 S A a1 a2 a4 a5 (b) T A a1 a1 a2 a2 a2 a3 a4 (c) T A a1 a2 (d) T A a2 a3

Query 12A: Tm tt c cc thnh vin c nm sinh trong thi gian 1950. Q12: SELECT

Fname, Lname EMPLOYEE Bdate LIKE _ _ 5 _ _ _ _ _ _ _;

FROM WHERE

Nu du gch di hoc du % cn phi l cc k t ng trong chui th k t s i trc bi mt k t escape (thot khi), iu ny c ch nh sau chui so snh bng t kho ESCAPE. V d, AB\_CD\%EF ESCAPE \ tng ng vi chui AB_CD%EF bi v \ c ch nh bng k t escape. K t bt k khng s dng trong chui c th c chn bng k t escape. Ngoi ra, chng ta cn phi ch nh ng quy tc ca du mc lng hoc ghi trong du ( ) bao gm trong c chui k t bi v n c s dng cho bt u v kt thc cc chui. Nu thiu du mc lng () hoc c hai du mc lng lin tip () th n s khng th hin c vic kt thc chui. Mt vn cn quan tm khc l vic dng cc php tnh s hc trong cu truy vn. Cc ton t s hc chun l php cng (+), php tr (-), php nhn (*) v php chia (/) c th ng dng vo cc gi tr s hoc cc thuc tnh vi cc phm vi s. V d, gi s rng chng ta mun xem kt qu ca tt c cc thnh vin c cng vic trong n ProductX l trn 10%; chng ta c th a ra Query 13 xem h c tr tin lng thch hp. V d ny cng trnh by lm th no chng ta c th i tn mt thuc tnh trong kt qu cu truy vn bng cch s dng AS trong mnh SELECT.
Query 13: Trnh by kt qu tin lng ca mi thnh vin c cng vic trong n ProductX Q13: SELECT

Fname, Lname, 6.1*Salary AS Increased_sal 96

FROM WHERE

EMPLOYEE, WORKS_ON, PROJECT Ssn=Essn AND Pno=Pnumber AND Pname=ProductX;

Cho cc kiu d liu chui, ton t ni c th s dng trong cu truy vn ni hai gi tr chui k t. Cho ngy, gi, k hoch lm vic v cc kiu d liu khong thi gian, cc ton t bao gm gia tng (+) hoc gim (-) mt ngy, gi hoc k hoch lm vic trong mt khong thi gian. Trong php cng, gi tr khong thi gian l c kt qu khc nhau gia gi tr hai ngy, gi hoc k hoch lm vic. Tng t cho ton t so snh c th s dng s thun tin bng BETWEEN c minh ho trong Query 14.
Query 14: Tm tt c cc thnh vin thuc b phn 5 c tin lng gia $30,000 v $40,000. Q14: SELECT

* EMPLOYEE (Salary BETWEEN 30000 AND 40000) AND Dno = 5;

FROM WHERE

iu kin (Salary BETWEEN 30000 AND 40000) trong Query 14 l tng ng vi iu kin ((Salary >= 30000) AND (Salary <= 40000)).
6.4.6. Th t ca nhng kt qu truy vn

SQL cho php ngi s dng sp th t cc b d liu trong kt qu ca cu truy vn bi nhng gi tr ca mt hoc nhiu thuc tnh bng cch dng mnh ORDER BY. iu ny c minh ha trong Query 15.
Query 15: Tm lit k cc thnh vin v cc n m h ang lm vic, sp th t b phn, phm vi mi b phn, sp xp a,b,c h, tn. Q15: SELECT

Dname, Lname, Fname, Pname DEPARTMENT, EMPLOYEE, WORKS_ON, PROJECT Dnumber=Dno AND Ssn=Essn AND Pno=Pnumber Dname, Lname

FROM WHERE ORDER BY

Sp xp mc nhin l sp xp cc gi tr tng dn. Chng ta c th ch nh t kho DESC nu chng ta mun c kt qu sp xp cc gi tr gim dn. T kho ASC c th c s dng ch nh dt khot sp xp tng dn. V d, nu chng ta mun sp xp gim dn trn Dname v sp xp gim dn trn Lname, Fname, mnh ORDER ca Q15 c th c vit l: ORDER BY Dname DESC, Lname ASC, Fname ASC

97

6.5. Nhng truy vn SQL phc tp

Trong mc trc, chng ta m t mt vi kiu cn bn ca cu truy vn trong SQL. Bi v mt cch tng qut v c ngha sc mnh ca ngn ng, y c nhiu cc im c trng c thm vo cho php nhng ngi s dng ch nh cc cu truy vn phc tp hn. Chng ta c nhiu tho lun v cc im c trng trong mc ny.
6.5.1. Nhng so snh ko theo NULL v logic ba tr

SQL c cc quy tc khc nhau x l cc gi tr NULL. NULL c s dng tng ng vi gi tr khng th tm thy nhng n thng c mt ca ba s th hin khc nhau khng nhn bit (c tn ti nhng khng nhn bit), gi tr khng th dng c (c tn ti nhng c giu) hoc thuc tnh khng th dng c (khng xc nh c b ny). Tnh ton ca cc v d sau y minh ho cho mi ngha ca NULL. . Gi tr khng nhn bit. . Gi tr khng dng c hoc c du. . Thuc tnh khng th dng c. Khng th xc nh c cc ngha nh d nh, V d, mt NULL cho s in thoi nh ring ca mt ngi c th c ba ngha. Do , SQL khng phn bit gia cc ngha khc nhau ca NULL. Ni chung, mi NULL c xem l khc nhau t mi NULL khc nhau trong c s d liu. Khi mt NULL l phc tp trong php ton iu kin c kt qu xem nh UNKNOWN (nu c th TRUE hoc c th FALSE). Do , SQL dng logic ba tr vi cc gi tr TRUE, FALSE v UNKNOW thay th cho chun logic hai tr vi cc gi tr TRUE hoc FALSE. V th s cn thit ch r tnh cht th hin cc kt qu ca logic ba tr khi hp l s dng cc lin kt AND, OR, v NOT. Cc gi tr ca cc dng v cc ct tng ng vi cc kt qu th hin logic ca logic hai tr (cc iu kin so snh) iu ny s xut hin tiu biu trong mnh WHERE ca cu truy vn SQL. Mi kt qu s c gi tr ca TRUE, FALSE hoc UNKNOW. Kt qu ca vic s dng hai kt ni AND s c trnh by trong bng (a) v bng (b) s trnh by kt qu ca vic s dng kt ni OR. V d, kt qu ca (FALSE AND UNKNOW) l FALSE, ngc li kt qu ca (FALSE AND UNKNOW) l UNKNOWN. Bng 8.1(c) trnh by kt qu php ton NOT. Ch rng BOOLEAN chun ch cho php c cc gi tr TRUE hoc FALSE, y khng c gi tr UNKNOWN. Trong cu truy vn select-project-join, ton b quy tc l s kt hp ca cc b d liu c nh gi l hp l ca vic chn TRUE trong cu truy 98

vn. B d liu c nh gi l hp l l khng chn la FALSE hoc UNKNOWN. SQL cho php cc cu truy vn kim tra c hay khng gi tr thuc tnh l NULL. s dng du = hoc <> so snh gi tr thuc tnh NUL, SQL s dng IS hoc IS NOT.
Query 18: Tm tn ca cc thnh vin l nhng ngi khng phi gim st. Q18: SELECT

Fname, Lname EMPLOYEE Super_ssn IS NULL; Nhng lin kt hp l trong logic ba tr:

FROM WHERE

(a)

AND TRUE FALSE

TRUE
TRUE FALSE

FALSE
FALSE FALSE

UNKNOWN
UNKNOWN FALSE

UNKNOWN (b)
OR TRUE

UNKNOWN TRUE
TRUE

FALSE FALSE
TRUE

UNKNOWN UNKNOWN
TRUE

FALSE UNKNOWN (c)


NOT TRUE FALSE UNKNOWN

TRUE TRUE
FALSE TRUE UNKNOWN

FALSE UNKNOWN

UNKNOWN UNKNOWN

6.5.2. Nhng so snh truy vn lng nhau, nhiu b v nhiu tp hp

Mt vi cu truy vn ph thuc vo cc gi tr hin ti trong c s d liu c by cc truy vn v s dng iu kin so snh. Cc cu truy vn nh vy c th a vo cng thc thun tin bng cch s dng k thut cc cu truy vn vi y select-from-where bn trong mnh WHERE ca cu truy vn khc. Cu truy vn khc l cu truy vn pha bn ngoi. Query 4 a vo cng thc trong Q4 khng c by truy vn nhng n c th pht biu li 99

by cc truy vn trong Q4A. Q4A gii thiu ton t iu kin IN dng so snh gi tr v vi mt tp hp (hoc nhiu tp hp) ca cc gi tr V v nh gi TRUE nu v l mt yu t trong V:
Q4A: SELECT

DISTINCT Pnumber PROJECT Pnumber IN (SELECT FROM WHERE OR Pnumber IN (SELECT FROM WHERE Pno WORK_ON, EMPLOYEE Essn=Ssn AND Lname=Smith); Pnumber PROJECT, DEPARTMENT, EMPLOYEE Dnum=Dnumber AND Mgr_ssn=Ssn AND Lname=Smith)

FROM WHERE

La chn th nht ca by cu truy vn l cc s n ca cc n ngha l c Smith ko theo ging ngi qun l, la chn th hai l cc s n ca cc n c Smith ko theo ging nhn vin. Trong cu truy vn pha ngoi, chng ta s dng logic ni OR tm b PROJECT nu gi tr PNUMBER ca b d liu ny c kt qu ca cu truy vn khc. Nu by cu truy vn tr v mt thuc tnh n v mt b d liu n th kt qu cu truy vn s l gi tr n. Trong trng hp n c th chp nhn c bng cch s dng du = thay cho IN trong ton t so snh. Ni chung, by cu truy vn s tr v mt bng (quan h) vi mt tp hp hoc nhiu tp hp ca cc b d liu. SQL cho php s dng ca cc b ca cc gi tr trong cc iu kin bng cch t phm vi ca n trong du ngoc n. Tho lun iu ny, xem cu truy vn sau y: SELECT FROM WHERE DISTINCT Essn WORK_ON (Pno, Hours) IN ( SELECT FROM WHERE Pno, Hours WORK_ON Ssn=123456789 ); 100

Cu truy vn ny s la chn Ssn ca tt c cc thnh vin c cng vic ging nhau kt hp trn mt n c thnh vin l John Smith (ca Ssn=123456789 ) c tip tc lm vic. Trong v d ny, ton t so snh IN l b con ca cc gi tr trong du ngoc n (Pno, Hours) cho mi b trong WORK_ON vi tp hp ca s kt hp tng thch cc b sinh ra bi by cu truy vn. Thm vo ton t IN, mt s ton t so snh c th s dng so snh mt gi tr v (tiu biu l tn thuc tnh) ti mt tp hp hoc nhiu tp hp V (tiu biu l by cu truy vn). Ton t =ANY (hoc =SOME) tr v TRUE nu gi tr v bng vi mt vi gi tr trong tp hp V v do tng ng vi IN. T kho ANY v SOME c ngha ging nhau. Ton t c th kt hp vi ANY (hoc SOME) bao gm: >, >=, <, <= v <>. T kho ALL cng c th kt hp vi mi ton t ny. V d, iu kin so snh (v > ALL V) tr v TRUE nu gi tr v ln hn tt c cc gi tr trong tp hp (hoc nhiu tp hp) V. V d cu truy vn sau y s tr v tn ca nhn vin no c tin lng ln hn tin lng ca tt c cc nhn vin b phn s 5: SELECT FROM WHERE Lname, Fname EMPLOYEE Salary > ALL ( SELECT FROM WHERE Salary EMPLOYEE Dno=5 );

Ni chung, chng ta c th c nhiu mc ca by cc cu truy vn. Chng ta c th c mt ln lp li phn pha trc vi s nhp nhng gia cc tn thuc tnh nu cc thuc tnh ca tn ti-mt tn ging nhau quan h trong mnh FROM ca by cu truy vn. Minh ho kh nng nhp nhng ca cc tn thuc tnh trong by cc cu truy vn.
Query 16: Tm tn ca mi thnh vin l nhng ngi c ph thuc tn ging nhau v gii tnh ging nhau. Q16: SELECT

E.Fname, E.Lname EMPLOYEE AS E E.Ssn IN ( SELECT FROM WHERE Essn DEPARTMENT E.Fname=Dependent_name AND E.Sex=Sex );

FROM WHERE

101

Trong by Query 16, chng ta phi ch r E.Sex bi v n da vo thuc tnh Sex ca EMPLOYEE t cu truy vn pha ngoi v DEPARTMENT cng c thuc tnh Sex. Ni chung cch thch hp to b cc bin (b danh) cho tt c cc bng c lin quan trong cu truy vn SQL l trnh kh nng b li v s nhp nhng.
6.5.3. Nhng truy vn lng nhau tng quan

Khi no mt iu kin trong mnh WHERE ca by cu truy vn c lin quan n mt vi thuc tnh ca mt quan h r rng trong cu truy vn pha ngoi, hai cu truy vn ny ni l tng quan vi nhau. Ni chung, mt cu truy vn c th vit vi by select-from-where v s dng ton t so snh = hoc IN th lun lun c th biu din mt cu truy vn n. V d, Q16 c th vit nh trong Q16A:
Q16A:

SELECT FROM WHERE

E.Fname, E.Lname EMPLOYEE AS E, DEPARTMENT AS D E.Ssn=D.Essn AND E.Sex=D.Sex AND E.Fname=D.Department_name;

u tin SQL thc hin y trn SYSTEM R cng c ton t so snh CONTAINS vi vic so snh hai tp hp hoc nhiu tp hp. Query 13 minh ho s dng ca ton t CONTAINS.
Query 3: Tm tn ca mi thnh vin l nhng ngi c cng vic trong tt c iu khin n bi b phn s 5. Q3: SELECT

E.Fname, E.Lname EMPLOYEE (( SELECT FROM WHERE CONTAINS SELECT FROM WHERE Pnumber PROJECT Dnum=5 ) ); Pno WORKS_ON Ssn=Essn)

FROM WHERE

Trong Q3, by th hai ca cu truy vn tm cc s n ca tt c cc iu khin n bi b phn s 5. Chng ta c th s dng k thut khc bng 102

hm EXISTS ch nh kiu d liu ny ca cc cu truy vn, nh m t trong mc 8.5.4 (xem mc 6.3.4 v mc 6.6.7 chng 6).
6.5.4. Hm EXISTS v UNIQUE trong SQL

Hm EXISTS trong SQL s dng kim tra c hay khng kt qu ca mt by cu truy vn c tng quan vi nhau l rng (khng cha cc b) hoc khng. Kt qu ca EXISTS l Boolean c gi tr TRUE hoc FALSE. Chng ta minh ho cch s dng ca EXISTS v NOT EXISTS vi mt vi v d. u tin, chng ta a vo cng thc Query 16 bng mt trong hai dng s dng EXISTS. iu ny c trnh by nh Q16B:
Q16B:SELECT

E.Fname, E.Lname EMPLOYEE AS E EXISTS ( SELECT FROM WHERE * DEPARTMENT E.Ssn=Essn AND E.Sex=Sex

FROM WHERE

AND E.Fname=Department_name); EXISTS v NOT EXISTS thng c s dng trong s lin kt c by cu truy vn tng quan vi nhau. Trong Q16B, by cu truy vn c lin quan n cc thuc tnh Ssn, Fname v Sex ca quan h EMPLOYEE t cu truy vn pha bn ngoi. Chng ta c th hiu v Q16B nh sau: mi b EMPLOYEE, nh gi by cu truy vn bng cch tm tt c cc b DEPENMENT vi Esn, Sex v Depenment_name ging nh b EMPLOYEE; nu t nht mt b EXISTS trong kt qu ca by cu truy vn th chn b EMPLOYEE. Ni chung, EXISTS(Q) tr v TRUE nu c t nht mt b c kt qu ca by cu truy vn Q v trong trng hp ngc li n tr v FALSE. Mt khc, NOT EXISTS(Q) tr v TRUE nu khng c cc b trong kt qu ca by cu truy vn Q v trng hp hp ngc li n tr v FALSE. Tip theo, chng ta minh ho cch s dng NOT EXISTS.
Query 6: Tm cc tn ca cc thnh vin l nhng ngi khng c ph thuc. Q6: SELECT

Fname, Lname EMPLOYEE EXISTS ( SELECT FROM WHERE * DEPARTMENT Ssn=Essn ); 103

FROM WHERE

Trong Q6, dng by cu truy vn c tng quan vi nhau tm tt c cc b DEPENMENT c lin quan ring vi b EMPLOYEE. Nu khng tn ti th b EMPLOYEE s c chn.
Query 7: Lit k cc tn ca cc nh qun l l nhng ngi c t nht mt ph thuc. Q7: SELECT

Fname, Lname EMPLOYEE EXISTS ( SELECT FROM WHERE AND EXISTS ( SELECT FROM WHERE * DEPARTMENT Ssn=Mgr_ssn ); * DEPARTMENT Ssn=Essn );

FROM WHERE

C th c tnh trng s dng EXISTS hoc NOT EXISTS trong cc h thng SQL, y c hai la chn. u tin s dng ng-hiu nguyn l ca s bin i (S1 CONTAINS S2) tng ng vi (S1 EXCEPT S2) l rng. La chn ny c trnh by nh Q3A.
Q3A: SELECT

Lname, Fname EMPLOYEE NOT EXISTS ( ( SELECT FROM WHERE Pnumber PROJECT Dnum=5); Pno WORKS_ON Ssn=Essn) ); FROM WHERE

FROM WHERE

EXCEPT ( SELECT

La chn th hai c trnh by nh Q13B:


Q3B:

SELECT FROM WHERE

Lname, Fname EMPLOYEE NOT EXISTS ( ( SELECT * 104

FROM

WORKS_ON B IN ( FROM ( SELECT

WHERE B.Pno Pnumber PROJECT

WHERE Dnum=5); AND NOT EXISTS C WHERE AND ); C hm SQL khc, UNIQUE(Q) tr v TRUE nu khng c cc b trng nhau trong kt qu ca cu truy vn Q; ngc li n tr v FALSE. iu ny c th s dng kim tra c hay khng kt qu ca by cu truy vn l mt tp hp hoc nhiu tp hp.
6.5.5. Nhng tp hp hin v i tn cc thuc tnh trong SQL

( SELECT FROM

* WORKS_ON C.Essn=Ssn C.Pno=B.Pno)

Chng ta thy nhiu cu truy vn vi by cu truy vn trong mnh WHERE. N cng c th thc hin c bng cch s dng mt tp hp nhng gi tr r rng trong mnh WHERE hn mt cu truy vn c lng vo. Nh mt tp hp c a vo trong du ngoc n trong SQL.
Query 17: Q17: SELECT

DISTINCT Essn WORKS_ON Pno IN (1,2,3);

FROM WHERE

Trong SQL, n c th thc hin c i tn thuc tnh bt k xut hin trong kt qu ca cu truy vn bng cch thm vo sau iu kin AS bi ngh tn mi. V d, Q8A cho thy lm cu truy vn Q8 c th c chuyn i khng ng k tm h ca mi thnh vin v anh ta hoc c y l gim st, i tn trong kt qu tn thuc tnh nh Employee_name v Supervisor_name. Cc tn mi s xut hin bng tiu ct trong kt qu cu truy vn.
Q8A: SELECT E.Lname Supervisor_name

AS

Employee_name,

S.Lname

AS

105

FROM WHERE

EMPLOYEE AS E, EMPLOYEE AS S E.Super_ssn=S.Ssn;

6.5.6. Kt ni cc quan h trong SQL v cc kt ni ngoi T tng c bn ca vic kt ni cc quan h l thc hin vic s dng cu lnh SQL kt ni cc bng trong mnh FROM ca cu truy vn. Cch xy dng ny l d lnh hi hn cch la chn trong mt tp hp cc bng qua mnh WHERE. Chng hn nh trong Q1, cn truy xut n tn v a ch ca mi nhn vin lm vic cho b phn research. Vic ny c th thc hin n gin bng vic kt gia 2 bng Employee v Department, t c th chn cc b v cc thuc tnh mong mun. Cu truy vn Q1 c th c vit li nh sau: Q1A: SELECT

Fname, Lname, Address (EMPLOYEE JOIN, DEPARTMENT ON Dno=Dnumber) Dname=Research;

FROM WHERE

Mnh FROM trong query Q1A cha mt rng buc n gia 2 table. Cc thuc tnh nh thuc vo mt bng, trc ht l tt c cc thuc tnh ca table Employee, tip theo l tt c cc thuc tnh ca table Department. C th thc hin nhiu kiu kt ni khc nhau nh: kt ni t nhin (natural join) , kt ni ngoi (outer join). Kt ni t nhin gia hai quan h R v S l khng c iu kin c ch nh. iu kin ngm hiu y chnh l mi cp thuc tnh c tn ging nhau gia hai quan h R v S. Mi cp thuc tnh trong kt ni cho mt v ch mt quan h kt qu. Nu tn ca cc thuc tnh trong kt ni l khng ging nhau trong cc quan h c s ta c th thc hin vic i tn cc thuc tnh cn thit thng qua t kha AS trong mnh FROM. Cu truy vn Q1B sau y s minh ha cch thc hin kt ni ny.
Q1B: SELECT

Fname, Lname, Address (EMPLOYEE NATURAL JOIN (DEPARTMENT AS DEFT (Dname, Dno, Mssn,Msdate) Dname=Research;

FROM WHERE

Vi v d trn, quan h DEPARTMENT c i tn thnh DEPT cng vi vic i tn cc thuc tnh ca n thnh: Dname, Dno (v ta cn kt ni thuc tnh Dname ca DEPARTMENT vi Dnumber ca EMPLOYEE), Mssn v Msdate. Khi , kt ni t nhin s thc hin kt ni gia 2 thuc tnh ging nhau l: EMPLOYEE.Dno v DEPT.Dno. Trong SQL, kt ni t nhin l kt ni mc nh, mt b s c a vo quan h kt qu nu n tn ti trong mt quan h khc qua php kt 106

ni v cc b khng tha s khng c a vo bng kt qu kt ni. Tuy nhin, i khi ta cng cn gi li nhng thng tin ny bng cch cho php nhng dng khng tho mn iu kin ni c mt trong kt qu ca php ni. lm iu ny, ta c th s dng php ni ngoi (OUTER JOIN). Php ni ngoi cng c ch nh ngay trong mnh FROM theo c php:
FROM <TableName1> LEFT|RIGHT|FULL [OUTER] JOIN <TableName2> ON <Condition>

- Php ni ngoi tri (LEFT OUTER JOIN) Php ni ngoi tri hin th trong kt qu truy vn nhng b tha iu kin kt ni v b sung nhng b khng tha iu kin kt ni ca bng bn tri (cc thuc tnh tng ng cn li ca cc b khng tha ca bng bn phi mang gi tr Null). - Php ni ngoi phi (RIGHT OUTER JOIN) Php ni ngoi phi hin th trong kt qu truy vn nhng b tha iu kin kt ni v b sung nhng b khng tha iu kin kt ni ca bng bn phi (cc thuc tnh cn li ca cc b khng tha ca bng bn tri mang gi tr Null). - Php ni ngoi y (FULL OUTER JOIN) Php ni y , hin th trong kt qu truy vn c nhng b d liu khng tha iu kin kt ni ca c hai bng tham gia kt ni. Cu truy vn sau y cho php in ra cc nhn vin lm cng tc qun l (Supper_ssn= Null) trong bng EMPLOYEE:
Q8B: SELECT

E.Lname AS Employee_name, S.Lname AS Supervisor_name (EMPLOYEE AS E LEFT OUTER JOIN, EMPLOYEE ON E.Super_ssn=S.Ssn);

FROM AS S

Mt kt ni cc bng c th tip tc kt ni n mt bng khc. Cu truy vn Q2 c th c vit li thnh Q2A theo cch ny.
Q2A: SELECT

Pnumber, Dnum, Lname, Adress, Bdate ((PROJECT JOIN DEPARTMENT ON Dnum=Dnumber) JOIN EMPLOYEE ON Mgr_ssn=Ssn) Plocation=Stafford;

FROM WHERE

Php kt ni ngoi cn mt s cch th hin c php khc thng qua cc ton t snh nh: +=, =+, +=+ l tng ng vi cc php ni tri, phi v y ca php kt ni ngoi xt. Truy vn Q8C sau y minh ha mt dng c php theo kiu ny. 107

Q8C: SELECT

E.Lname, S.Lname EMPLOYEE E, EMPLOYEE S E.Super_ssn=S.Ssn;

FROM WHERE

6.5.7. Mt s hm gp trong SQL

Vn kt nhm v tng hp thng tin l kh cn thit trong cc ng dng c s d liu. SQL rt ch trng n cc chc nng ny. SQL c xy dng mt s hm gp c bn l: COUNT, SUM, MAX, MIN v AVG. Chng ta minh ho cch s dng cc hm ny vi v d cu truy vn:
Query 19: Tm tng tin lng ca tt c cc thnh vin, tin lng cao nht, tin lng thp nht v tin lng trung bnh. Q19: SELECT (Salary)

SUM (Salary), MAX (Salary), MIN (Salary), AVG EMPLOYEE;

FROM

Nu chng ta mun c c nhng gi tr hm v cc thnh vin ca b phn c th chn b phn Reseach, chng ta vit Query 20:
Query 20: Tm tng tin lng ca tt c cc thnh vin thuc b phn Reseach, cng vi tin lng cao nht, tin lng thp nht v tin lng trung bnh trong b phn ny. Q20: SELECT (Salary)

SUM (Salary), MAX (Salary), MIN (Salary), AVG (EMPLOYEE JOIN, DEPARTMENT ON Dno=Dnumber) Dname=Research;

FROM WHERE

Query 21 v 22: Tm tng s thnh vin trong cng ty (Q21) v s thnh vin trong b phn Research (Q22). Q21: SELECT

COUNT (*) EMPLOYEE; COUNT (*) EMPLOYEE, DEPARTMENT; Dno=Dnumber AND Dname=Research;

FROM
Q22: SELECT

FROM WHERE

n y du (*) l cc dng (cc b), nh th COUNT (*) tr v s dng trong kt qu ca cu truy vn.
Query 23: m s gi tr tin lng phn bit trong c s d liu. Q23: SELECT

COUNT (DISTINCT Salary) 108

FROM

EMPLOYEE;

Nu chng ta vit COUNT(Salary) thay v vit COUNT (DISTINCT Salary) trong Q23 th cc gi tr trng nhau s khng loi tr. V d, tm tn ca tt c cc thnh vin l nhng ngi c hai hoc nhiu b phn Query 5), chng ta c th vit sau y:
Q5: SELECT

Lname, Fname EMPLOYEE ( SELECT COUNT (*) FROM WHERE DEPARTMENT Ssn=Essn ) >= 2;

FROM WHERE

6.5.8. Cc mnh GROUP BY v HAVING

Trong SQL, mnh GROUP BY s dng trong cu lnh SELECT nhm phn hoch cc dng d liu trong bng thnh cc nhm d liu, v trn mi nhm d liu thc hin tnh ton cc gi tr thng k nh tnh tng, tnh gi tr trung bnh,... Cc hm gp c s dng tnh gi tr thng k cho ton bng hoc trn mi nhm d liu. Chng c th c s dng nh l cc ct trong danh sch chn ca cu lnh SELECT hoc xut hin trong mnh HAVING, nhng khng c php xut hin trong mnh WHERE . Di y l mt s v d minh ho mnh GROUP BY v cch s dng mt s hm gp thng k d liu.
Query 24: Cho mi b phn, tm s b phn, s thnh vin trong b phn v trung bnh tin lng ca h. Q24: SELECT

Dno, COUNT (*), AVG (Salary) EMPLOYEE; Dno;

FROM GROUP BY

Trong Q24, cc b EMPLOYEE l s phn chia vo cc nhm - mi nhm c gi tr trng nhau cho thuc tnh nhm Dno. Hm COUNT v AVG p dng cho cc b ca mi nhm. V d: Nu bng EMPLOYEE c vi b NULL thuc nhm thuc tnh Dno th s cvic tch nhm cc b ny trong kt qu ca Q24.
Query 25: Trong mi n, tm s n, tn n v s thnh vin l nhng ngi c cng vic trong d n. Q25: SELECT

Pnumber, Pname, COUNT (*) 109

FROM WHERE GROUP BY

PROJECT; WORKS_ON Pnumber=Pno Pnumber, Pname;

V d: Gi s chng ta mun to Query 25 sao cho cc n c nhiu hn hai thnh vin xut hin trong kt qu. SQL cung cp mnh HAVING, y l mc ch lm xut hin s kt hp vi mnh GROUP BY. HAVING a ra iu kin trn nhm ca vic kt hp cc b vi mi gi tr ca cc thuc tnh nhm. Ch c cc nhm tho mn iu kin tm trong kt qu ca cu truy vn, iu ny c minh ho bi Query 26.
Query 26: Trong mi n c nhiu hn hai thnh vin lm vic, tm s n, tn n v s thnh vin l nhng ngi c lm vic trong n. Q26: SELECT

Pnumber, Pname, COUNT (*) PROJECT; WORKS_ON Pnumber=Pno Pnumber, Pname; COUNT (*) > 2

FROM WHERE GROUP BY HAVING

Query 27: Trong mi n, tm s n, tn n v s thnh vin t b phn 5 l nhng ngi c cng vic trong n. Q27: SELECT

Pnumber, Pname, COUNT (*) PROJECT; WORKS_ON, EMPLOYEE Pnumber=Pno AND Ssn=Essn AND Dno=5 Pnumber, Pname;

FROM WHERE GROUP BY

110

Kt qu ca GROUP BY v HAVING: (a) Q24, (b) Q26. (a)


Fname John Franklin Ramesh Joyce Alicia Jennier Ahmad James Minit B T K A J S V E Lname Smith Wong Narayan English Zelaya Wallace Jabbar Bong Ssn 123456789 333445555 666884444 453453453 999887777 987654321 987987987 888665555 ... ... Salary 30000 40000 38000 25000 25000 43000 25000 55000 Super_ssn 333445555 888665555 333445555 333445555 987654321 888665555 987654321 NULL Dno 5 5 5 5 4 4 4 1 Hours Essn Dno 5 4 1 Count (*) 4 3 1 AVG (Salary) 33250 31000 55000

...

(b)

Pname

Pnum ber
ProductX ProductX ProductY ProductY ProductY ProductZ ProductZ Computerization Computerization Computerization Reorganization Reorganization i i 1 1 2 2 2 3 3 10 10 10 20 20 20

Pno
1 1 2 2 2 3 3 10 10 10 20 20 20 32.5 20.0 7.5 20.0 10.0 40.0 10.0 10.0 10.0 35.0 10.0 15.0

...

123456789 453453453 123456789 453453453 333445555 666884444 333445555 333445555 999887777 987987987 333445555 987654321 88866

Cc nhm ny khng c la chn bi iu kin HAVING

Sau khi p dng mnh WHERE nhng trc khi p dng HAVING.
Pname ... Hours Essn

Pnum ber
ProductY ProductY ProductY Computerization Computerization Computerization Reorganization Reorganization Reorganization 2 2 2 10 10 10 20 20 20 ...

Pno
2 2 2 10 10 10 20 20 20 7.5 20.0 10.0 10.0 10.0 35.0 10.0 15.0 NULL

123456789 453453453 333445555 333445555 999887777 987987987 333445555 987654321 888665555

Pname ProductY Computerization Reorganization Newbenefits

Count (*) 3 3 3 3

Gi s chng ta vit cu truy vn khng ng sau y: SELECT FROM WHERE GROUP BY HAVING Dname, COUNT (*) DEPARTMENT, EMPLOYEE Dnumber=Dno AND Salary>40000 Dname; COUNT (*) > 5;

iu ny khng ng bi v n s chn ch cc b phn c hn 5 thnh vin l mi ngi c lnh hn $40,000. Mt cch khc viat cu truy vn 111

ny ng cch thc bng cch s dng by cu truy vn, nh trnh by trong Query 28.
Query 28: Trong mi b phn c hn 5 thnh vin, tm s b phn v s thnh vin trong b phn l nhng ngi lm hn $40,000. Q28: SELECT

Dname, COUNT (*) DEPARTMENT, EMPLOYEE Dnumber=Dno AND Salary>40000 AND Dno IN ( SELECT FROM GROUP BY HAVING Dno EMPLOYEE Dno COUNT (*) > 5)

FROM WHERE

GROUP BY

Dnumber;

6.5.9. Tho lun v kt lun ca truy vn SQL

Xy dng cu truy vn trong SQL gm c su mnh nhng bt buc phi c hai mnh SELECT v FROM. Cc mnh c ch nh theo th t sau y nhng vi cc mnh nm trong du ngoc [...] l khng bt buc. SELECT <Thuc tnh v danh sch chn> FROM <Danh sch bng> [ WHERE <iu kin> ] [ GROUP BY < Thuc tnh nhm> ] [ HAVING <iu kin nhm> ] [ ORDER BY <Danh sch thuc tnh> ];
6.6. Cc lnh INSERT, DELETE v UPDATE Trong SQL, c ba lnh c th s dng sa i c s d liu: INSERT, DELETE v UPDATE. Chng ta ln lt tm hiu 3 lnh ny. 6.6.1. Lnh chn (INSERT) Dng n gin nht ca n, chn(INSERT) c s dng thm mt b d liu n vo mt quan h. Chng ta phi ch r tn quan h v mt danh sch nhng gi tr cho b d liu. Nhng gi tr cn phi c lit k trong cng th t, trong nhng thuc tnh tng ng c ch r bn trong lnh to bng. Cho v d: thm mt b d liu mi vo quan h EMPLOYEE, chng ta c th s dng U1: U1: INSERT TABLE EMPLOYEE
VALUES (Richard, K, Marini, 653298653, 1962-12-30,

112

98 Oak Forest, Katy, TX, M, 37000, 653298653,4);

Mt dng th hai ca lnh INSERT, cho php ngi dng ch r tn thuc tnh tng ng trong lnh, nu mt quan h c nhiu thuc tnh nhng ch mt t thuc tnh c gn nhng gi tr trong b d liu mi. Khi , cc ct khng c nhp d liu s nhn gi tr mc nh (nu c) hoc nhn gi tr NULL (nu ct cho php chp nhn gi tr NULL). Nu mt ct khng c gi tr mc nh v khng chp nhn gi tr NULL m khng uc nhp d liu, cu lnh s b li. Nhng thuc tnh c php nhn gi tr NULL hoc gi tr DEFAULT c th c li ngoi. Cho v d, vo mt b d liu mi cho EMPLOYEE m chng ta bit duy nht Fname, Lname, Dno v thuc tnh Ssn, chng ta c th s dng U1A: U1A: INSERT INTO EMPLOYEE(Fname, Lname, Dno,Ssn) VALUES (Richard, Marini, 4,653298653); Nhng thuc tnh khng c xc nh trong U1A l tp hp DEFAULT hoc NULL, v nhng ga tr c lit k theo th t nhng thuc tnh c lit k trong lnh Insert. C th chn vo trong mt quan h nhiu b d liu cch nhau bi du phy trong lnh chn. Nhng gi tr thuc tnh chn vo cho mi b d liu c bao trong du ngoc. Mt DBMS m hon ton thc hin SQL-99 cn phi h tr v bt buc tt c cc rng buc ton vn m c th ch r trong DDL. Tuy nhin, DBMS no khng hp nht tt c cc s rng buc bo tr hiu qu DBMS v s phc tp ca tt c cc s rng buc. Nu mt h thng khng h tr s rng buc, s ton vn no th ngi dng hoc ngi lp trnh phi t a vo rng buc. Cho v d, nu chng ta pht hnh lnh trong U2 trn c s d liu mt DBMS khng h tr ton vn s khng lng vo mc d b d liu ca mt b phn tn ti trong c s d liu vi Dnumber = 2. l trch nhim ca ngi dng kim tra bt k s rng buc no vi phm khi c s kim tra c thc hin bi DBMS. Tuy nhin, DBMS phi thc hin kim tra bt buc tt c s rng buc ton vn m SQL h tr. Mt DBMS bt buc NOT NULL s khng chp nhn mt lnh chn v cc thuc tnh c khai bo NOT NULL khng c nhn gi tr. V d cu truy vn U2A sau l khng c chp nhn v khng c gi tr Ssn no c cung cp. U2: INSERT INTO EMPLOYEE(Fname, Lname, Dno,Ssn) VALUES (Robert, Hatcher, 980760540,2); (U2 c loi b nu s kim tra ton vn do DBMS cung cp)
U2A: INSERT INTO EMPLOYEE(Fname, Lname, Dno) VALUES (Robert, Hatcher, 5); (U2A c loi b nu s kim tra NOT NULL do DBMS cung cp)

113

Mt bin i khc ca lnh chn l chn mt s b vo mt quan h cng vi vic to ra mt quan h mi trong kt qu truy vn. V d nh to mt table c tn, m s ca nhn vin v tng lng ca mi b phn chng ta c th thc hin nh cc truy vn U3A v U3B nh sau:
U3A: CREATE TABLE ( Dept_name No_of_emps Total_sal DEPTS_INFO VARCHAR(15), INTEGER, INTEGER);

U3B: INSERT INTO DEPTS_INFO ( Dept_ name, No_of_emps, Total_sal) SELECT Dname, COUNT(*), SUM(Salary) FROM (DEPARTMENT JOIN EMPLOYEE ON Dnumber=Dno) GROUP BY Dname;

Mt bng DEPTS_INFO c to ra bi U3A v c ti thng tin tm lc t c s d liu bi cu hi bn trong U3B. Chng ta c th hi DEPTS_INFO nh mi quan h khc; khi chng ta khng c nhu cu, chng ta loi b n bi vic s dng bng DEPTS ra lnh. Ch rng bng DEPTS_INFO c th khng hp thi; nu chng ta cp nht Ban hoc Ngi lm thu l nhng quan h sau pht biu U3B th thng tin trong DEPTS_INFO tr thnh li thi. Chng ta phi to ra theo nh (Mc 6.8) c mt bng hp thi.
6.6.2. Lnh Xa (DELETE) C php chung thc hin lnh xa:
DELETE FROM <TableName>

[WHERE <Condition>] Lnh xa nhng b d liu t mt quan h. V c php cu lnh xa c s dng tng t nh cu lnh truy vn, la chn nhng b d liu cn xa. Tuy nhin, lnh xa c th lan truyn ti nhng b d liu trong nhng quan h khc c lin quan c xc nh t nhng s rng buc ton vn ( mc 6.2.2). Mnh cn ch r tt c cc b d liu trong quan h cn xa. V d: U4A thc hin xa cc nhn vin c Lname = Brown t bng EMPLOYEE; U4B xa cc nhn vin c Ssn= 123456789; U4C thc hin xa cc nhn vin c Dname=Research , thc hin yu cu ny ta cn tham chiu n bng DEPARTMENT xc nh gi tr Dnumber tng ng v t xc nh gi tr Dno trong bng EMPLOYEE, gi tr Dno chnh l iu kin cn xa; U4A: DELETE FROM EMPLOYEE WHERE Lname = Brown; U4B: DELETE FROM EMPLOYEE WHERE Ssn = 123456789; U4C: DELETE FROM EMPLOYEE

114

Dno IN (SELECT Dnumber FROM DEPARTMENT WHERE Dname = Research); U4D: DELETE FROM EMPLOYEE;
6.6.3. Lnh cp nht (UPDATE) Lnh cp nht c s dng sa i nhng gi tr thuc tnh ca mt hoc nhiu b d liu. Nh trong lnh xa, mt mnh cp nht ra lnh la chn nhng b d liu s c sa i t mt quan h n. Tuy nhin, vic cp nht mt gi tr kha s cp c th sinh ra nhng gi tr kha ngoi ca nhng b d liu trong nhng quan h khc, nu c lin quan th hot ng c ch r trong nhng rng buc ton vn ca DDL (mc 6.2.2). Mt mnh tp hp b sung trong lnh cp nht ch r nhng thuc tnh s c sa i v nhng gi tr mi ca n. Cho v d, thay i v tr s ban ca d n ghi s 10 ti Bellaire v 5 tng ng, chng ta s dng U5: U5: UPDATE PROJECT SET Plocation = Bellaire, Dnum = 5 WHERE Pnumber = 10; Vi b d liu c th c sa i vi mt lnh cp nht n. V d, cho tt c nhng ngi lm thu trong ban Nghin cu c nng lng 11% ( U6). Trong yu cu ny, khi sa i tin lng th nhng gi tr ph thuc vo tin lng nguyn bng c nh gi trong mi b d liu, nh vy c 2 tham chiu n thuc tnh tin lng. Trong mnh tp hp, s tham chiu ti thuc tnh tin lng bn phi l gi tr tin lng c trc ci bin, v bn tri tham chiu ti gi tr tin lng mi sau khi ci bin:
U6: UPDATE SET WHERE EMPLOYEE Salary = Salary * 6.1 Dno IN (SELECT Dnumber FROM DEPARMENT WHERE Dname = Research);

WHERE

C th ch r NULL hoc DEFAULT cc gi tr thuc tnh mi. Ch rng mi lnh cp nht ch tham chiu ti quan h n. Mun sa i nhiu quan h, chng ta phi dng vi lnh cp nht.
6.7. Ch nh cc rng buc ASSERTION v TRIGGERS TRIGGER: Mt trigger l rng buc trong c cha mt tp cc cu lnh SQL v tp cc cu lnh ny s c thc thi khi trigger c gi. im khc bit gia th tc lu tr v trigger l: cc th tc lu tr c thc thi khi ngi s dng c li gi n chng cn cc trigger li c t ng thc hin khi xy ra nhng giao tc lm thay i d liu trong cc bng.

115

Mi mt trigger c to ra v gn lin vi mt bng no trong c s d liu. Khi d liu trong bng b thay i (tc l khi bng chu tc ng ca cc cu lnh INSERT, UPDATE hay DELETE) th trigger s c t ng kch hot. Cu lnh CREATE TRIGGER c s dng inh ngha trigger v c c php nh sau:
CREATE TRIGGER tn_trigger ON tn_bng FOR {[INSERT][,][UPDATE][,][DELETE]} AS [IF UPDATE(tn_ct) [AND UPDATE(tn_ct)|OR UPDATE(tn_ct)] ...] cc_cu_lnh_ca_trigger

V d:
CREATE TRIGGER EmployeeDelete ON Employee FOR DELETE AS DELETE FROM Works_On WHERE works.Essn=Deleted.ssn

Vi Trigger va to th sau khi ta thc hin cu lnh: DELETE FROM Employee Where ssn=123456789 Cc mu tin trong bng Works_on c Essn=123456789 s b xa. Trong cu lnh CREATE TRIGGER v d trn, sau mnh ON l tn ca bng m trigger cn to s tc ng n. Mnh tip theo ch nh cu lnh s kch hot trigger (FOR DELETE). Ngoi DELETE, ta cn c th ch nh UPDATE hoc INSERT cho mnh ny, hoc c th kt hp chng li vi nhau. Phn thn ca trigger nm sau t kho AS bao gm cc cu lnh m trigger s thc thi khi c kch hot. Chun SQL nh ngha hai bng logic INSERTED v DELETED s dng trong cc trigger. Cu trc ca hai bng ny tng t nh cu trc ca bng m trigger tc ng. D liu trong hai bng ny tu thuc vo cu lnh tc ng ln bng lm kch hot trigger; c th trong cc trng hp sau: - Khi cu lnh DELETE c thc thi trn bng, cc dng d liu b xo s c sao chp vo trong bng DELETED. Bng INSERTED trong trng hp ny khng c d liu. 116

- D liu trong bng INSERTED s l dng d liu c b sung vo bng gy nn s kch hot i vi trigger bng cu lnh INSERT. Bng DELETED trong trng hp ny khng c d liu. - Khi cu lnh UPDATE c thc thi trn bng, cc dng d liu c chu s tc ng ca cu lnh s c sao chp vo bng DELETED, cn trong bng INSERTED s l cc dng sau khi c cp nht. ASSERTION: Trong SQL, ngi dng c th ch nh nhng s rng buc chung (khng ri vo cc rng buc xt) l rng buc ASSERTION. to rng buc loi ny ta dng lnh CREATE ASSERTION. Cho v d, ch r s rng buc m tin lng ca mt nhn vin khng c ln hn tin lng ca gim c ca anh ta, chng ta c th thc hin sau:
CREATE ASSERTION SALARY_CONSTRAINT CHECK (NOT EXISTS ( SELECT * FROM EMPLOYEE E, EMPLOYEE M, DEPARTMENT D WHERE E.Salary > M.Salary AND E.Dno = D.Dnumber AND D.Mgr_ssn = M.Ssn ));

6.8. Khung nhn trong SQL Phn ny chng ta tp trung gii thiu v khung nhn trong SQL, cch xc nh mt khung nhn cng nh cch cp nht v thc hin mt khung nhn trong mt h qun tr CSDL. 6.8.1. Khi nim v khung nhn trong SQL Mt khung nhn trong SQL l mt table n l nhn c t cc table khc nhau hoc t cc khung nhn khc nhau trong mt DBMS thng qua mt cu truy vn. Mt khung nhn khng c xem nh l mt cu trc lu tr d liu tn ti trong CSDL, v v vy khung nhn c th xem nh mt table o c kt xut t cc b thuc cc table trong mt CSDL. Chng ta c th xem khung nhn nh mt cch thun li quan st cc bng khi cc bng c s thay i thng xuyn. Chng hn nh, vi v d v lc c s d liu COMPANY c xt cc mc trc, chng ta c th thng xuyn ly ra cc thng tin nh tn nhn vin v tn n m nhn vin ang thc hin vo bt k thi im no v c lu tr di dng mt view. 6.8.2. To View to view ta s dng cu lnh CREATE VIEW, cc thnh phn km theo l tn view, danh sch cc thuc tnh (fiedList) v cu lnh truy vn xc nh ni dung cho view. C php chung to view: CREATE VIEW viewName[(fiedList)]

117

AS SELECT ... V d: -V1: CREATE VIEW WORK_ON1 AS SELECT Fname, Lname, Pname, Hours FROM EMPLOYEE, PROJECT, WORKS_ON WHERE Ssn = Essn AND Pno=Pnumber; -V2: CREATE VIEW DEPT_INFO(Dept_name, No_of_emps, Total_sal) AS SELECT Dname, COUNT(*), SUM (salary) FROM EMPLOYEE, DEPARTMENT WHERE Dnumber= Dno GROUP BY Dname; Vi V1 chng ta khng ch nh cc thuc tnh cho view, trong trng hp ny WORKS_ON1 tn cc thuc tnh ca view nhn c t cc thuc tnhca cc quan h EMPLOYEE, PROJECT v WORKS_ON. Vi view V2, c xc nh c th tn cc thuc tnh mi cho view DEPT_INFO, cc thuc tnh ny c tng ng 1-1 vi cc thuc tnh t kt qu ca mnh truy vn SELECT. Ngoi ra chng ta c th thc hin truy vn trn mt view, trng hp ny chng ta thc hin nh truy vn trn table. V d sau cho php truy xut n cc nhn vin thuc n ProjectX da trn view WORKS_ON1 QV1: SELECT Fname, Lname FROM WORKS_ON1 WHERE Pname= ProjectX Nh vy, chng ta cng c th thc hin cc truy vn trn nhiu table thng qua view vi iu kin c s kt ni gia cc table. iu thun li chnh l thao tc trn view l n gin hn, ngoi ra view cng thng c s dng trong k thut bo mt v xc thc ngi dng. Mt s lu khi to view: - Tn khung nhn v tn cc thuc tnh ca khung nhn c t tng t nh bng, ngha l cng phi tun theo qui tc nh danh. - Khng th qui nh rng buc v to ch mc cho khung nhn - Phi t tn cho cc ct trong view trong cc trng hp sau: + Trong kt qu ca cu lnh SELECT c t nht mt ct c sinh ra bi mt biu thc (tc l khng phi l mt tn ct trong bng c s) v ct khng c t tiu . + Tn ti hai ct trong kt qu ca cu lnh SELECT c cng tiu ct. Khi khng cn thit s dng mt view chng ta c th xa view bng lnh Drop view: V d: Xa view WORKS_ON1 DROP VIEW WORKS_ON1 118

6.8.3. Thc thi v cp nht View i vi mt s khung nhn, ta c th tin hnh thc hin cc thao tc cp nhp, b sung v xo d liu. Thc cht, nhng thao tc ny s c chuyn thnh nhng thao tc tng t trn cc bng c s v c tc ng n nhng bng c s. Chng ta c th thc hin thao tc b sung, cp nht v xo, mt khung nhn vi iu kin cu lnh SELECT trong nh ngha khung nhn khng c s dng t kho DISTINCT, TOP, GROUP BY v UNION; trong danh sch chn khng c cha cc biu thc tnh ton, cc hm gp. Ngoi ra cc thao tc thay i n d liu thng qua khung nhn cn phi m bo tho mn cc rng buc trn cc bng c s, tc l vn m bo tnh ton vn d liu. V d: Vi view WORKS_ON1, ta cn cp nht li thuc tnh Pname cho cc b ca nhn vin John Smith , ta c th thc hin truy vn sau: UV1: UPDATE WORKS_ON1 SET Pname = ProductY WHERE Lname = Smith AND Fname = John AND Pname = ProductX; Khi thc hin truy vn UV1 ny c th lm thay i d liu trn cc quan h c lin quan n view. C hai thay i c th xy ra l: (a): UPDATE WORKS_ON SET Pno = (SELECT Pnumber FROM PROJECT WHERE Pname = ProductY) WHERE Essn IN (SELECT Ssn FROM EMPLOYEE WHERE Lname= Smith AND Fname=John) AND Pno = (SELECT Pnumber FROM PROJECT WHERE Pname = ProductX); (b): UPDATE PROJECT SET Pname = ProductY WHERE Pname = ProductX; V khi tn sn phm b thay i dn n m sn phm Pnumber cng b thay i do theo (a) bng WORKS_ON c cp nht li gi tr Pno bng Pnumber ca sn phm ProductY ti nhng b tha iu kin: Pname ca bng PROJECT l ProductX v do ng John Smith qun l. Theo (b) tn sn phm (Pname) ca bng PROJECT c thay bng ProductY ti nhng Pname= ProductX. Di y l mt s lu khi cp nht trn view: - Mt view c nh ngha vi mt bng n s c th cp nht nu cc thuc tnh ca view c cha kha chnh ca bng c s.

119

- Cc view c nh ngha trn nhiu bng c s dng kt ni th thng khng nn cp nht. - Cc view c nh ngha c dng cc lnh Group hoc cc hm kt hp th khng nn cp nht.
6.9. Mt s tnh nng khc ca SQL Di y l mt s tnh nng quan trng khc nhng khng c tho lun chi tit trong chng ny. Cc vn ny c th tm hiu trong nhng chng tip theo. - SQL c s h tr nhiu t mt s ngn ng lp trnh khc, ngha l t cc ngn ng lp trnh ny ta c th thc hin x l d liu bng cu lnh SQL. Cc k thut thng dng nh: K thut nhng SQL, SQL/CLI (call language interface), ODBC, SQL/PSM. Trong chng 2 chng ta s tm hiu cc k thut ny. - SQL c cc cu lnh iu khin cc giao tc, cc lnh ny thng c s dng trong x l CSDL vi cc iu khin tranh chp v phc hi d liu. - SQL cho php to cc trigger, k thut ny thng dng trong vic kch hot v cp nht t ng CSDL. - SQL tng thch vi m hnh hng i tng vi nhiu tnh nng hu ch. SQL c th s dng ci tin mt m hnh quan h thnh m hnh hng i tng-quan h. - SQL v CSDL quan h c th tng tc ln nhau vi cng ngh nh XML v OLAP.

120

BI TP NHP MN C S D LIU
S THC TH MI QUAN H - M HNH QUAN H
1. Mt ca hng cn phi t chc CSDL nhm h tr cng tc qun l bn hng. Ngoi vic phi qun l cc thng tin ln quan n cc mt hng nh m hng, tn hng, s lng, gi hng, CSDL ny cn phi h tr cho vic qun l nhp v xut (bn) hng. Cho bit mt s thng tin lin quan n hot ng ca ca hng ny nh sau: Hng ho trong ca hng c ly t cc ngun hng do nh cung cp cung cp. Mi t nhp hng nh vy phi c ghi vo cc phiu nhp c mu nh sau: PHIU NHP HNG S phiu:............................ Ngy nhp hng ......./....../....... Ngi cung cp:................................................................... a ch:................................................................................ DANH MC HNG NHP M Tn hng S Gi Thnh tin hng lng nhp .... ...... Tng cng: ...... ..... ...... ..... ..... .....

Khi khch hng mua hng, ca hng s tin hnh lp ho n bn hng cho khch. Vic thnh ton tin ca khch s da vo cc ho n ny. Cc ho n ca hng s dng c mu nh sau:

121

HO N BN HNG S ho n:............................ Ngy bn ......./....../............ Tn ngi mua hng:.......................................................... a ch:................................................................................ DANH MC HNG C BN M Tn hng S Gi Thnh tin hng lng bn .... ...... Tng cng: ...... ..... ...... ..... ..... .....

a. V s thc th - mi quan h cho c s d liu trn. b. Chuyn s quan h - thc th trn sang m hnh d liu quan h. c. Chuyn s thc th - mi quan h trn sang m hnh d liu hng i tng. 2. h tr cng tc qun l o to trong mt trng i hc, ngi ta t chc mt c s d liu trong qun l cc thng tin v sinh vin, cc lp hc, cc khoa trong trng, cc khoa - b mn trong trng, cc hc phn v gio vin ging dy trong trng nhm cho bit cc thng tin sau: Sinh vin hc lp no. Lp hc thuc s qun l ca khoa-b mn no trong trng. Gio vin lm vic khoa-b mn no trong trng. Mt lp vo mt hc k ca mt nm hc c hc nhng mn hc no v do gio vin no ging dy. Sinh vin hc mt mn hc vi kt qu im thi ra sao (c im thi ln 1 ln im thi ln 2). a. Hy v s thc th-mi quan h cho c s d liu trn. b. Biu din s thc th-mi quan h trn trong m hnh d liu quan h, m hnh d liu hng i tng. c. Nu bn l ngi c la chn trin khai h thng trn, hy cho bit nhng khuyn co ca bn i vi h thng cn c xy dng. 3. C s d liu VT T c s dng qun l cng tc phn phi vt t cho cc phn xng trong nh my. Vt t c lu tr trong cc kho ca nh 122

my. Khi mt phn xng no cn vt t th gi n yu cu cung cp vt t. Nh kho s cn c vo n yu cu chuyn vt t cho phn xng. Khi chuyn vt t cho phn xng phi lu tr thng tin v vic chuyn giao vt t trong cc phiu xut kho tin cho cng tc thng k sau ny. a. Hy biu din s thc th-mi quan h tng ng vi c s d liu trn. b. Chuyn s thc th - mi quan h trn sang m hnh d liu quan h, m hnh d liu hng i tng. 3. Xt s thc th mi quan h di y: A R C D B

Gi s kho ca A l A, kho ca B l B, kho ca C l C v kho ca D l D. Nu chuyn s trn sang m hnh d liu quan h th tp tt c cc kho ca quan h biu din cho mi quan h R l g.
Tr li: BCD

4. Cho s thc th mi quan h di y: A R B

Gi s A c 10 thc th, B c 100 thc th v C c 20 thc th. Nu chuyn s trn sang m hnh d liu quan h th quan h biu din cho mi quan h R c th c ti a bao nhiu b d liu.
Tr li: C ti a 10 100 = 1000 b d liu

4. Da trn c s d liu quan h c c cu 1, hy vit cc biu thc i s quan h biu din cho cc yu cu truy vn d liu sau y: a. Cho bit tn v gi ca nhng mt hng c s lng ln hn 100. b. Cho bit mt hng ng c s lng l bao nhiu. 123

c. d. e. f. g. h.

Cho bit khch hng Nguyn Vn A mua nhng mt hng no? Nhng ngi no cung cp B cho ca hng? Vo ngy 2/3/1998 bn c nhng mt hng no? Nhng khch hng no mua hng ca ca hng vo ngy 4/6/1998? ng L Vn B cung cp cho ca hng nhng mt hng no? Ha n s 102 mua nhng mt hng no, vi s lng v gi tin l bao nhiu?

5. Da trn c s d liu quan h c c cu 2, hy vit cc biu thc i s quan h biu din cho cc yu cu truy vn d liu sau y: a. Cho bit danh sch cc sinh vin hc lp Tin K2A. b. im thi mn C s d liu ca cc sinh vin lp Tin K1B c. Nhng gio vin no c phn cng ging dy lp Tin K22A hc k 1 nm hc 2000-2001? d. Trong hc k 1 nm hc 2001-2002, gio vin Mai Thanh C c phn cng dy nhng lp no, mn hc g? e. Cho bit sinh vin Lm Ch Thnh phi thi li nhng mn hc no (im ln 1 nh hn 5) 6. Biu din cc yu cu truy vn d liu cu 4 v 5 bng cu lnh SELECT. 7. Cho cc quan h SINHVIEN, DIEMTHI v MONHOC ln lt nh sau:
MASV CQK21001 CQK22001 TCK8007 CQK23005 HOTEN L Hoi Nam Nguyn Vn Thanh Hong Th Tho L Th Hoa GIOITINH 1 1 0 0 DIACHI Hu Nng Qung Tr Hu MALOP TIK21C TI22A TIK8 TIK23

MASV
CQK21001 CQK21001 TCK8007 TCK8007 CQK23005

MAMH TI01 TI02 TI03 TI05 TI01

DIEMLAN1 4 8 4 8 2

DIEMLAN2 7 3 3

124

MAMH TI01 TI02 TI03 TI05

TENMH Pascal Ngn ng C ho CSDL

SODVH T
4 4 4 5

Tnh cc biu thc i s quan h di y v cho bit chc nng ca mi biu thc a. HOTEN,GIOITINH(DIACHI=Hu(SINHVIEN)) b. HOTEN,TENMH,DIEMLAN1(SINHVIEN DIEMTHI MONHOC) c. TENMH,DIEMLAN1,DIEMLAN2(HOTEN=L Hoi Nam (SINHVIEN)
DIEMTHI MONHOC))

8. Cho hai quan h r v s sau y: A B C D 2 3 1 1 1 2 2 3 1 1 2 1 1 2 1 1 2 3 2 3 Quan h r Tnh cc biu thc i s quan h sau y: a. AB(r) - AB(s) b. AD(r) s c. AB(r) AB(A B(s)) d. r AB(A B(s))
8. Cho r va s la hai quan h nh sau: A a b b a b b B c c a c b a C c a c f c f D e a h e e h E a g a g a g D b g h

A 1 2 2

B 1 1 3 Quan h s

C 2 2 2

E b h g

F c a g

G f c f

Tnh cac biu thc ai s quan h sau:

125

a. ACB(r) - EFG(D=E(s) ) b. CDE(r) >< DEF(s) c. ABCE(r) GF(Fc(s)) d. ABC(r) G(s)

9. Cho hai quan h r v s c lc quan h tng ng l R(A,B) v S(A,B). Chng minh rng: r s = r s 10. Cho r1 v r2 l hai quan h trn lc quan h l R vi kha l K. Quan h no trong s cc quan h di y cng c kha l K. a. r1 r2 b. r1 r2 c. r1 r2 d. r1 r2 11. Cho cc quan h r, s v u. Chng minh rng: a. (r s) u = r (s u) b. r r = r 12. Cho hai quan h r(R) v s(S). A l mt thuc tnh ca R. Chng minh rng:

A=a(r s) = A=a(r) s
13. Cho hai quan h r(R) v s(S) vi RS = . Chng minh rng: (r s) s = r

126

BI TP C S D LIU

L THUYT THIT K CSDL QUAN H


1. Quan h:

A B C D E F ) 1 2 0 3 1 1 2 1 0 2 1 1 0 2 1 3 1 0 2 1 1 0 1 1 tho mn nhng ph thuc hm no trong s cc ph thuc hm sau: AB C, D E, ABE, BCD, AF Tr li: DE, ABE, BCD, AF
2. Quan h:

r= (

r= (

A a b c a c a a

B a a a a a a c

C b c c b c c b

D c c c c c c c

E a c d b a a a

F c d d c d c a

tho mn nhng ph thuc hm no trong s cc ph thuc hm sau: ABD, ABE, B, D, CDF

Tr li: ABD, D
3. Cho quan h r sau y:

r= (

A 1 1 1 0

B 1 0 1 0

C 0 2 0 1

D 0 0 1 0

E 1 1 1 1

F 2 1 0 2

Tp ph thuc hm no di y ng trn quan h r? a. F = {AB C, C E, CD F} 127

b. F = {AB CE, CD, D E } c. F = {CD EF, A B, F E } d. F = {BCD, DE} Tr li: a


4. Cho quan h r:

r= (

A a c a b

B b a b b

C a b a b

D h b h b

E c a c c

F a c c a

Quan h r tho mn tp ph thuc hm no trong s cc tp ph thuc hm sau: a. F = {ABC, CD, DE F} b. F = {ABCD, DE AF} c. F = {AC, BE} Tr li: c
5. Chng minh rng quan h r tho XY nu v ch nu X l kho ca XY(r).

Chng minh: Xt quan h r tho XY. Gi s X khng phi l kho ca XY(r) t s = XY(r) => t1, t2 s sao cho t1 t2 v t1[X] = t2[X] (1) => t1[Y] t2[Y] (2) Do s = XY(r) nn q1, q2 r sao cho: q1[XY] = t1 v q2[XY] = t2 => q1[X] = t1[X], q1[Y] = t1[Y], q2[X] = t2[X] v q2[Y] = t2[Y] (3) T (1), (2) v (3) => q1[X] = q2[X] v q1[Y] q2[Y] => Quan h r khng tho XY (mu thun) Vy X l kho ca XY(r)
6. Cho quan h r trn lc quan h R. X v Y l tp con cc thuc tnh ca R. Chng minh rng nu X(R) c s b d liu bng s b d liu ca r th ph thuc hm XY lun ng trn quan h r.

Hng dn: Chng minh bng phn chng 128

7. Cc khng nh di y ng hay sai? Nu ng, hy chng minh; nu sai, hy ch ra mt phn v d.

a. Nu XY v WZ th XWYZ b. Nu XY v YZ th XYZ c. Nu XYZ v ZX th ZY d. Nu XY, WZ v W Y th XZ a. ng XY XWYW (tng trng) WZ YWYZ (tng trng) XWYZ (bc cu). b. ng c. Sai. Xt quan h sau X 11...1 11...1 d. ng
8. Cho lc quan h R(A,B,C,D,E,F,G,H,I) v tp ph thuc hm F trn R.

Y 11...1 00...0

Z 11...1 11...1

F = {ABD, AHI, DH, HIG, BDI} Chng minh rng nu quan h r trn lc quan h R tho mn F th r cng tho ph thuc hm ABGI bng cc cch: a. S dng h tin Armstrong b. Tnh bao ng ca tp thuc tnh a. Chng minh bng Armstrong ABD v DH ABH (bc cu) ABAH (tng trng) AHI ABI (bc cu) ABHI (hp) HIG ABG (bc cu) ABGI (hp) b. Bao ng ca AB theo F l: ABDHIG Vy GI AB+ F |== ABGI 129

9. Cho lc quan h R(A,B,C,D,E,F) v tp thuc hm trn R.

F = {AB, DF, ED, DC} Tnh bao ng ca cc tp thuc tnh AE, BD AE+ = ABDCDEF, BD+ = BDCF
10. Cho quan h r trn lc quan h R. A v B l cc thuc tnh ca R, X v Y l tp con cc thuc tnh ca R. Bng lp lun logic, chng minh rng nu quan h r tho mn ph thuc hm AX, YB v YX th r cng tho AB.

Xt quan h r tho AX v YB. Gi s r khng tho AB t1, t2 r sao cho t1[A] = t2[A] v t1[B] t2[B] (1) Do r tho AX nn t1[X] = t2[X] t1[Y] = t2[Y] (do Y X) (2) (1) v (2) r khng tho YB (mu thun) Vy r tho AB 11. Cho lc quan h R v tp ph thuc hm F trn R. Nu F = th F+ l tp ph thuc hm nh th no? F+ = {XY | YX, X, YR} 12. Kim tra tnh cht bo ton thng tin ca php tch =(ABC, ADE, DFG) ca lc quan h R(A, B, C, D, E, F, G) tng ng vi cc tp ph thuc hm di y : a. F = {ABC, CDE, AFG} b. F = {ACB, ADE, BDFG} c. F = {ACDE, BEFG} d. F = {BDAE, BCFG} R= ABCDEFG, =(ABC, ADE, DFG)
Hng dn:

Cu b: F = {ACB, ADE, BDFG} Xy dng bng nh sau : A B C D E F G ABC a1 a2 a3 b14 b15 b16 b17 ADE a1 b22 b23 a4 a5 b26 b27 DFG b31 b32 b33 a4 b35 a6 a7 130

Xt ACB: ABC ADE DFG Xt ADE: ABC ADE DFG Xt BDFG: ABC ADE DFG A B C a1 a 2 a 3 a 1 a2 a3 b31 b32 b33 D a4 a4 a4 E F G a5 b16 b17 a5 b16 b17 b35 a6 a7 A B C D E F G a1 a2 a3 b14 b15 b16 b17 a1 a2 a3 a4 a5 b26 b27 b31 b32 b33 a4 b35 a6 a7 A B C a1 a 2 a 3 a 1 a2 a3 b31 b32 b33 D a4 a4 a4 E F G a5 b16 b17 a5 b26 b27 b35 a6 a7

Xt li mt lt cc ph thuc hm, ta nhn thy khng c s thay i no trn bng. Vy: Php tch khng bo ton ph thuc hm do trong bng cui cng khng xut hin dng c gi tr l a. 13. Kim tra tnh cht bo ton ph thuc hm ca php tch = (ABD, ACE, BEF, DEG) ca lc quan h R(A,B,C,D,E,F,G) tng ng vi cc tp ph thuc hm di y : a. F = {BDA, ACF, DF, BEG} b. F = {AEF, BDCD, FG} c. F = {AB, AD, DE, EC, BDFG} 14. Cho lc quan h R(A,B,C,D,E,F) v tp ph thuc hm F trn R: F={ABC, ADE, DF, AB, FA} a. Tp ph thuc hm F c cc tiu hay khng ? Nu khng hy xc nh mt ph cc tiu ca F. b. Php tch = {ABC, ADE, DF, AF} c bo ton thng tin hay khng ? c. Php tch trn c bo ton ph thuc hm hay khng ? a. Tm ph cc tiu ca F. 131

Bc 1: Thay tt c cc ph thuc hm c t hai thuc tnh v phi tr ln bi nhng ph thuc hm ch c mt thuc tnh v phi. F = {ABC, AD, AE, DF, AB, FA} Bc 2: Loi b khi v tri ca cc ph thuc hm trong F nhng thuc tnh tha Xt ABC: A+F = ABDCEF CA+F thuc tnh B tha. F = {AC, AD, AE, DF, AB, FA} Bc 3: Loi b khi F nhng ph thuc hm tha Xt AC: A+F\{AC} = ABDEF CA+F\{AC} Xt AD: A+F\{AD} = ABC DA+F\{AD} Xt AE: A+F\{AE} = ACDFB EA+F\{AE} Xt DF: D+F\{DF} = D FD+F\{DF} Xt AB: A+F\{AB} = ACDEF BA+F\{AB} Xt FA: F+F\{FA} = F AF+F\{FA} Vy khng c ph thuc hm no tha. Ph cc tiu ca F l: {AC, AD, AE, DF, AB, FA} b. Php tch = {ABC, ADE, DF, AF} bo ton thng tin c. Php tch = {ABC, ADE, DF, AF} bo ton ph thuc hm.

15. Cho lc quan h R(A,B,C,D,E,F,G) v tp ph thuc hm F trn R: F = {ABC, ACD, DA, DCEF, B G} a. Hy tm mt ph cc tiu ca F. b. Xc nh tt c cc kho ca lc quan h R. c. Trn R c tn ti d tha v d thng v d liu hay khng? Nu c, hy tm mt php tch thnh BCNF ca R. d. Php tch tm c trn c bo ton ph thuc hm hay khng?

132

Hng dn:

a. Ph cc tiu ca F: {ABC, ACD, DA, DCE, DCF, BG} b. Tp cc kho ca R: {AB, BD} c. Tm mt php tch thnh BCNF ca R: ABCDEFG Xt cc cp {CD, CE, CF, CG} ABC ABDEFG Xt cc cp {DE, DF, DG, AB} AD BDEFG Xt cc cp {GD, GE, GF} BG BDEF Xt cp {EF} BDE BDF Php tch tm c = (ABC, AD, BG, BDE, BDF) d. Php tch trn khng bo ton ph thuc hm 16. Cho lc quan h R = ABCDEFGH. Xc nh tt c cc kho ca R tng ng vi cc tp ph thuc hm di y: a. Fa = {AB, AC, D B, DC, CEA, CED, GH} b. Fb = {CDE, ADF, AG, CH, BA, BC, GHB} c. Fc = {ABE, CDF, EFG, CH, HA, HB} d. Fd = {ABC, ABD, ABE, CA, DB, EF, HB, FGH} a. Fa = {AB, AC, D B, DC, CEA, CED, GH} S dng thut ton tm tt c cc kho ta c: Tp kho ban u: = {EFGC} Xt kho: EFGC A B Siu kha: AEFGC A-->C Siu kha: AEFG ==> Tm c kho mi AEFG = {EFGC, AEFG} D B Siu kha: DEFGC D C Siu kha: DEFG ==> Tm c kho mi DEFG = {EFGC, AEFG, DEFG} CEA Siu kha: CEFG CED Siu kha: CEFG G H Siu kha: GEFC 133

Xt kha: AEFG A B A C D B D C CEA CED G H Xt kha: DEFG A B A C D B D C CEA CED G H

Siu kha: AEFG Siu kha: AEFG Siu kha: DAEFG Siu kha: DAEFG Siu kha: CEFG Siu kha: CEAFG Siu kha: GAEF Siu kha: ADEFG Siu kha: ADEFG Siu kha: DEFG Siu kha: DEFG Siu kha: CEDFG Siu kha: CEFG Siu kha: GDEF

Tp tt c cc kho l: = {EFGC, AEFG, DEFG} b. Fb = {CDE, ADF, AG, CH, BA, BC, GHB} = {DGH, ADH, CDG, CAD, BD} c. Fc = {ABE, CDF, EFG, CH, HA, HB} = {CD} d. Fd = {ABC, ABD, ABE, CA, DB, EF, HB, FGH} = {GCF, AGF, EGC, EAG, BGC, ABG, DGC, HGC, DAG, HAG} 17. Cho lc quan h R(A, B, C, D, E) v tp ph thuc hm trn R: F = {ABC, CDE, D } Trong l mt thuc tnh no trong s cc thuc tnh ca R v D l ph thuc hm khng tm thng. C th a ra c kt lun g i vi kho ca R cho d l thuc tnh no.
Mi kho ca R u phi cha thuc tnh A.

18. Cho lc quan h R, XY l ph thuc hm trn R v K l mt kho ca R. Chng minh rng X(K\Y) l siu kho ca R. Ta c: XY X(K\Y) Y(K\Y) (tng trng) 134

K Y(K\Y) Y(K\Y) K Do K l kho nn K R X(K\Y) R (bc cu) X(K\Y) l siu kho 19. Da vo lc quan h R v cc tp ph thuc hm cu 16: a. Hy tm mt php tch thnh BCNF ca R ng vi mi tp ph thuc hm Fa, Fb, Fc. b. Hy tm mt php tch thnh 3NF ca R ng vi mi tp ph thuc hm Fa, Fb, Fc. c. Cc php tch tm c cu b c bo ton thng tin hay khng? 20. Cho lc quan h R(A,B,C,D) v tp ph thuc hm F={BC} trn R. C th b sung vo F ph thuc hm no trong s cc ph thuc hm di y R l 3NF nhng khng phi l BCNF. (a) DAB (b) AC D (c) CDB (d) ADB R l 3NF nhng khng l BCNF th vi mi ph thuc hm XAF, A phi l thuc tnh kho. Vy c th b sung vo F ph thuc hm CDB R l 3NF nhung khng l BCNF

21. Cho lc quan h R(A, B, C, D) v tp ph thuc hm F ={ABC} trn R. Phi b sung vo F ph thuc hm no trong s cc ph thuc hm di y R l 3NF nhng khng phi l BCNF a. ABD b. CB c. CD C th b sung vo F ph thuc hm CB R l 3NF nhng khng l BCNF 22. Cho lc quan h R(A,B,C,D,E). Xc nh dng chun ca R tng ng vi cc tp ph thuc hm sau: a. F = {ABC, ABD, CA, DB} b. F = {ABE, CDA, EB} 135

c. F = {CDA, BCDE} . a. 3NF b. 1NF c. 1NF

23. Cho lc quan h R(A, B, C, D). v tp ph thuc hm F = {ABC, CD, DA} trn R. a. Tm tp tt c cc ph thuc hm khng tm thng v cc ph thuc hm m v phi khng c thuc tnh xut hin trong v tri c suy dn t F. b. Xc nh tt c cc kho ca R. a. Tr li: {ABC, CD, DA, CA, CDA, ABD, ABCD, ACD, BCA, BCD, BCAD, BDA, BDC, BDAC, CDA, ABCD, ABDC, BCDA} b. Tp tt c cc kho: AB, CB, BD

24. Cho lc quan h R(A, B, C, D). v tp ph thuc hm F = {AB, BC, BD} trn R. a. Tm tp tt c cc ph thuc hm khng tm thng v cc ph thuc hm m v phi khng c thuc tnh xut hin trong v tri c suy dn t F. b. Xc nh tt c cc kho ca R. 25. Cho lc quan h R(A, B, C, D). v tp ph thuc hm F = {AbC, BCD, CDA, ADB} trn R. a. Tm tp tt c cc ph thuc hm khng tm thng v cc ph thuc hm m v phi khng c thuc tnh xut hin trong v tri c suy dn t F. b. Xc nh tt c cc kho ca R. 26. Cho lc quan h R(A, B, C, D). v tp ph thuc hm F = {AB, BC, CD, DA} trn R. a. Tm tp tt c cc ph thuc hm khng tm thng v cc ph thuc hm m v phi khng c thuc tnh xut hin trong v tri c suy dn t F. b. Xc nh tt c cc kho ca R. 27. Hy ch ra mt phn v d chng t rng cc pht biu di y l sai. a. Nu quan h r tho AB th r tho BA b. Nu quan h r tho ABC v AC th r tho BC c. Nu quan h r tho ABC th r tho AC hoc BC a. Quan h tho AB nhng khng tho BA 136

A 1 0 A 1 0 B 1 1

B 0 0 C 0 1

b. Quan h r tho ABC v AC nhng khng tho BC

28. Cho X v Y l hai tp thuc tnh. Chng minh rng nu XY th X+ Y+ (vi bao ng ca X v Y c tnh theo cng mt tp ph thuc hm) Chng minh: AX+, ta c F |== XA Do X Y nn YX Theo tin bc cu: F |== YA AY+ Vy X+ Y+ 29. Cho F l tp ph thuc hm. Chng t rng ph thuc hm XAF l d tha nu v ch nu A thuc X+ khi bao ng ny c tnh theo tp ph thuc hm F\{XA} Chng minh * Chng minh nu XAF d tha th AX+F\{XA} Nu XA F l d tha th F+ = (F\{XA})+ Vi mi ph thuc hm WV F+, ta c F\{XA} |== WV XA F nn F\{XA} |== XA A X+F\{XA} * Chng minh nu AX+F\{XA} th XAF l d tha Do F\{XA} F nn (F\{XA})+ F+ Ta chng minh F+ (F\{XA})+ Tht vy, WVF ta c WV F\{XA} hoc WV chnh l XA V W+F\{XA} F+ (F\{XA})+ Vy F+ = (F\{XA})+ XAF l tha. 137

30. Chng t rng thuc tnh BX trong ph thuc hm XAF l d tha nu v ch nu A(X\{B})+F. 31. Cho hai lc quan h R1 v R2, R1 R2 = X. Chng t rng vi mi quan h r(R1R2) tho XR2 ta lun c: r = R1(r) R2(r) D dng chng minh c r R1(r) R2(r) Ta chng minh R1(r) R2(r) r. Xt b R1(r) R2(r) 1 R1(r) v 2 R2(r) sao cho: 1[X] = 2[X] = [X] 1[R1\R2] = [R1\R2] 2[R2\R1] = [R2\R1] 1, 2 r sao cho 1 = 1[R1] v 2 = 2[R2] 1[X] = 1[X] 1[R1\R2] = 1[R1\R2] 2[X] = 2[X] 2[R2\R1] = 2[R2\R1] 1[X] = 2[X] = [X] 1[R1\R2] = [R1\R2] 2[R2\R1] = [R2\R1] Do r tho XR1\R2 nn 1[R1\R2] = 2[R1\R2] 2 = r

R1(r) R2(r) r
Vy r = R1(r) R2(r) 32. Cho hai tp ph thuc hm F v G. Chng minh rng nu XYF, bao ng ca X theo G cha Y th F+ G+. Chng minh: Xt WV F+, ta c: F |== WV Do YX+G XYF nn F G+ G+ |== WV 138

G |== WV Vy: WV G+ F+ G+
33. Cho quan h sau y: TENLOP MONHOC PHONG BUOI Tin K1 Pascal 1 Sng Tin K2 Foxpro 2 Chiu Tin K2 Pascal 1 Sng Quan h trn c tho mn ph thuc a tr: F = {TENLOP PHONG, TENLOPBUOI} hay khng? Nu khng, phi b sung vo quan h trn nhng b d liu no quan h tho mn F. Quan h khng tho mn tp ph thuc a tr: F = {TENLOP PHONG, TENLOPBUOI} quan h trn tho F, phi b sung vo F cc b d liu sau: TENLOP MONHOC PHONG BUOI Tin K2 Pascal 2 Sng Tin K2 Foxpro 1 Chiu Tin K2 Pascal 1 Chiu Tin K2 Foxpro 2 Sng 34. Cho quan h r sau y: A B C D E 1 2 3 4 5 1 0 3 6 5 8 2 3 4 7 Phi b sung vo r nhng b d liu no quan h r tho mn ph thuc a tr ABC v CDBE 35. Quan h r sau y: A B C D E 1 2 2 0 1 1 1 2 1 0 0 2 2 1 1 1 1 2 0 0 1 2 2 1 1 Tho mn ph thuc a tr no trong s cc ph thuc a tr sau y: 139

AB, ACD, ACBE Quan h r tho mn ph thuc a tr ACBE 36. Cho quan h r(A,B,C,D). Quan h r phi nh th no ph thuc a tr CD lun ng trn r. . r = AB(r) CD(r) 37. Cho quan h r trn lc quan h R. X, Y, Z, W l tp con cc thuc tnh ca R. Chng minh rng cc pht biu sau y l ng: a. Nu r tho XY th r tho XZY b. Nu r tho XY v XZ th r tho XYZ c. Nu r tho {XY, XZ} th r tho {XYZ, XY-Z} d. Nu r tho {XY, YZ} th r tho {XYZ, XZ-Y} a. Xt quan h r tho XY Gi s t1, t2 r sao cho t1[XZ] = t2[XZ] Ta c: t1[X] = t2[X] v t1[Z] = t2[Z] Do r tho XY nn tn ti b t3 sao cho: t3[X] = t1[X], t3[Y] = t1[Y] v t3[R-XY] = t2[R-XY] => t3[R-XYZ] = t2[R-XYZ] Mt khc: t3[(R-XY) Z] = t1[(R-XY)Z] (do (R-XY)ZR-XY v (RXY)ZZ) Vy: t3[X] = t1[X], t3[Y] = t1[Y] v t3[(R-XY)Z] = t1[(R-XY)Z] => t1[XZ] = t1[XZ] Vy, t3 r sao cho: t3[XZ] = t1[XZ], t3[Y] = t1[Y] v t3[R-XYZ] = t2[R-XYZ] => r tho XZY
b. Xt quan h r tho XY v XZ. Gi s t1, t2 r sao cho: t1[X] = t2[X] Do r tho XY nn t3r sao cho t3[X] = t1[X] t3[Y] = t1[Y] t3[R-XY] = t2[R-XY] Do r tho XZ nn t4r sao cho t4[X] = t1[X]

(1)

140

(1) (2)

t4[Z] = t1[Z] t4[R-XZ] = t3[R-XZ] t3[R-XYZ] = t2[R-XYZ] t4[R-XYZ] = t3[R-XYZ] t4[R-XYZ] = t2[R-XYZ]

(2)

(*)

Ta c: t4[Y(R-XZ)] = t3[Y(R-XZ)] (Do Y(R-XZ)R-XZ v t4[R-XZ]=t3[R-XZ]) t3[Y(R-XZ)] = t1[Y(R-XZ)] (Do Y(R-XY) Y v t3[Y] = t1[Y]) t4[Y(R-XZ)] = t1[Y(R-XZ)]

Vy: t4[X] = t1[X], t4[Z] = t1[Z] v t4[Y(R-XZ)] = t1[Y(R-XZ)] t4[YZ] = t1[XZ] t4 r tho t4[X] = t1[X], t4[YZ] = t1[YZ] v t4[R-XYZ] = t2[R-XYZ] r tho XYZ c. S dng qui tc hp v b chng minh
d. Chng minh {XY, YZ} |= XYZ Xt quan h r tho {XY, YZ}. Gi s t1, t2 r sao cho: t1[X] = t2[X] Do r tho XY nn t3r sao cho: t3[X] = t1[X] t3[Y] = t1[Y] v t3[R-XY] = t2[R-XY] Do r tho YZ nn t4r sao cho: t4[Y] = t1[Y] t4[Z] = t1[Z] v t4[R-YZ] = t3[R-YZ] Ta nhn thy: t4[YZ] = t1[YZ] (1) t4[R-XYZ] = t3[R-XYZ] = t2[R-XYZ] (2) Ta c: t3[X] = t1[X] t4[R-YZ] = t3[R-YZ] t4[X(R-YZ)] = t1[X(R-YZ)] (3) T (1) v (3), suy ra: t4[(X(R-YZ))YZ] = t1[(X(R-YZ))YZ] Do X (X(R-YZ))YZ => t4[X] = t1[X] (4)

T (4), (1) v (2) =>

XYZ

S dng kt qu trn v cu (c) chng minh r tho XZ-Y 141

38. Cho quan h r trn lc quan h R. X, Y, Z, W l tp con cc thuc tnh ca R. Chng minh rng nu r tho XY v ZW th r tho XWYZ. Hng dn Gi s t1, t2 r tho t1[XW] = t2[XW]. Chng minh rng tn ti b tr tho: t[XW] = t1 [XW], t[YZ] = t1[YZ] v t[R-XYW] = t2[R-XYW] 39. Cho lc quan h R(A, B, C, D, E). Chng minh rng nu quan h r trn R tho tp ph thuc a tr: F = {ABC, DEC} th r cng tho ABDE, ACDE Hng dn Ta c: ABC ADE (tnh b) DEC AC (bc cu) A B (lut tch) ABDE v ACDE (lut hp) 40. Cho quan h r(R). X v Y l tp con cc thuc tnh ca R, Z=R-XY. Chng minh rng php tch = (XY, XZ) l php tch bo ton thng tin nu v ch nu r tho XY. Hng dn () Gi s php tch = (XY, XZ) l php tch bo ton thng tin tc l r = XY(r) XZ(r) Gi s t1, t2 r sao cho t1[X] = t2[X] => t1 XY(r) sao cho t1 = t1[XY] t2 XZ(r) sao cho t2 = t2[XZ] Do r = XY(r) XZ(r) nn trong r phi tn ti b t3 sao cho: t3[XY] = t1[XY] v t3[XZ] = t2[XZ] Vy trong r phi tn ti b t3 tho iu kin t3[X] = t1[X], t3[Y] = t1[Y] v t3[R-XY] = t2[R-XY] r tho XY () Xt quan h r tho ph thuc a tr XY, ta chng minh r = XY(r)
XZ(r)

Hin nhin r XY(r) XZ(r) 142

Xt t XY(r) XZ(r) => t1 XY(r) v t2 XZ(r) sao cho: t1[X] = t2[X] = t[X], t1[Y] = t[Y] v t2[Z] = t[Z] Ta li c: t1 r sao cho t1[XY] = t1 t2 r sao cho t2[XZ] = t2 Do r tho XY nn t r sao cho: t[X] = t1[X] = t[X], t[Y] = t1[Y] = t[Y] v t[Z] = t2[Z] = t[Z] t = t tr Vy r = XY(r) XZ(r) Php tch l php tch bo ton thng tin 41. Cho lc quan h R(A, B, C, D, E, F) v tp ph thuc a tr trn R: F = {ABC, ADEF} Tinh c s ph thuc ca A, AD. 42. Cho quan h R(A,B,C,D,E) v tp ph thuc hm trn R: F = {ABC, CD, DAE} a. Tm tt c cc kho ca R. b. Ph thuc hm no trong tp ph thuc hm F vi phm BCNF. c. Gi s ta tch R thnh hai lc R1(A,D,E) v R2(B,C,D). Hy xc nh tp ph thuc hm cc tiu trn R1 v R2. d. Tm tt c cc kho ca R1 v R2 e. Xc nh dng chun ca R1 v R2 R = ABCDE, F = {ABC, CD, DAE} a. Tp cc kho ca R: {BD, CB, AB} b. Ph thuc hm CD v DAE vi phm BCNF c. ADE(F) = {DAE} BCD(F) = {BDC, CD} d. R1(ADE) dng chun Boyce-Codd, R2(BCD) dng chun 3. 43. Cho lc quan h R(A,B,C) v tp ph thuc hm F = {ABC, AB} trn R. Hy cho mt v d chng t rng khng c ph thuc hm no trong F c th suy dn logic ra ph thuc hm cn li.

143

144

BI TP C S D LIU

SQL
t chc qun l bn hng cho mt ca hng nh, ngi ta s dng cc bng d liu nh s sau y:
MATHANG MAHANG TENHANG LOAIHANG DONVITINH GIANHAP SOLUONG

1
CHITIETHD SOHOADON MAHANG SOLUONG GIABAN

HOADON
1

SOHOADON NGAYBAN TENKHACH DIACHI NGUOIBAN

1. S dng cu lnh CREATE TABLE to cc bng d liu trn. CREATE TABLE MATHANG ( MAHANG char (10) PRIMARY KEY, TENHANG char (50) , LOAIHANG char (20), DONVITINH char (10), GIANHAP int, SOLUONG int ) CREATE TABLE HOADON ( SOHOADON int PRIMARY KEY, NGAYBAN datetime, TENKHACH char (20) , DIACHI char (50), NGUOIBAN char (20) ) CREATE TABLE CHITIETHOADON ( SOHOADON int NOT NULL , MAHANG char (10) NOT NULL , SOLUONG int NOT NULL , GIABAN int NOT NULL 145

PRIMARY KEY (SOHOADON,MAHANG) ) 2. S dng cu lnh ALTER TABLE to mi quan h gia hai bng MATHANG v CHITIETHD thng qua trng MAHANG. ALTER TABLE CHITIETHOADON ADD FOREIGN KEY ( SOHOADON ) REFERENCES HOADON ( SOHOADON ) 3. S dng cu lnh ALTER TABLE to mi quan h gia hai bng HOADON v CHITIETHD thng qua trng SOHOADON. qun l cng tc o to trong mt trng i hc, ngi ta s dng CSDL nh sau:

S dng cu lnh SELECT thc hin cc yu cu sau y:


4. Cho bit m sinh vin, h tn v ngy sinh ca cc sinh vin SELECT MASV,HODEM,TEN,NGAYSINH FROM SINHVIEN

5. Cho bit tn lp v nm nhp hc ca cc lp ti chc (h o to l ti chc) 146

SELECT TENLOP,NAMNHAPHOC FROM LOP WHERE HEDAOTAO='Ti chc' 6. Cho bit thng tin v cc gio vin c h s lng ln hn 2.11 7. Nhng mn hc no c s n v hc trnh nh hn 4? 8. nh mc gi chun ca gio vin L Vn A l bao nhiu? 9. in thoi ca khoa CNTT l g? 10. Cho bit danh sch cc gio vin lm vic ti khoa CNTT. SELECT MAGV,HODEM,TEN FROM GIAOVIEN, KHOA
WHERE KHOA.TENKHOA = 'Cong nghe thong tin' AND GIAOVIEN.MAKHOA=KHOA.MAKHOA

11. Cho bit danh sch cc lp thuc khoa CNTT. 12. Lp Tin A trong hc k 1 nm hc 2001-2002 hc nhng mn hc no v do gio vin no ging dy. 13. Cho bit h tn v a ch lin h ca cc sinh vin lp Tin A. 14. Gio vin Nguyn Vn A trong nm hc 2001-2002 dy nhng lp no vi s tit l bao nhiu. 15. Cho bit bng phn cng ging dy ca cc gio vin thuc khoa CNTT. 16. Cho bit im thi cc mn hc ca sinh vin Le Van A. 17. Cho bit im thi mn C s d liu ca cc sinh vin lp Tin A. 18. nh mc gi chun ln nht ca gio vin khoa CNTT l bao nhiu. 147

SELECT MAX(DINHMUCGIOCHUAN) FROM GIAOVIEN,KHOA WHERE KHOA.TENKHOA='Cong nghe thong tin' AND GIAOVIEN.MAKHOA=KHOA.MAKHOA 19. Cho bit s s ca cc lp. SELECT LOP.MALOP,TENLOP,COUNT(MASV) FROM LOP,SINHVIEN WHERE LOP.MALOP=SINHVIEN.MALOP GROUP BY LOP.MALOP,TENLOP 20. Nhng sinh vin no ca lp Tin A phi thi li mn Pascal. 21. Cho bit tng s tit dy ca cc gio vin trong nm hc 2001-2002 SELECT GIAOVIEN.MAGV,HODEM,TEN,SUM(SOTIET) FROM GIAOVIEN,GIANGDAY WHERE NAMHOC='2001-2002' AND GIAOVIEN.MAGV=GIANGDAY.MAGV GROUP BY GIAOVIEN.MAGV,HODEM,TEN 22. Cho bit h tn cc sinh vin v tng s n v hc trnh nhng mn hc m sinh vin phi thi li. 23. Gio vin Nguyn Vn B dy lp Tin A nhng mn hc no, vo hc k v nm hc no. 24. Cho bit im trung bnh nm hc 2001-2002 ca cc sinh vin lp Tin A. 25. Nhng gio vin no khng thuc khoa CNTT c ging dy lp Tin A. 26. Nhng sinh vin no ca lp Tin A c im ln 1 mn Pascal cao nht. SELECT HODEM,TEN,DIEMLAN1 FROM LOP,SINHVIEN,DIEMTHI,MONHOC WHERE TENLOP='Tin A' AND 148

TENMONHOC='Pascal' AND LOP.MALOP=SINHVIEN.MALOP AND SINHVIEN.MASV=DIEMTHI.MASV AND DIEMTHI.MAMONHOC=MONHOC.MAMONHOC AND DIEMLAN1 = ( SELECT MAX(DIEMLAN1) FROM LOP,SINHVIEN,DIEMTHI,MONHOC WHERE TENLOP='Tin A' AND TENMONHOC='Pascal' AND LOP.MALOP=SINHVIEN.MALOP AND SINHVIEN.MASV=DIEMTHI.MASV AND DIEMTHI.MAMONHOC=MONHOC.MAMONHOC) 37. Gio vin no c tng s tit dy nhiu nht. SELECT GIAOVIEN.MAGV,HODEM,TEN,SUM(SOTIET) FROM GIAOVIEN,GIANGDAY WHERE GIAOVIEN.MAGV=GIANGDAY.MAGV GROUP BY GIAOVIEN.MAGV,HODEM,TEN HAVING SUM(SOTIET)=(SELECT TOP 1 SUM(SOTIET) FROM GIANGDAY GROUP BY MAGV ORDER BY 1 DESC) 38. Trong nm hc 2001-2002, nhng gio vin no dy vt chun (c tng s gi dy ln hn s gi chun). 29. Cho bit danh sch sinh vin cc lp v s s ca mi lp. 30. Cho bit danh sch cc gio vin ca cc khoa v tng s gio vin ca mi khoa. 31. Vi mi gio vin, hy cho bit danh sch cc mn hc c phn cng ging dy, s lng mn hc c phn cng v tng s tit dy.

149

Cac bang di y dc s dung t chc lu tr thng tin quan ly cng vic ban hang trong mt ca hang
MATHANG MAHANG TENHANG DONGIA DONVITINH SOLUONG CHITIETHOADON SOHD MAHANG SOLUONG NHANVIEN MANV HOTEN NGAYSINH DIACHI DIENTHOAI HSLUONG HOADON SOHD NGAYLAP MANV TENKHACH DIACHI DIENTHOAI

S dung cu lnh SELECT, hay thc hin cac yu cu sau: 32. Xem thng tin trong tng bang liu. 33. Hin th thng tin v cac mt hang hin co trong cua hang va sp xp kt qua theo n v tnh cua mi mt hang. 34. Cho bit thng tin v cac nhn vin hin ang lam vic trong cua hang. 35. Hay cho bit nhng nhn vin nao co cung s in thoai va a ch vi nhau. 36. Cho bit nhn vin nao a lp hoa n ban hang cho khach hang co tn la 'Nguyen Thi C'. 37. Nhng khach hang nao a tng mua B cua ca hang. 38. Cho bit John Smith a mua nhng mt hang nao va tng s tin ma ng ta phai tra la bao nhiu.

150

39. Hin th thng tin v cac khach hang a mua hang cua ca hang trong thang 6 nm 2001. 40. Thng k xem trong nm 2000, mi mt hang ban c vi tng s lng bao nhiu mi thang. 41. Cho bit khach hang nao mua hang nhiu nht va vi s lng la bao nhiu. 42. Mt hang Sa trong nm 2001 c khach hang nao mua nhiu nht va vi s lng la bao nhiu. 43. Trong nm 2000, nhn vin nao a ban c hang nhiu nht. 44. Cho bit mi hoa n bao gm nhng mt hang nao, s lng bao nhiu va tng s tin cua mi hoa n. 45. Cho bit trong nm 2000 cac mt hang a oc ban cho nhng khach hang nao va tng s lng hang a ban c la bao nhiu.

151

TI LIU THAM KHO


Ullman, J.D., Nguyn l cc h c s d liu v h tri thc - tp 1, 2, 3, Trn c Quang bin dch, Nh xut bn Thng k, 1999. [2]. H Thun, H Cm H, Cc h c s d liu L thuyt v thc hnh - tp 1, 2, NXB Gio dc, 2004 [3]. Nguyn Kim Anh, Nguyn l cc h c s d liu, NXB i hc Quc gia H Ni, 2004 [4]. Trung Tun, C s d liu, NXB Gio dc, 1998. [5]. Nguyn Tu, Gio trnh C s d liu, i hc Quc gia H Ni, 1999. [6]. Nguyn B Tng, C s d liu - L thuyt v thc hnh, NXB Khoa hc k thut, 2001. [7]. L Tin Vng, Nhp mn c s d liu quan h, NXB Khoa hc k thut, 1996. [8]. Anstey, D., E. Bertino, E. Marcros, Advanced Database Technology and Design, Artech House, 2000. [9]. Communication of the ACM, Special Issue on Next-Generation Database Systems, Vol. 34, No. 10, 1991. [10]. Date, C. J., An Introduction to Database Systems, Wesley, 1994. [11]. Elmasri, R., S. B. Navathe, Fundamentals of Database Systems, 5th Edition, Addison Wesley, 2006. [1].

152

MC LC
LI NI U .......................................................................................................... 1 CHNG 1. KHI QUT V C S D LIU .................................................... 2
1.2. Cc mc tru tng ha m hnh c s d liu ..................................................................................... 3 1.3. Lc v th hin.................................................................................................................................... 4 1.4. Cc ngn ng CSDL .................................................................................................................................. 4 1.5. Cc m hnh c s d liu ......................................................................................................................... 6 1.6. Quy trnh thit k c s d liu ................................................................................................................ 6

CHNG 2. M HNH THC TH-MI QUAN H .............................................. 7


2.1. Gii thiu .................................................................................................................................................... 7 2.2. Cc thnh phn c bn .............................................................................................................................. 8 2.2.1. Tp thc th ......................................................................................................................................... 8 2.2.2. Mi quan h gia cc tp thc th ....................................................................................................... 9 2.3. Phn loi mi quan h ............................................................................................................................. 10 2.3.1. Mi quan h nh nguyn .................................................................................................................... 10 2.3.2. Mi quan h Is-a (mi quan h k tha) ............................................................................................ 12 2.3.3. Mi quan h phn x (mi quan h quy) ...................................................................................... 13 2.3.4. Mi quan h a nguyn ..................................................................................................................... 14

CHNG 3. M HNH QUAN H........................................................................ 16


3.1. Quan h - lc quan h ...................................................................................................................... 16 3.1.1. Quan h (Relation) ............................................................................................................................ 16 3.1.2. Lc quan h (Relational Schema) .............................................................................................. 16 3.2. Kho ca quan h .................................................................................................................................... 17 3.3. Chuyn i m hnh E-R sang m hnh quan h................................................................................... 18 3.4. i s quan h .......................................................................................................................................... 25 3.4.1. Php hp (Union) .............................................................................................................................. 25 3.4.2. Php giao (Intersection)..................................................................................................................... 25 3.4.3. Php hiu (Difference) ...................................................................................................................... 26 3.4.4. Tch Descartes (Cartersian Product) .................................................................................................. 26 3.4.5. Php chiu (Projection) ..................................................................................................................... 27 3.4.6. Php chn (Selection) ........................................................................................................................ 27 3.4.7. Php ni (Join) .................................................................................................................................. 27 3.4.8. Php chia (Division) .......................................................................................................................... 28

CHNG 4. M HNH HNG I TNG .................................................... 30


4.1. Gii thiu chung ....................................................................................................................................... 30

153

4.2. Cc thnh phn c bn ............................................................................................................................ 30 4.2.1. Lp, i tng v nh danh i tng ............................................................................................. 30 4.2.2. Thuc tnh v phng thc ............................................................................................................... 30 4.2.3. Phn cp lp v s k tha ................................................................................................................ 32 4.3. Chuyn i m hnh ER sang m hnh hng i tng ..................................................................... 32

CHNG 5. L THUYT THIT K C S D LIU QUAN H ..................... 36


5.1. Gii thiu .................................................................................................................................................. 36 5.2. C s l thuyt ca ph thuc hm ........................................................................................................ 39 5.2.1. Qui c v cc k hiu ...................................................................................................................... 39 5.2.2. Ph thuc hm (Functional Dependency) ......................................................................................... 39 5.2.3. H tin Amstrong ......................................................................................................................... 41 5.2.4. Bao ng ca tp thuc tnh .............................................................................................................. 42 5.2.5. Thut ton tnh bao ng ca tp thuc tnh ..................................................................................... 43 5.3. Ph ti thiu (ph cc tiu) ..................................................................................................................... 44 5.4. Cc thut ton xc nh kho ca mt lc quan h ...................................................................... 48 5.4.1. Cc thut ton xc nh mt kho ca mt lc quan h ............................................................. 48 5.4.2. Gii thut xc nh tt c cc kho ca mt lc quan h. ........................................................... 51 5.5. L thuyt phn tch ................................................................................................................................. 53 5.5.1. Phn tch bo ton thng tin ............................................................................................................. 54 5.5.2. Phn tch bo ton ph thuc hm .................................................................................................... 57 5.6. L thuyt chun ho ................................................................................................................................ 60 5.6.1. Dng chun 1 (1NF) .......................................................................................................................... 61 5.6.2. Dng chun 2 (2NF) .......................................................................................................................... 61 5.6.3. Dng chun 3 (3NF) .......................................................................................................................... 63 5.6.4. Dng chun BCNF (Boyce - Codd Normal Form) ............................................................................ 68

CHNG 6. GII THIU V SQL ....................................................................... 75


6.1. nh ngha d liu trong SQL v cc kiu d liu. ............................................................................... 75 6.1.2. Lnh to bng trong SQL .................................................................................................................. 77 6.1.3. Cc kiu d liu trong SQL ............................................................................................................... 79 6.2. Ch nh nhng rng buc trong SQL ................................................................................................... 80 6.2.1. Rng buc vng v gi tr mc nh ca thuc tnh .......................................................................... 80 6.2.2. Kho ch nh v cc rng buc ton vn .......................................................................................... 82 6.2.3. t tn cho nhng rng buc............................................................................................................. 84 6.2.4. Ch nh nhng rng buc trn nhng b s dng CHECK .............................................................. 84 6.3. Thay i lc bo co trong SQL ..................................................................................................... 84 6.3.1. Lnh DROP ....................................................................................................................................... 84 6.3.2. Lnh ALTER ..................................................................................................................................... 85 6.4. Truy vn c bn trong SQL .................................................................................................................... 87 6.4.1. Cu trc truy vn c bn SELECT-FROM-WHERE ........................................................................ 87 6.4.2. Cc tn, b danh v cc bin b thuc tnh o ................................................................................... 90 6.4.3. Khng s dng mnh WHERE v cch s dng du * ................................................................ 92 6.4.4. Cc bng nh cc tp hp trong SQL ................................................................................................ 93 6.4.5. S thch hp mu chui con v ton t s hc .................................................................................. 95 6.4.6. Th t ca nhng kt qu truy vn.................................................................................................... 97

154

6.5. Nhng truy vn SQL phc tp ............................................................................................................... 98 6.5.1. Nhng so snh ko theo NULL v logic ba tr .................................................................................. 98 6.5.2. Nhng so snh truy vn lng nhau, nhiu b v nhiu tp hp ......................................................... 99 6.5.3. Nhng truy vn lng nhau tng quan ............................................................................................ 102 6.5.4. Hm EXISTS v UNIQUE trong SQL ............................................................................................ 103 6.5.5. Nhng tp hp hin v i tn cc thuc tnh trong SQL ............................................................... 105 6.5.6. Kt ni cc quan h trong SQL v cc kt ni ngoi....................................................................... 106 6.5.7. Mt s hm gp trong SQL ............................................................................................................ 108 6.5.8. Cc mnh GROUP BY v HAVING .......................................................................................... 109 6.5.9. Tho lun v kt lun ca truy vn SQL ......................................................................................... 112 6.6. Cc lnh INSERT, DELETE v UPDATE .......................................................................................... 112 6.6.1. Lnh chn (INSERT)....................................................................................................................... 112 6.6.2. Lnh Xa (DELETE) ...................................................................................................................... 114 6.6.3. Lnh cp nht (UPDATE) ............................................................................................................... 115 6.7. Ch nh cc rng buc ASSERTION v TRIGGERS ....................................................................... 115 6.8. Khung nhn trong SQL......................................................................................................................... 117 6.8.1. Khi nim v khung nhn trong SQL .............................................................................................. 117 6.8.2. To View ......................................................................................................................................... 117 6.8.3. Thc thi v cp nht View............................................................................................................... 119 6.9. Mt s tnh nng khc ca SQL ........................................................................................................... 120

BI TP NHP MN C S D LIU............................................................. 121 TI LIU THAM KHO ...................................................................................... 152

155

You might also like