You are on page 1of 13

7.

Ti u ha cu truy vn bng heuristic


Trong phn ny chng ta tho lun cc k thut ti u ha p dng cc qui tc heuristic thay i s th hin bn trong ca mt truy vn thng s dng hnh thc mt cy truy vn hoc mt cu trc d liu th truy vn nhm ci tin s thc hin ca n. S phn tch t mt truy vn mc cao u tin to ra mt s th hin bn trong ban u ca n, sau c ti u theo cc qui tc heuristic. Tip theo l mt cy thc hin truy vn c to ra thc hin nhm cc php ton da vo cc ng dn truy cp sn c trn cc file cn truy vn. Mt trong nhng qui tc heuristic chnh l p dng cc php chn v chiu trc khi p dng php ni hoc cc php ton hai ngi khc, bi v kch thc ca file kt qu t mt php ton hai ngi nh php ni thng gp nhiu ln so vi kch thc ca cc file u vo. Cc php chn v chiu lm gim kch thc ca mt file v v vy nn c p dng trc mt php ni hay php ton hai ngi khc. Trong phn 7.1, chng ta s gii thiu cc khi nim cy truy vn v th truy vn. Cc khi nim ny lm nn tng i vi cc cu trc d liu c s dng i vi s th hin bn trong ca cc truy vn. Mt cy truy vn c s dng trnh by mt biu thc i s quan h hoc biu thc i s quan h m rng, ngc li mt th truy vn c s dng trnh by mt biu thc tnh ton quan h. Trong phn 7.2 chng ta ch ra cch s dng cc quy tc ti u ha heuristic chuyn mt cy truy vn thnh mt cy truy vn tng ng, cy ny trnh by mt biu thc i s quan h khc hiu qu hn cy ban u nhng cho cng kt qu . Chng ta cng tho lun v tnh tng ng ca cc biu thc i s quan h khc nhau. Cui cng phn 7.3 trnh by cch xy dng cc cy thc hin truy vn. 7.1. Khi nim cy truy vn v th truy vn Mt cy truy vn l mt cu trc d liu dng cy tng ng vi mt biu thc i s quan h. Cc quan h u vo ca cu truy vn c biu din l cc nt l ca cy, cc php ton i s quan h l cc nt bn trong. S thc hin ca cy truy vn bao gm s thc hin ca mt nt bn trong mi ln cc ton hng ca n c v sau thay th nt bn trong

