You are on page 1of 15

Chng 2.

S TRONG SUT PHN TN

Mc tiu
Chng ny gii thiu v cc vn sau:
1. Khi nim v phn tn d liu, cc kiu phn mnh, quy tc phn
mnh.
2. S trong sut phn tn trong vic truy xut d liu

2.1 Cc kiu phn on d liu


Trong c s d liu phn tn, chng ta bit cc quan h trong lc c s d
liu thng c phn ra thnh cc mnh nh hn nhng cha a ra l do hoc chi
tit no v qu trnh ny. Phn ny cp n cc chi tit .
Cc cu hi sau y s bao qut ton b vn :
Ti sao cn phi phn mnh?
Lm th no thc hin phn mnh?
Phn mnh nn thc hin n mc no?
C cch g kim tra tnh ng n ca phn mnh hay khng?
Chng ta s cp pht nh th no?
Nhng thng tin no cn thit cho vic cp pht?
2.1.1 Cc l do phn mnh
i vi phn mnh, iu quan trng l c c mt n v phn mnh thch hp.
Mt quan h khng phi l mt n v p ng c yu cu .
Trc tin, khung nhn ca cc ng dng thng ch l tp con ca quan
h. V th n v truy xut khng phi l ton b quan h m ch l cc tp
con ca quan h. Kt qu l xem tp con ca cc quan h l n v phn
tn s l iu thch hp nht.
Th hai l nu cc ng dng c cc khung nhn c nh ngha trn mt
quan h cho trc li nm ti nhng v tr khc nhau th c hai cch chn
la vi n v phn tn l : hoc quan h c lu mt v tr hoc quan
h c nhn bn cho tt c hay mt s v tr c chy ng dng. Chn la
u gy ra mt s lng ln cc truy xut n d liu xa. Cn chn la
sau thc hin nhn bn khng cn thit, gy ra nhiu vn khi cp nht
v c th gy ra lng ph khng gian lu tr. V th, vic phn r mt quan
h thnh nhiu mnh, mi mnh c x l nh mt n v, s cho php

-1-

thc hin nhiu giao tc ng thi. Ngoi ra, vic phn mnh cc quan h
s cho php thc hin song song mt cu vn tin bng cch chia n thnh
mt tp cc cu vn tin con hot tc trn tng mnh. Do vic phn
mnh s lm tng mc hot ng song hnh v nh th lm tng lu
lng hot ng ca h thng.
Tuy nhin cng cn ch r nhng khim khuyt ca vic phn mnh:
- Nu ng dng cn phi truy xut d liu t hai mnh ri ni hoc hp chng
li th chi ph rt cao.
- Vn th hai lin quan n tnh ton vn d liu: do kt qu ca vic phn
mnh, cc thuc tnh tham gia vo mt ph thuc hm c th b phn r vo
cc mnh khc nhau v c cp pht cho nhng v tr khc nhau. Trong
trng hp ny vic kim tra cc ph thuc hm cng phi thc hin truy tm
d liu nhiu v tr.
2.1.2 Cc kiu phn mnh
C hai kiu phn mnh khc nhau l phn mnh theo chiu dc, phn mnh theo
chiu ngang v phn mnh hn hp s c trnh by chi tit phn sau.
2.1.3 Mc phn mnh
Phn mnh c s d liu n mc no l mt quyt nh rt quan trng, n c
nh hng n hiu sut vn tin. Mc phn mnh c th i t thi cc khng
phn mnh n phn mnh thnh tng b (trong trng hp phn mnh ngang)
hoc tng thuc tnh (trng hp phn mnh dc).
Cc n v phn mnh qu ln hoc qu nh cng gy nh hng xu n h thng.
V th iu cn tm l mc phn mnh thch hp. Cc phng php phn mnh
s c cp n n trong phn 2.1.6.
2.1.4 Cc quy tc phn mnh
Trong qu trnh phn mnh chng ta phi tun th ba qui tc bo m c s d
liu s khng thay i v mt ng ngha.
1. Tnh y (completeness): Nu mt quan h R c phn r thnh cc
mnh R1, R2,... , Rn th mi mc d liu trong R cng c th c trong mt hay
nhiu mnh Ri. c tnh ny ni ln s phn mnh m khng mt thng tin.
2. Tnh ti thit c (reconstruction): Nu mt quan h R c phn r thnh
cc mnh R1, R2,... , Rn th cn nh ngha mt php ton quan h sao cho:
R = Ri i [1,n]
Php ton thay i ty theo loi phn mnh. Kh nng ti thit mt quan h
t cc mnh ca n bo m rng cc rng buc c nh ngha trn d liu
di dng ph thuc hm s c bo ton.
3. Tnh tch bit (disjointness): Nu mt quan h R c phn r ngang thnh
cc mnh R1, R2,... ,Rn v mc d liu di nm trong mnh Rj, th n s khng
nm trong mt mnh Rk khc (k j). Tiu chun ny m bo cc mnh ngang

