Giao Trinh Nhap Mon CSDL - Thay Quang

Embed Size (px)

Citation preview

LI NI UNgy 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 LIU1.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

m

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)

4

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 H2.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 LopNgaySinh

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

R

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: NgiCon(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)

NgiChong(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)

NguoiAiYeu(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

n

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

n

MonHoc

15

Chng 3. M HNH QUAN H3.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 = 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 = {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 = , 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 = v R2 = . 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 ERMaGV 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-RMaSV 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-RNam 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-1MaGV 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)

NguoiChong(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)

NguoiBo(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)

NguoiAiYeu(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-RNamHoc MaGV HT NS (n,n) (n,n) MaMH

GiaoVien(n,n)

Day

MHMaLop

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 = , 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 bCD(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 cA=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 properties {khai bo cc thuc tnh} Operations {khai bo cc phng thc} end . V d: M hnh ER m rngId_SV HT NS ST NN

SV

(1 , 1)

Hoctai

(1 , n)

LOPSiso

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

GVHT

Giang

MonTenMH

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: : : V d:Id_GV HT TGId_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: : V d: M hnh ER

Id_gv GIAOVIEN Hoten(0, n)

DAY(1, n) (1, n)

Thoigian LOP Id_lop MONHOC Id_monhocM 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 LIUQUAN HNh 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 AnTrn 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

1

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 = 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 = ;(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 = , 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 = , 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 = th R phi s tha tt c cc ph thuc hm trong F. nh ngha: (Suy din logic) Cho lc quan h R = , 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 = . 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 = 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 = , 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 = 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 = 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 = , 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 = , 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 = , 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 = . 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 = 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 = , 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 = 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 = , 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 = 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 = v G tng ng vi F th ta c th dng G thay cho F trong lc quan h R. Tc l R = = 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 = , 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=. 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 = , 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} AV d:

R = , 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 = 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 = . 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 = . 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 = Lu : Ph ti thiu ca mt ph thuc hm l khng duy nht V d: Cho R = , 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 = 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 = 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. 47V 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 = 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 = 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 =

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 = 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 = , cho X U. Khi , nu X l kho ca R th: (U \ P) X (U \ P) (T P) Trong : T = U XX YF

P=

X YF

U

Y

ngha: nh l ny cho php ta thu hp phm vi tm kim kho V d: Cho R = , 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 = , 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 = Ra: Tm 1 kho ca R Phng php:

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

50

V d: R = , 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 = + Siu kha S Ra: Tm kho K ca R nhn S lm siu kho Phng php: Function Key(R, S) Begin K := S For do If 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 = 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 AEC51

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 = . 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 = 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 do For do begin T := X (K \ Y) ; If 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 = 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 = , cc lc con R1 = , R2 = , , Rn = . 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 )

UUi =1

n

i

= U.

V d: Cho R = 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 = . 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 = 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 = , 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 = . 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 = 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 liBc 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 = , 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 = , = (R1,R2,,Rk) l phn tch trn R vi Ri =

(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

UFi =1

k

i

V d: Cho R = , trong : U = ABCD, F = {A BCD, C D}, v = (R1, R2), vi R1 = , R2 = . Do G = {C D, A BC} tng ng F nn l php phn tch bo ton ph thuc hm. Nu cho trc R = , = (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 = 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 = , 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 = , 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:

UFi =1

k

i

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 = = (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 XG+ = Z; End; V d: Cho R = , 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 hmLu : Mt phn tch bo ton thng tin nhng c th khng bo ton ph thuc hm. V d: R = , 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 = , 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= . 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 = , 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 = , 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 = . 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 = 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 = , 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 = 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 = 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 = vi U0 = X Ri = 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 = , 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 = vi U0 = A , F0 = R1 = R2 = R3 = < ACD, {CDA, AD, AC}> R4 = 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 = , 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 = . 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 = , 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 = Yes/No

Phng php: Procedure KiemTraBCNF(U, F); Begin For 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 3NFBCNF

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 =

= (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 Then begin BCNF_PTH(XA, XA(F)); BCNF_PTH(U\A, U\A(F)); end; End;V d: Cho R = , 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:

R

R1 = R1 BCNF

R2 = 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 = BCNF. Chng minh: Gi s R = , 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 = 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 = , 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 =

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 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 SQL6.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 AUTHORIZATION 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

EMPLOYEEFnameJohn Franklin Alicia Jennifer Ramesh Joyce Ahmad James

MvinitB T J S K A V E

LnameSmith Wong Zelaya Wallace Narayan English Jabbar Borg

Ssn123456789 333445555 999887777 987654321 666884444 453453453 987987987 888665555

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

Address731Fondren,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

SexM M F F M F M M

Salary30000 40000 25000 43000 38000 25000 25000 55000

Super_ssn333445555 888665555 987654321 888665555 333445555 333445555 987654321 NULL

Dno5 5 4 4 5 5 4 1

DEPARTMENT Dname Dnumber Mgr_ssn Mgr_start_dateResearch Administration Headquarters 5 4 1 333445555 987654321 888665555 1988-05-22 1995-01-01 1981-06-19

DEPT_LOCATIONS Dnumber Dlocation1 4 5 5 5 Houston Stafford Bellaire Sugarland Houston

WORKS_ON Pno Essn123456789 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

Hours32.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 []. (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 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 = 30000) AND (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 LEFT|RIGHT|FULL [OUTER] JOIN ON

- 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;

FROMQ22: 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 berProductX 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

Pno1 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 berProductY ProductY ProductY Computerization Computerization Computerization Reorganization Reorganization Reorganization 2 2 2 10 10 10 20 20 20 ...

Pno2 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 FROM [ WHERE ] [ GROUP BY < Thuc tnh nhm> ] [ HAVING ] [ ORDER BY ];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 EMPLOYEEVALUES (Richard, K, Marini, 653298653, 1962-12-30,

112

98 Oak Forest, Katy, TX, M, 37000, 653