bi quan h kt qu ca php ton. S thc hin kt thc khi nt gc c thc hin v to ra quan h kt qu cho cu truy vn. V d: Cho lc c s d liu quan h: EMPLOYEE(Fname, Minit, Lname, Ssn, Bdate, Address, Sex, Salary, Super_ssn, Dno) DEPARTMENT(Dname, Dnumber, Mgr_ssn, Mgr_start_date) DEPT_LOCATIONS(Dnumber, Dlocation) PROJECT(Pname, Pnumber, Plocation, Dnum WORKS_ON(Essn, Pno,Hours) DEPENDENT(Essn, Dependent_name, Sex, Bdate, Relationship) Vi truy vn Q1 nh sau: Cho bit project number, department number, last name, address v birthday ca ngi qun l department ca mi d n nm Stafford. Truy vn ny tng ng vi biu thc i s quan h sau:
Pnumber , Dnum , Lname, Address , Bdate ((( Plocation=Stafford(PROJECT))
Dnum=Dnumber

(DEPARTMENT))

Mgr_ssn = Ssn

(EMPLOYEE))

Ta c truy vn SQL tng ng: SELECT FROM WHERE P.Pnumber, P.Dnum, E.Lname, E.Address, E.Bdate PROJECT AS P, DEPARTMENT AS D, EMPLOYEE AS E P.Dnum = D.Dnumber AND D.Mgr_ssn = E.Ssn AND P.Plocation =Stafford * Cch chuyn mt truy vn php tnh quan h thnh mt cy truy vn tng ng vi biu thc i s quan h: + Cc nt l khc nhau c to cho mi bin b khc nhau (tng ng mt quan h). Trong SQL cc nt l chnh l cc quan h trong mnh FROM. + Nt gc c to ra xem bi mt php chiu ln cc thuc tnh kt qu. Trong SQL nt gc c xc nh qua mnh SELECT. + iu kin (mnh WHERE trong SQL) c bin i thnh dy cc php ton i s thch hp (php chn, ni, php hp, v.v...) i t l n gc, c th thc
h hin theo th t xut hin ca cc tn t v cc php ton.

Hnh 4a biu din cy truy vn ca truy vn Q1, c ba quan h PROJECT, DEPARTMENT v EMPLOYEE c th hin bi cc nt l P, D v E. Cc php i s quan h ca biu thc c biu din bi cc nt bn trong cy. Khi cy truy vn ny c thc hin, nt (1) phi bt u thc hin trc nt (2) bi v mt s b kt qu ca php (1) phi sn sng trc khi chng ta c th bt u thc hin php (2). Tng t, nt (2) phi bt u thc hin v to ra cc kt qu trc khi nt (3) c th bt u thc hin, Chng ta c th thy rng, cy truy vn trnh by mt th t c th ca cc php trong qu trnh thc hin cu truy vn. Mt s th hin khc ca mt truy vn l th truy vn. Hnh 4c biu din th truy vn ca truy vn Q1. Cc quan h trong truy vn c th hin bi cc nt quan h c biu din bng cc vng trn n. Cc gi tr hng, tiu biu l cc iu kin chn trong cu truy vn, c biu din bi cc nt hng c th hin bng cc vng trn kp hoc hnh oval. Cc iu kin ni v chn c th hin bi cc cnh ca th. Cui cng cc thuc tnh c ly ra t mi quan h c biu din trong cc du mc vung trn mi quan h.
(a) P.Pnumber, P.Dnum, E.Lname, E.Address, E.Bdate P (3) D D.Mgr_ssn = E.Ssn (2)
P.Dnum=D.Dnumber

EMPLOYEE

(1) P.Plocation=Stafford P (b) D PROJECT P.Pnumber, P.Dnum, E.Lname, E.Address, E.Bdate P.Dnum = D.Dnumber AND D.Mgr_ssn = E.Ssn AND P.Plocation=Stafford DEPARTMENT


P D E

(c) [P.Pnumber, P.Dnum] P P.Dnum = D.Dnumber P.Plocation=Stafford D

[E.Lname, E.Address, E.Bdate] D.Mgr_ssn = E.Ssn E

Hnh 4. Hai cy truy vn ca Q1.


Stafford (a) Cy truy vn tng ng vi biu thc i s quan h, (b) Cy truy vn ban u ng vi

SQL. (c) th truy vn ca Q1 S biu din bng th truy vn khng cho bit mt th t thc hin trn cc php, n ch gm mt th n tng ng vi mi truy vn. Mc d mt s k thut ti u ho da vo cc th truy vn, nhng hin nay hu ht mi ngi u chp nhn rng cc cy truy vn l thch hp hn bi v trong thc t vic ti u ho cu truy vn cn phi ch ra th t thc hin ca cc php. 7.2. Ti u ho cy truy vn bng heuristic Thng thng, nhiu biu thc i s quan h c th tng ng nhau nn cc cy truy vn khc nhau cng c th tng ng. l chng c th ng vi cng mt cu truy vn. Phn tch cu truy vn s to ra mt cy truy vn ban u chun ng vi truy vn SQL m khng s dng bt c s ti u ho no. V d i vi mt truy vn chn-chiu-ni nh truy vn Q1 trn, cy ban u c ch ra trong hnh 4(b). Tch cc ca cc quan h ch r trong mnh FROM c p dng u tin, sau cc iu kin chn v chiu ca mnh WHERE c p dng, cui cng thc hin php chiu ln cc thuc tnh mnh SELECT. Mt cy truy vn trnh by nh th ny l khng hiu qu nu c thc hin mt cch trc tip, do cc php tch Cc. V d nh nu cc quan h PROJECT, DEPARTMENT v EMPLOYEE c cc kch thc bn ghi ln lt l 100, 50 v 150 bytes, cha 100, 20, v 5000 b th kt qu ca tch Cc s bao gm 10 triu b vi mi b c kch thc l 300 bytes. Tuy nhin, cy truy vn trong hnh 4(b) l mt dng chun n gin m c th to ra c mt cch d dng. By gi cng vic ca ti u ho cu truy vn bng

heuristic l chuyn i cy truy vn ban u ny thnh cy truy vn cui cng thc hin c hiu qu hn. Vic ti u ho phi bao gm cc qui tc tng ng gia cc biu thc i s quan h m c th c p dng cho cy truy vn ban u. Vic ti u ho cu truy vn bng cc qui tc heuristic chnh l s dng cc biu thc tng ng ny chuyn cy truy vn ban u thnh cy truy vn cui cng ti u. u tin chng ta tho lun cch chuyn i mt cy truy vn bng heuristic, sau chng ta tho lun cc qui tc chuyn i chung v ch ra cch m chng c th c s dng trong vic ti u ho. V d v vic chuyn i mt cu truy vn. Xt truy vn Q2 nh sau:Tm tn ca tt c cc EMPLOYEE sinh sau 1957, lm vic trong d n c tn l Aquarius. Truy vn ny c th vit li bng SQL nh sau: SELECT FROM WHERE Lname EMPLOYEE, WORKS_ON, PROJECT Pname = AquariusAND Pnumber = Pno AND Essn = Ssn AND Bdate >1957-12-31
Pname = Aquarius AND Pnumber = Pno AND EssnLname AND Bdate >1957-12-31 = Ssn Bdate >1957-12-31;
P.Plocation=Stafford

(a)


(b) EMPLOYEE
P.Plocation=Stafford

PROJECT Lname Pnumber = Pno WORKS_ON Bdate >1957-12-31;

Essn = Ssn Pname = Aquarius PROJECT

Bdate >1957-12-31 EMPLOYEE

WORKS_ON

(c)

Lname Essn = Ssn

Pnumber = Pno Bdate >1957-12-31 B EMPLOYEE

Pname = Aquarius PROJECT

WORKS_ON

( (d)

Lname
Essn = Ssn Pnumber = Pno

Bdate >1957-12-31 B EMPLOYEE

Pname = Aquarius PROJECT

WORKS_ON

(e)

Lname
Essn = Ssn

Essn
Pnumber = Pno

Ssn, Lname

Bdate >1957-12-31 Pnumber Pname = Aquarius PROJECT Essn, Pno EMPLOYEE

W WORKS_ON

Hnh 5. Cc bc chuyn i mt cy truy vn trong sut qu trnh ti u ha bng cch s dng heuristic. (a) Cy truy vn ban u ng vi SQL.(b)Chuyn cc php chn xung di cy truy vn. (c)u tin p dng cc php chn c gii hn hn.(d)Thay th tch Cc v php chn bng cc php ni.(e)Chuyn cc php chiu xung di cy truy vn. Cy truy vn ban u i vi Q2 c ch ra trong hnh 5(a). S thc hin cy truy vn ny mt cch trc tip u tin s to ra mt file rt ln bao gm tch cc ca cc file u vo EMPLOYEE, WORKS_ON, v PROJECT. Tuy nhin truy vn ny ch cn mt bn ghi t quan h PROJECT - i vi project Aquarius-v ch cc bn ghi ca EMPLOYEE c ngy sinh sau 1957-12-31. Hnh 5(b) ch ra mt cy truy vn ci tin m u tin l p dng cc php chn gim s b xut hin trong tch Cc. Mt s ci tin na t c l chuyn v tr ca cc quan h EMPLOYEE v PROJECT trong cy, nh ch ra trong hnh 5 (c). iu ny s dng thng tin m Pnumber l mt thuc tnh kho ca quan h PROJECT, v v vy php chn trn quan h PROJECT s ly mt bn ghi duy nht. Chng ta c th ci tin hn na cy truy vn bng cch thay th bt c php tch cc no m theo sau l mt iu kin ni vi mt php ni, nh ch ra trong hnh 5 (d). Mt s ci tin khc l ch gi li cc thuc tnh cn cho cc php theo sau trong cc quan h trung gian, v d s dng cc php PROJECT( ) sm khi c th trong cy

truy vn nh ch ra trong hnh 5(e). iu ny lm gim cc thuc tnh (ct) ca cc quan h trung gian, ngc li cc php chn lm gim cc b (bn ghi). Nh gii thch trong v d trn, mt cy truy vn c th c chuyn i tng bc mt thnh cy truy vn khc thc hin hiu qu hn. Tuy nhin, chng ta phi chc chn rng cc bc chuyn i lun lun dn n mt cy truy vn tng ng. lm c iu ny, vic ti u ho cu truy vn phi bit cc qui tc chuyn i no duy tr s tng ng ny. Chng ta s tho lun mt s qui tc chuyn i ny trong phn tip theo. Cc qui tc chuyn i tng qut ca cc php ton i s quan h C nhiu qui tc chuyn i cc php ton i s quan h thnh cc biu thc tng ng. y chng ta quan tm n ngha ca cc php ton v cc quan h kt qu. V vy, nu hai quan h c cng tp thuc tnh theo mt th t khc nhau nhng hai quan h trnh by cng lng thng tin th chng ta xem l cc quan h tng ng. Phn ny chng ta gii thiu mt s qui tc chuyn i c ch trong vic ti u ha cu truy vn (khng chng minh): 1. Gp dy php chn (Cascade of ). Mt iu kin chn hi c th c tch ra thnh mt dy cc php chn ring bit:
C1 AND C2 AND AND Cn(R) C1 ( C2 (...( cn ( R))...))

2. Tnh giao hon ca php chn (Commutativity of ). Php c tnh giao hon
C1 ( C2 ( R )) C2 ( C1 ( R ))

3. Gp dy php chiu (Cascade of ). Trong mt dy cc php , c th loi b tt c cc php khc, ch gi li php cui cng.
List1( List2(( Listn(R)))) List1(R)

4. Tnh giao hon ca php chn vi php chiu (Commuting with ). Nu iu kin chn c ch bao gm cc thuc tnh A1, ,An trong danh sch php chiu th hai php c th giao hon vi nhau:
A1 , A2 ,..., An ( c ( R )) c ( A1 , A2 ,..., An ( R ))

5. Tnh giao hon ca php ni / tch Cc (Commutativity of php u c tnh giao hon R
c

/ ). Php

cng nh

S S

R S S R Ch rng, mc d th t ca cc thuc tnh c th khng ging nh trong cc quan h kt qu t hai php ni (hoc hai php tch Cc), nhng ngha l ging nhau bi v th t ca cc thuc tnh l khng quan trng trong quan h. 6. Tnh giao hon ca php chn v php ni (hoc tch Cc) (Commuting with (hoc )). Nu tt c cc thuc tnh trong iu kin chn c ch bao gm cc thuc tnh ca mt trong hai quan h ca php ni ( y l R) th ta c:
C (R

S) ( C (R))

Nh mt s la chn, nu iu kin chn c c th c vit li l (c1 AND c2), y c1 ch bao gm cc thuc tnh ca R v iu kin c2 ch bao gm cc thuc tnh ca S, ta c:
C (R

S) ( C 1 (R))

( C 2 (S)) bi php .

Tng t ta cng c qui tc mi bng cch thay php (hoc )). Gi s rng danh sch php chiu l

7. Tnh giao hon ca php chiu v php ni (hoc tch Cc) (Commuting with

L ={A1, ..., An , B1, ..., Bm}, y A1, ..., An l cc thuc tnh ca R v B1, ..., Bm l cc thuc tnh ca S. Nu iu kin ni c ch bao gm cc thuc tnh trong L th ta c: L(R
c

S) (A1, ..., An(R))

(B1, ..., Bm(S))

Nu iu kin ni c cha cc thuc tnh khng thuc L th cc thuc tnh ny phi c thm vo danh sch php chiu v mt php chiu cui cng cng c thm vo. V d, nu cc thuc tnh An+1, ..., An+k ca R v Bm+1, ..., Bm+p ca S c bao gm trong iu kin ni c nhng khng thuc danh sch cc thuc tnh chiu L, th ta c: L(R
c

S) L((A1, ..., An,An+1, ..., An+k(R)) bi .

(B1, ..., Bm,Am+1, ..., Am+p(S)))

i vi php khng c iu kin c nn qui tc chuyn i u tin lun p dng c bng cch thay
c

8. Tnh giao hon ca cc php ton tp hp (Commutativity of set operations). Cc php tp hp nh v l c tnh giao hon nhng php - (php tr) th khng c tnh giao hon.

9. Tnh kt hp ca cc php ton (R S) T R (S T)

, , v (Associativity of

, , v ). Gi s

i din cho mt trong bn php , chng ta c: 10. Tnh giao hon ca php chn vi cc php ton tp hp (Commuting with set operations). Php giao hon vi , v -. Nu i din cho mt trong ba php , chng ta c:
C (R S) ( C (R)) ( C (S))

11. Tnh giao hon ca php chiu vi php hp (The operation commutes with ). L(R S) (L(R)) (L(S)) 12. Chuyn mt dy cc php chn, tch Cc thnh php ni (Converting a (, ) sequence into
C (R S)

). Nu iu kin c ca mt php m theo sau l mt php tng ng vi nh sau:

mt iu kin ni, c th chuyn dy (, ) thnh mt php

(R

S)

Ngoi ra cn c nhiu php chuyn i khc. V d nh, mt iu kin chn hoc chiu c c th chuyn thnh mt iu kin tng ng bng cch s dng cc qui tc sau (DeMorgan): NOT (c1 AND c2) NOT (c1 OR c2)

(NOT c1) OR (NOT c2)

(NOT c1) AND (NOT c2)

Cc bc ca mt thut ton ti u ho i s s dng heuristic By gi chng ta c th trnh by cc bc ca mt thut ton s dng mt s qui tc trn chuyn i mt cy truy vn ban u thnh mt cy ti u ho thc hin hiu qu nht trong hu ht mi trng hp. Thut ton s dn n s chuyn i tng t nh trong v d ca hnh 5. Cc bc ca thut ton nh sau: 1. S dng qui tc 1, phn r bt c php chn no c iu kin hi thnh mt dy cc php chn. iu ny cho php chuyn cc php chn xung cc nhnh khc ca cy. 2. S dng qui tc 2, 4, 6 v 10 chnh l tnh giao hon ca php chn vi cc php khc, chuyn mi php chn trn xung pha di cy truy vn khi c th. 3. S dng qui tc 5 v 9 chnh l tnh giao hon v kt hp ca cc php ton hai ngi, sp xp li cc nt l ca cy bng cch s dng tiu chun sau. u tin, xc nh v tr ca cc

quan h nt l vi cc php chn gii hn nht v vy chng c thc hin u tin trong cy truy vn. nh ngha ca php chn gii hn nht c th hiu hoc l cc php to ra mt quan h vi s b t nht hoc l quan h vi kch thc nh nht. Th hai, chc chn rng th t ca cc nt l khng to ra cc php tch Cc; v d nh nu hai quan h vi php chn gii hn nht khng c mt iu kin ni trc tip gia chng th chng ta c th thay i th t ca cc nt l trnh tch Cc. 4. S dng qui tc 12, kt hp mt php tch Cc vi mt php chn theo sau trong cy truy vn thnh mt php ni, nu iu kin ca php chn tng ng vi iu kin ni. 5. S dng qui tc 3, 4, 7, v 11 chnh l dy php chiu v tnh giao hon ca php chiu vi cc php khc, phn r v chuyn cc danh sch thuc tnh chiu xung pha di cy truy vn n mc c th bng cch to ra cc php chiu mi khi cn thit. Ch cc thuc tnh cn trong kt qu truy vn v trong cc php ton tip theo trong cy truy vn nn c gi li sau mi php chiu. 6. Nhn ra cc cy con trnh by cc nhm cc php ton c th thc hin bng mt thut ton n. Trong v d trn, hnh 5(b) trnh by cy ca hnh 5(a) sau khi p dng cc bc 1 v 2 ca thut ton; hnh 5(c) trnh by cy sau bc 3; hnh 5(d) trnh by cy sau bc 4 v hnh 5(e) trnh by cy sau bc 5. Trong bc 6 chng ta c th nhm cc php ton trong cy con c gc l php ton Essn thnh mt thut ton n. Chng ta cng c th nhm cc php ton cn li thnh cy con khc, y cc b kt qu t thut ton u tin thay th cy con c nt gc l php ton Essn , bi v vic nhm li nh th ngha l cy con ny c thc hin u tin. Tm tt vic ti u ho i s s dng heuristic By gi chng ta tm tt cc heuristic c bn i vi vic ti u ha i s. Heuristic chnh l u tin p dng cc php ton lm gim kch thc ca cc kt qu trung gian. iu ny bao gm vic thc hin cc php chn v php chiu sm nht c th gim s b v gim s thuc tnh. Vic ny c thc hin bng cch chuyn cc php chn v chiu xung pha di cy truy vn vi kh nng c th. Thm vo , cc php chn gii hn nht - hoc l cc php to ra mt quan h vi s b t nht hoc l quan h vi kch thc nh nht-

nn c thc hin trc cc ton t tng t khc. iu ny c thc hin bng cch sp xp li cc nt l ca cy khi trnh cc tch Cc v iu chnh phn cn li ca cy mt cch thch hp. 7.3. S chuyn i cc cy truy vn thnh cc cy thc hin truy vn Mt cy thc hin i vi mt biu thc i s quan h c trnh by nh mt cy truy vn bao gm thng tin v cc phng thc truy cp sn c i vi mi quan h, cng nh cc thut ton c s dng trong qu trnh tnh cc php ton quan h trnh by trong cy. V d nh xt truy vn Q3 cho bi biu thc i s quan h sau:
Fname, Lname, Address ( Dname=Research(DEPARTMENT)
Dnumber = Dno

EMPLOYEE)

Cy truy vn c ch ra trong hnh 6


Fname, Lname, Address F

Dnumber = Dno

Dname=Research DEPARTMENT

EMPLOYEE

Hnh 6. Cy truy vn ca Q3 chuyn cy truy vn ny thnh cy thc hin truy vn, vic ti u ha c th chn mt s tm kim ch mc i vi php chn (gi s tn ti), mt bn scan l phng thc truy cp i vi EMPLOYEE, mt thut ton ni nested-loop i vi php ni, v mt scan ca kt qu php ni i vi php chiu. Thm vo , cch tip cn i vi vic thc hin truy vn c th ch r qu trnh nh gi ng ng. Vi qu trnh nh gi c th ha, kt qu ca mt php ton c lu nh mt quan h tm thi ( l kt qu c c th ha theo vt l). V d, php ni c th c tnh v ton b kt qu c lu thnh mt quan h tm, quan h ny sau tr thnh quan h u vo ca thut ton tnh php chiu, iu ny s to ra mt bng kt qu truy vn. Mc khc, vi k thut nh gi ng ng th cc b kt qu ca mt php ton c to ra, chng c chuyn trc tip n php ton tip theo trong dy truy vn. V d nh cc b c chn t

DEPARTMENT (kt qu ca php chn) c t trong mt b m; sau php ton ni s s dng cc b c t b m. Kt qu ca php ni s c s dng cho php chiu. u im ca k thut ng ng l tit kim chi ph v khng phi ghi kt qu trung gian ln a v khng phi c chng tr li cho php ton tip theo.

You might also like