-2-

s tch bit. Nu quan h c phn r dc, cc thuc tnh kho chnh phi
c lp li trong mi mnh.

2.1.5 Cc kiu cp pht :


Gi s c s d liu c phn mnh thch hp v cn phi quyt nh cp pht cc
mnh cho cc v tr trn mng. Khi d liu c cp pht, n c th c nhn bn
hoc ch gi mt bn duy nht. L do cn phi nhn bn nhm m bo tin cy
v hiu qu cho cc cu truy vn ch c. Nu c nhiu bn sao th chng ta vn c
c hi truy xut c d liu ngay khi h thng xy ra s c. Hn na cc cu
truy vn ch c truy xut n cng mt mc d liu c th cho thc hin song song
bi v cc bn sao c mt ti nhiu v tr. Ngc li cu vn tin cp nht c th gy
ra nhiu rc ri bi v h thng phi m bo rng tt c cc bn sao phi c
cp nht chnh xc. V vy quyt nh nhn bn cn phi cn nhc v ph thuc vo
t l gia cc cu vn tin ch c v cc cu vn tin cp nht. Quyt nh ny hu
nh c nh hng n tt c cc thut ton ca h qun tr c s d liu phn tn v
cc chc nng kim sot khc

Nhn bn

Nhn bn 1

hon ton

phn

X l vn tin

Kh

Qun l t in

Kh

Phn hoch

d liu
iu khin ng Kh

Va phi

thi
kh tn

Rt cao

Cao

Thp

Tnh thc t

Thc t

Thc t

Thc t

Hnh 2.1 So snh cc chn la nhn bn


Mt c s d liu khng nhn bn (thng gi l c s d liu phn hoch) c
cha cc mnh c cp pht cho cc v tr, trong ch tn ti mt bn sao duy
nht cho mi mnh trn mng. Trong trng hp nhn bn, hoc ton b c s d
liu u tn ti mi v tr (c s d liu nhn bn hon ton) hoc cc mnh c
phn tn n cc v tr, trong mt mnh c th c nhiu bn sao ti nhiu v tr
(c s d liu nhn bn mt phn). Hnh 2.1 so snh ba la chn nhn bn.

-3-

2.1.6 Cc phng php phn mnh:


2.1.6.1 Phn mnh ngang
Phn mnh ngang chia mt quan h theo cc b. V vy mi mnh l mt tp con
ca quan h. C hai loi phn mnh ngang: phn mnh ngang nguyn thy v phn
mnh ngang dn xut.
- Phn mnh ngang nguyn thy (Primary Horizontal Fragmentation) l s phn
mnh mt quan h da trn mt v t c nh ngha trn mt quan h.
- Phn mnh ngang dn xut (Derived Horizontal Fragmentation) l phn r mt
quan h da vo cc v t c nh ngha trn mt quan h khc.
Trc khi trnh by thut ton hnh thc cho phn mnh ngang, chng ta s tho
lun mt cch trc quan v qu trnh phn mnh.

Cho quan h R, cc mnh ngang Ri l :


Ri = Fi(R)
Trong Fi l cng thc chn c c mnh Ri.
V d : Cho lc quan h ton cc :
SUPPLIER(SNUM,NAME,CITY)
Chng ta c th c hai phn mnh ngang sau:
SUPPLIER1 = CITY= SF(SUPPLIER)
SUPPLIER2 = CITY= LA(SUPPLIER)
- S phn mnh trn tha iu kin y nu SF v LA ch l cc
gi tr c th c ca thuc tnh CITY; ngc li chng ta s khng bit
nhng mnh no vi cc gi tr CITY khc.
- iu kin ti thit c kim tra d dng v chng ta lun lun c th
ti thit li quan h ton cc SUPPLIER bng php ton hi:
SUPPLIER = SUPPLIER1 U SUPPLIER2
- iu kin tch bit cng c kim tra mt cch r rng.

-4-

2.1.6.2 Phn mnh ngang dn xut


Trong mt s trng hp s phn mnh ngang c dn ra t mt phn mnh
ngang ca mt quan h khc.
V d: Mt quan h ton cc
SUPPLY(SNUM, PNUM, DEPTNUM, QUAN)
Vi SNUM l m s ngi cung cp. Chng ta mun phn chia quan h ny
sao cho mt mnh cha cc b cho nhng ngi cung cp mt thnh ph
cho trc. Tuy nhin thnh ph khng phi l thuc tnh ca quan h SUPPLY
m l thuc tnh ca quan h SUPPLIER. V th chng ta cn thc hin php
na kt xc nh cc b ca SUPPLY tng ng vi nhng ngi cung cp
trong mt thnh ph cho trc. S phn mnh dn xut ca SUPPLY c th
c nh ngha nh sau:
SUPPLY1 = SUPPLY SJ SUPPLIER1
SUPPLY2 = SUPPLY SJ SUPPLIER2
Vi SJ l php ton na kt (Semi Join)
- Tnh ti thit quan h ton cc SUPPLY c th c th hin qua php hi.
- R rng vi php kt nh vy th mt b trong quan h SUPPLY ch c th thuc
1 trong 2 mnh SUPPLY1 hoc SUPPLY2 , do , n tha tnh y v tch
bit .

2.1.6.3 Phn mnh dc


S phn mnh dc ca mt quan h ton cc l vic chia cc thuc tnh vo hai
nhm; cc mnh nhn c t php chiu quan h ton cc trn mi nhm. S phn
mnh ny s ng n nu mi thuc tnh c nh x vo t nht vo mt thuc
tnh ca cc phn mnh; hn na, n phi c kh nng ti thit li quan h nguyn
thy bng cch kt ni cc phn mnh li vi nhau. c kh nng ti thit li quan
h nguyn thy th mi phn mnh dc phi cha kha chnh ca quan h nguyn
thy .
V d : Xt quan h ton cc
EMP(EMPNUM, NAME, SAL, TAX, MNRNUM, DEPTNUM)
Mt s phn mnh dc ca quan h ny c nh ngha:
EMP1 = EMPNUM, NAME, MGRNUM, DETPNUM (EMP)
EMP2 = EMPNUM, SAL, TAX (EMP)
Phn mnh ny phn nh lng v thu ca cc nhn vin c qun l ring.
Vic ti thit li quan h EMP c th nhn c t :
EMP = EMP1 JNN EMP2
(vi JNN l php kt ni t nhin hai quan h)

-5-

T chng ta thy s phn mnh cng tha tnh y v tnh tch bit.
2.1.6.4 S phn mnh hn hp
Cc phn mnh nhn c bi cc php phn mnh trn l cc quan h, v th
chng ta c th p dng cc php ton phn mnh mt cch qui. Vic ti thit
quan h thc hin c bng cch p dng cc lut ti thit theo th t ngc. Cc
biu thc m nh ngha cc phn mnh trong trng hp ny s phc tp hn.
V d: Xt quan h ton cc:
EMP(EMPNUM, NAME, SAL, TAX, MNRNUM, DEPTNUM)
Di y l mt s phn mnh hn hp bng cch p dng s phn mnh dc
ri sau p dng phn mnh ngang trn DEPTNUM:

EMP1 = deptnum<=10 (empnum, name, mgrnum, deptnum (EMP))


EMP2 = 10<deptnum <=20(empnum, name, mgrnum, deptnum (EMP))
EMP3 = deptnum>20 (empnum, name, mgrnum, deptnum (EMP))
EMP4 = empnum, name, sal, tax (EMP)
EMP

EMP1

EMP2

EMP4

EMP3

Hnh 2.2 Cy phn mnh ca quan h EMP


Vic ti thit li quan h EMP c nh ngha bi biu thc:
EMP = U(EMP1, EMP2 , EMP3) JNN empnum, sal, tax (EMP4)
S phn mnh hn hp c th c biu din bi cy phn mnh. Trong cy phn
mnh, gc tng ng vi quan h ton cc, cc l tng ng vi cc phn mnh v
cc nt trung gian tng ng vi cc kt qu trung gian ca cc biu thc phn
mnh. Tp cc nt con ca mt nt th hin s phn r ca nt ny bi mt php
ton phn mnh ngang hoc dc. Hnh 2.2 minh ha cy phn mnh ca quan h
EMP.

-6-

2.2 S trong sut phn tn


2.2.1 S trong sut phn tn ca ng dng ch c
hiu c s trong sut phn tn ca ng dng ch c, chng ta s xem xt cc
v d c minh ha bng ngn ng ta Pascal c nhng ngn ng SQL. Trong cc
v d ny chng ta c mt s ch sau:
-

Cc bin c kiu chui k t.

Nhp xut c thc hin qua cc th tc chun: Read(filename, variable),


write(filename, variable). Nu nhp xut c thc hin ti mt trm th
filename s l terminal.

Trong cc pht biu SQL, cc bin ca ngn ng Pascal s bt u bng k t


$.

V d: Xt cu truy vn : Tm tn ca ngi cung cp khi bit m s ngi cung


cp.
SET $NAME = Select NAME From SUPPLIER Where SNUM = $SNUM
Trong cu truy vn ny $NAME l bin xut cn $SNUM l bin nhp.
-

Cc bin ca Pascal s dng lin h vi h qun tr c s d liu phn tn bt


u bng k t #.

V d: Sau khi truy vn mt cu SQL, bin lun l #FOUND = TRUE nu kt qu


tr v khc rng. Bin #OK = TRUE nu php ton thc hin ng bi h qun tr
c s d liu.
Cc mc trong sut s c xt t cao n thp qua hai trng hp sau.

a. Xt trn mt lc quan h ph qut


Mc 1: S trong sut phn tn
Read (terminal, $SNUM)

DDBMS

Select NAME into $NAME


From SUPPLIER
Where SNUM = $SNUM
Write(terminal, $NAME)

SUPPLIER1

Site 1

SUPPLIER2

Site 2

SUPPLIER2

Site 3

Hnh 2.3a S trong sut phn tn

Nhn xt: Theo hnh 2.3a v on lnh trn, chng ta thy cu truy vn trn
tng t nh cu truy vn cc b, khng cn ch ra cc phn mnh cng nh
cc v tr cp pht cho cc phn mnh . Khi ngi s dng khng h c
cm gic l ang thao tc trn mt cu truy vn phn tn.

-7-

Mc 2: S trong sut v tr (location)


DDBMS

Read (terminal, $SNUM)


Select NAME into $NAME
From SUPPLIER1

OR

SUPPLIER1

Site 1

SUPPLIER2

Site 2

SUPPLIER2

Site 3

Where SNUM = $SNUM


If not #Found then

Hnh 2.3b S trong sut v tr

Select NAME into $NAME


From SUPPLIER2
Where SNUM = $SNUM
Write(terminal, $NAME)

Nhn xt: Ngi s dng phi cung cp tn cc phn mnh c th cho cu truy vn
nhng khng cn ch ra v tr ca cc phn mnh.
S trong sut v tr hnh 2.3b c th c vit nh sau:
Read(Terminal, $SNUM)
Read(Terminal, $CITY)
Case $CITY Of
SF: Select NAME into $NAME
From SUPPLIER1
Where SNUM = $SNUM;
LA: Select NAME into $NAME
From SUPPLIER2
Where SNUM = $SNUM
End;
Write(Terminal, $NAME)

Mc 3: S trong sut nh x cc b
Read (terminal, $SNUM)
Select NAME into $NAME

DDBMS

From SUPPLIER1 AT SITE 1


Where SNUM = $SNUM
-8-

SUPPLIER1

Site 1

SUPPLIER2

Site 2

Hnh 2.3c S trong sut nh x cc b

If not #Found then


Select NAME into $NAME
From SUPPLIER2 AT SITE 2
Where SNUM = $SNUM
Write(terminal, $NAME)
Nhn xt: ti mc trong sut ny ngi s dng phi cung cp tn cc phn
mnh v v tr cp pht ca chng.
Mc 4: Khng trong sut
Read(Terminal,SSUPNUM)
Execute SUPIMS(SSUPNUM, $FOUND, $NAME) at site 1;
if not $FOUND then
Execute SUPCODASYL(SSUPNUM, $FOUND, $NAME) at site 3;
Write(Terminal,$NAME)
DDBMS

SUPCODASYL(SNUM, FOUND, NAME);


Find SUPPLIER_RECORD
..
..

SUPIMS(SNUM, FOUND, NAME);


Get unique SUPPLIER_SEGMENT
..
..

Local
DBMS
(Codasyl)

Local
DBMS
(IMS)

Codasyl DB

IMS DB

Site 3

Site 1

Hnh 2.4 Mt ng dng trn c s d liu phn tn khng ng nht v khng


trong sut
Nhn xt: Ti mc thp nht ny chng ta cn phi vit lnh theo h qun tr
c s d liu tng ng.

-9-

b. Xt trn hai lc quan h ph qut


Chng ta hy xt mt v d phc tp hn. Gi s cn tm tn nhng nh cung
cp mt hng c m s (mt hng) cho trc.
Mc 1: Trong sut phn mnh
Read(Terminal, $PNUM)
Select NAME into $NAME
from SUPPLIER, SUPPLY
where SUPPLIER.SNUM = SUPPLY.SNUM and
SUPPLY.PNUM = $PNUM
write(Terminal, $NAME)
Nhn xt:
Mc 2: Trong sut v tr
Read(Terminal, $PNUM)
Select NAME into $NAME
from SUPPLIER1, SUPPLY1
where SUPPLIER1.SNUM = SUPPLY1.SNUM and
SUPPLY1.PNUM = $PNUM
if not #FOUND then
Select NAME into $NAME
from SUPPLIER2, SUPPLY2
where SUPPLIER2.SNUM = SUPPLY2.SNUM and
SUPPLY2.PNUM = $PNUM
write(Terminal, $NAME)
Nhn xt:
Mc 3: Trong sut nh x cc b
Gi s cc s cp pht cc phn mnh ca quan h SUPPLY v SUPPLIER nh
sau:
SUPPLIER1 : Ti site 1
SUPPLIER2 : Ti site 2
SUPPLY1 : Ti site 3
SUPPLY2 : Ti site 4
Read(Terminal, $PNUM)
Select SNUM into $SNUM
from SUPPLY1 at site 3
where SUPPLY1.PNUM = $PNUM
if #FOUND then
begin
send $SNUM from site 3 to site 1
Select NAME into $NAME
from SUPPLIER1 at site 1

- 10 -

where SUPPLIER1.SNUM = $SNUM


end
else begin
Select SNUM into $SNUM
from SUPPLY2 at site 4
where SUPPLY2.PNUM = $PNUM
send $SNUM from site 4 to site 2
Select NAME into $NAME
from SUPPLIER2 at site 2
where SUPPLIER2.SNUM = $SNUM
end;
write(Terminal, $NAME)
Nhn xt:

2.2.2 S trong sut phn tn i vi cc ng dng cp nht


Trong phn trc, chng ta ch xt cc ng dng tm kim d liu trong c s d
liu phn tn . Phn ny chng ta s xem xt cc ng dng cp nht d liu trong c
s d liu phn tn. Bi ton cp nht y ch xt di kha cnh trong sut phn
tn i vi cc lp trnh vin, trong khi bi ton bo m tnh nguyn t ca cc
giao tc cp nht s c xem xt chng sau.
Cc mc trong sut phn tn cng c phn tch nh trong cc ng dng ch c.
Tuy nhin mt php cp nht phi c thc hin trn tt c cc bn sao ca mt
mc d liu trong khi php tm kim ch cn thc hin trn mt bn sao. iu ny
c ngha l nu h qun tr c s d liu khng h tr s trong sut v tr v s
trong sut nhn bn th lp trnh vin chu trch nhim thc hin mi cp nht c
yu cu.
Trong vic h tr s trong sut phn tn cho cc ng dng cp nht c mt vn
khc phc tp hn vic cp nht tt c cc bn sao ca mt mc d liu. l vn
di chuyn d liu sau khi cp nht.
Xt v d sau: iu g xy ra khi cp nht li gi tr ca thuc tnh CITY trong quan
h SUPPLIER. R rng, cc b Supplier phi c chuyn t mt phn mnh ny
n phn mnh khc. Hn na, nh trong v d phn 2.2.1, cc b ca quan h
SUPPLY m tham kho n cng Supplier cng phi thay i phn mnh v quan h
SUPPLY c mt phn mnh dn xut. Mt cch trc quan chng ta d dng thy
vic thay i gi tr ca mt thuc tnh m chng ta nh ngha trong lc phn
mnh c dn n cc h qu phc tp. Mc m cc h qun tr c s d liu
phn tn qun l cc h qu chnh l c trng cho cc mc trong sut phn tn
cho s cp nht.
minh ha cho cc php ton di chuyn d liu trong vic cp nht d liu phn
tn ngi ta s dng cy con cp nht.
Xt mt thuc tnh A c s dng trong v t phn mnh ngang. Cy con cp nht
ca A l cy con m c nt gc l nt i din cho s phn mnh ngang trn.

- 11 -

EMP

EMP

EMP

EMP

EMP

Cy con cp nht ca
thuc tnh DEPTNUM

V:

Php ton phn mnh dc


H: S
phn
mnh
ngang
Hnh 2.5 Cy con cp nht ca thuc tnh DEPTNUM trong cy phn mnh ca
quan h EMP
- Cc nh hng ca s thay i gi tr ca mt thuc tnh ch gii hn trong cc
phn mnh nt l ca cy con cp nht.
V d: Mt s thay i gi tr ca thuc tnh DEPTNUM ch nh hng n EMP 1,
EMP2 v EMP3. Mt b c th di chuyn gia hai trong ba phn mnh trn.
Xt mt v d khc phc tp hn. Gi s quan h EMP c cy phn mnh nh hnh
2.6a.

EMP

EMP1

EMP2

EMP3

EMP1 = PJEMPNUM, NAME, SAL, TAXSLDEPTNUM <10(EMP)


EMP2= PJEMPNUM, MGRNUM, DEPTNUMSLDEPTNUM <10(EMP)
EMP3 = PJEMPNUM, NAME, DEPTNUMSLDEPTNUM >=10(EMP)
EMP4 = PJEMPNUM, SAL, TAX, MGRNUMSLDEPTNUM >=10(EMP)
- 12 -

EMP4

Hnh 2.6a Cy phn mnh khc ca quan h EMP


EMP1

EMP2

EMPNUM NAME
100

SAL

TAX

EMPNUM MGRNUM DEPTNUM

SMITH 10000 1000

100

20

Trc khi cp nht


Sau khi cp nht

EMP3

EMP4

EMPNUM NAME

DEPTNUM

EMPNU

SAL

TAX

MGRNUM

M
100

SMITH 15

100

10000 1000

20

Hnh 2.6b H qu ca vic cp nht DEPTNUM ca EMPNUM=100 t 3 sang 15


Trong trng hp ny cy con cp nht ca thuc tnh DEPTNUM tng t nh
cy phn mnh. S nh hng ca vic thay i gi tr ca DEPTNUM ca b c
EMPNUM=100 t 3 thnh 15 c minh ha hnh 2.6b. S cp nht ca b ny
ch thuc v cy con tri, sau khi cp nht n tr thnh mt phn cy con phi.
Chng ta nhn thy khng ch d liu c chuyn gia cc mnh m b ny cng
c t hp li theo mt cch khc.
By gi chng ta s xem xt cc mc trong sut phn tn cho mt ng dng cp
nht n gin.
Mc 1: S trong sut phn tn
Mc ny minh ho chng trnh ng dng cp nht d liu nh trong mt c s d
liu khng phn tn. Bi th cc lp trnh vin khng cn bit thuc tnh no c
dng phn mnh. thay i gi tr DEPTNUM ca employee c
EMPNUM=100, on chng trnh c vit nh sau:
Update EMP
set DETPNUM=15
where EMPNUM =100
Mc 2: S trong sut v tr
Ti mc ny, lp trnh vin phi lm vic vi cc phn mnh mt cch tng minh.
on chng trnh c vit nh sau:
Select NAME, SAL, TAX into $NAME, $SAL, $TAX
from EMP1 where EMPNUM=100;
Select MGRNUM into $MGRNUM
from EMP2 where EMPNUM=100;

- 13 -

Insert into EMP3 (EMPNUM, NAME, DEPTNUM)


Values (100, $NAME, 15);
Insert into EMP4 (EMPNUM, SAL, TAX, MGRNUM)
Values (100, $SAL, $TAX, $MGRNUM);
Delete EMP1 where EMPNUM = 100;
Delete EMP2 where EMPNUM = 100;
Mc 3: S trong sut nh x cc b
Ti mc ny ng dng phi gii quyt v tr ca cc phn mnh mt cch tng
minh. Gi s cc phn mnh ca quan h EMP c cp pht nh sau:
EMP1 : site1 v 5
EMP2 : site2 v 6
EMP3 : site3 v 7
EMP4 : site4 v 8
on chng trnh c vit nh sau:
Select NAME, SAL, TAX into $NAME, $SAL, $TAX
from EMP1 at site 1 where EMPNUM=100;
Select MGRNUM into $MGRNUM
from EMP2 at site 2 where EMPNUM=100;
Insert into EMP3 (EMPNUM, NAME, DEPTNUM) at site 3
Values (100, $NAME, 15);
Insert into EMP3 (EMPNUM, NAME, DEPTNUM) at site 7
Values (100, $NAME, 15);
Insert into EMP4 (EMPNUM, SAL, TAX, MGRNUM) at site 4
Values (100, $SAL, $TAX, $MGRNUM);
Insert into EMP4 (EMPNUM, SAL, TAX, MGRNUM) at site 8
Values (100, $SAL, $TAX, $MGRNUM);
Delete EMP1 at site 1 where EMPNUM = 100;
Delete EMP1 at site 5 where EMPNUM = 100;
Delete EMP2 at site 2 where EMPNUM = 100;
Delete EMP2 at site 6 where EMPNUM = 100;
2.3 Cc nguyn tc truy xut c s d liu phn tn
Trong cc v d phn trc chng ta ch xt cc truy vn d liu ch tr v mt gi
tr. Tuy nhin trong trng hp tng qut, mt cu truy vn c th tr v mt quan
h. Khi chng ta s qui c dng tham s c tip v ng REL, c xem nh
mt file, nhn kt qu tr v.
V d: Cho cu SQL sau:
Select EMPNUM, NAME INTO $EMP_REL($EMPNUM, $NAME)
from EMP
By gi chng ta s xem xt cc cch truy xut c s d liu v nh gi hiu qu
ca cc cch theo yu cu sau:
Cho bit danh sch cc sn phm m cc nh cung cp (c nhp) cung cp.

- 14 -

Cch 1: C s d liu c truy xut vi mi gi tr $SNUM


Repeat
read(terminal, $SNUM);
select PNUM into $PNUM_REL($PNUM)
from SUPPLY where SNUM = $SNUM;
repeat
read($PNUM_REL, $PNUM)
write(terminal, $PNUM)
until END-OF-$PNUM_REL
until END-OF-TERMINAL-INPUT
Cch 2: C s d liu c truy xut sau khi tt c gi tr ca $SNUM c nhp
Repeat
read(terminal, $SNUM);
write($SNUM_REL($SNUM), $SNUM)
Until END-OF-TERMINAL-INPUT
select PNUM into $PNUM_REL($PNUM)
from SUPPLY, $SNUM_REL
where SUPPLY.SNUM = $SNUM_REL.$SNUM;
Repeat
read($PNUM_REL, $PNUM)
write(terminal, $PNUM)
Until END-OF-$PNUM_REL
Cch 3: C s d liu c truy xut trc khi nhp gi tr $SNUM
Select PNUM, SNUM into $TEMP_REL($TEMP_PNUM, $TEMP_NUM)
from SUPPLY;
Repeat
read(terminal, $SNUM);
select $TEMP_PNUM into $TEMP2_REL($TEMP2_PNUM)
from $TEMP_REL where $TEMP_PNUM = $SNUM;
Repeat
read($TEMP2_REL, $TEMP2_PNUM);
write(terminal, $TEMP2_PNUM);
until END-OF-$TEMP2_PNUM
Until END-OF-TERMINAL-INPUT
Nhn xt v hiu qu ca ba cch trn?

- 15 -

You might also like