You are on page 1of 176

Gio trnh c s d liu

Bin tp bi:
Ng Trn Thanh Tho

Gio trnh c s d liu


Bin tp bi:
Ng Trn Thanh Tho
Cc tc gi:
Ng Trn Thanh Tho

Phin bn trc tuyn:


http://voer.edu.vn/c/3eaa132c

MC LC
1. Cc khi nim c bn
2. Nhng khi nim c bn
3. Nhng cch tip cn mt c s d liu
4. M hnh d liu quan h ca e.f.codd
5. Rng buc ton vn
6. Rng buc ton vn cc loi
7. Ngn ng i s quan h
8. Ngn ng i s quan h (tip theo)
9. Ngn ng truy vn c s d liu SQL
10. Ngn ng truy vn CSDL SQL (tip theo)
11. Ngn ng tn t
12. Ngn ng tn t (tip theo)
13. Ti u ha cu hi
14. Ti u ha cu hi (tip theo)
Tham gia ng gp

1/174

Cc khi nim c bn
Dn nhp - Ti sao cn phi c mt CSDL
Trong nhng nm gn y, thut ng "C S D LIU" (Ting Anh l DataBase, vit
tt ting Vit l CSDL) tr nn kh quen thuc khng ch ring vi nhng ngi lm
Tin hc m cn i vi c nhng ngi lm trong nhiu lnh vc khc nh Thng k,
Kinh t, Qun l Doanh nghip v.v... Cc ng dng ca Tin hc vo cng tc qun l
ngy cng nhiu hn v cng a dng hn. C th ni hu ht cc lnh vc kinh t, x
hi, gio dc, y t v.v... u ng dng cc thnh tu mi ca Tin hc vo phc v
cng tc chuyn mn ca mnh. Chnh v l m ngy cng nhiu ngi quan tm n
lnh vc thit k v xy dng cc CSDL.
Mc ch ca chng I ch n gin l cung cp cc khi nim c bn v CSDL cc
hc vin c mt ci nhn ban u v mt c s d liu v mt h qun tr CSDL. Trc
ht chng ta s tm hiu l do ti sao cn phi c mt CSDL.
H thng cc tp tin c in (File System)
Cho n nay vn cn mt s n v kinh t, hnh chnh s nghip v.v... s dng m hnh
h thng cc tp tin c in: chng c t chc ring r, phc v cho mt mc ch
ca mt n v hay mt n v con trc thuc c th. Chng hn, hy xt v d sau:
V d 1.1:
Ti mt cng ty ngi ta trang b my vi tnh cho tt c cc phng, ban nghip v. B
phn Vn phng s dng my tnh son tho cc vn bn bo co bng MicroSoft
Word do th trng yu cu v tnh hnh hot ng ca n v trong c ch tiu v
tng s cng nhn vin chc chia theo trnh chuyn mn c o to. Phng K
ton s dng my tnh tnh lng v in danh sch lng ca tng b phn trong n
v da trn danh sch cn b vin chc cng h s lng v cc h s ph cp ca h do
phng T chc cung cp. Thng tin m phng K ton qun l v khai thc l: H v
Tn, H s lng, H s ph cp, Ph cp khc ca cc cng nhn vin chc (CNVC)
xp theo tng phng ban v s dng cng c vn phng l MicroSoft Excel. Phng T
chc qun l thng tin l lch ca CNVC chi tit hn gm H CNVC, Tn CNVC (
ring thnh mt ct "Tn" tin sp xp theo vn Alphabet), B danh, Gii tnh, Ngy
sinh, Ngy tuyn dng, Hon cng gia nh, Qu trnh c o to, H s lng, H
s ph cp, Ngy xp lng trn ... nhng thiu thng tin v Phc cp khc ca CNVC.
Phn mm c s dng qun l l FoxPro for Windows.

2/174

Trong khi , ti Tng cng ty ca h, cc phng ban nghip v cng c trang b vi


tnh. Phng T chc cn b ti Tng cng ty s dng phn mm MicroSoft Access
qun l CNVC gm cc cn b ch cht t trng ph phng, qun c v ph qun
c x nghip tr ln ca cc cng ty con trc thuc. Thng tin qun l ti y cng
ging nh thng tin qun l ti phng t chc ca cng ty con.
Nhn xt :
u im:
- Vic xy dng h thng cc tp tin ring ti tng n v qun l t tn thi gian bi
khi lng thng tin cn qun l v khai thc l nh, khng i hi u t vt cht v
cht xm nhiu, do trin khai ng dng nhanh.

nh ngha mt CSDL.

C s d liu l mt h thng cc thng tin c cu trc c lu tr trn cc thit b lu


tr thng tin th cp (nh bng t, a t ...) c th tha mn yu cu khai thc thng
tin ng thi ca nhiu ngi s dng hay nhiu chng trnh ng dng vi nhiu mc
ch khc nhau.

Trong nh ngha ny cn nhn mnh nhng kha cnh ca nh ngha c lu qua


cc t gch chn. Trc ht, CSDL phi l mt tp hp cc thng tin mang tnh h thng
ch khng phi l cc thng tin ri rc, khng c mi quan h vi nhau. Cc thng tin
ny phi c cu trc v tp hp cc thng tin ny phi c kh nng p ng cc nhu cu

3/174

khai thc ca nhiu ngi s dng mt cch ng thi. cng chnh l cc c trng
ca CSDL.
R rng, u im ni bt ca CSDL l:
Gim s trng lp thng tin xung mc thp nht v do bo m c tnh nht
qun v ton vn d liu.
m bo d liu c th c truy xut theo nhiu cch khc nhau.
Kh nng chia s thng tin cho nhiu ngi s dng v nhiu ng dng khc nhau.
Tuy nhin, t c cc u im trn, CSDL t ra nhng vn cn phi gii quyt.
l:
Tnh ch quyn ca d liu. Do tnh chia s ca CSDL nn tnh ch quyn ca d liu
c th b lu m v lm m nht tinh thn trch nhim, c th hin trn vn an ton
d liu, kh nng biu din cc mi lin h ng ngha ca d liu, v tnh chnh xc ca
d liu. iu ny c ngha l ngi khai thc CSDL phi c ngha v cp nht cc thng
tin mi nht ca CSDL.
Tnh bo mt v quyn khai thc thng tin ca ngi s dng. Do c nhiu ngi c
php khai thc CSDL mt cch ng thi nn cn phi c mt c ch bo mt v phn
quyn hn khai thc CSDL. Cc h iu hnh nhiu ngi s dng hay h iu hnh
mng cc b (Novelll Netware, Windows For WorkGroup, WinNT, ...) u c cung cp
c ch ny.
Tranh chp d liu. Nhiu ngi c php truy nhp vo cng mt ti nguyn d liu
(Data Source) ca CSDL vi nhng mc ch khc nhau: Xem, thm, xa hoc sa d
liu. Cn phi c mt c ch u tin truy nhp d liu cng nh c ch gii quyt tnh
trng kha cht (DeadLock) trong qu trnh khai thc cnh tranh. C ch u tin c th
c thc hin bng vic cp quyn (hay mc ) u tin cho tng ngi khai thc ngi no c cp quyn hn u tin cao hn th c u tin truy nhp d liu trc;
theo bin c hoc loi truy nhp - quyn c c u tin trc quyn ghi d liu; da
trn thi im truy nhp - ai c yu cu truy xut trc th c quyn truy nhp d liu
trc; hoc theo c ch lp lch truy xut hay cc c ch kha [7]...
m bo d liu khi c s c. Vic qun l d liu tp trung c th lm tng kh nng
mt mt hoc sai lch thng tin khi c s c nh mt in t xut, mt phn a lu tr
CSDL b h v.v... Mt s h iu hnh mng c cung cp dch v sao lu nh a cng
(c ch s dng a cng d phng - RAID), t ng kim tra v khc phc li khi c
s c, tuy nhin, bn cnh dch v ca h iu hnh, m bo CSDL lun lun n
nh, mt CSDL nht thit phi c mt c ch khi phc d liu khi cc s c bt ng
xy ra.
4/174

Cc i tng s dng CSDL:

Nhng ngi s dng CSDL khng chuyn v lnh vc tin hc v CSDL, do


CSDL cn c cc cng c cho nhng ngi s dng khng chuyn c th s dng
khai thc CSDL khi cn thit.
Cc chuyn vin tin hc bit khai thc CSDL. Nhng ngi ny c th xy dng cc
ng dng khc nhau phc v cho cc mc ch khc nhau trn CSDL.
Nhng ngi qun tr CSDL, l nhng ngi hiu bit v tin hc, v cc h qun
tr CSDL v h thng my tnh. H l ngi t chc CSDL (khai bo cu trc CSDL,
ghi nhn cc yu cu bo mt cho cc d liu cn bo v ...) do h phi nm r cc
vn k thut v CSDL c th phc hi d liu khi c s c. H l nhng ngi
cp quyn hn khai thc CSDL, do vy h c th gii quyt c cc vn tranh chp
d liu, nu c.
- Thng tin c khai thc ch phc v cho mc ch hp nn kh nng p ng nhanh
chng, kp thi.
Nhc im:
- Do thng tin c t chc mi phng ban mi khc, cng nh phn mm cng c
trin khai mi ni cng rt khc nhau nn s phi hp t chc v khai thc cc phng
ban l kh khn. Thng tin phng ban ny khng s dng c cho phng ban khc,
ti n v con vi n v cp trn. Cng mt thng tin c nhp vo my ti nhiu ni
khc nhau gy ra lng ph cng sc nhp tin v khng gian lu tr trn cc vt mang tin.
S trng lp thng tin c th dn n tnh trng khng nht qun d liu. Chng hn,
nhn vin Nguyn Vn Quang c ghi y phng T chc, nhng ti phng K
ton ch ghi tt l Nguyn v Quang.
Thng tin c t chc nhiu ni nn vic cp nht cng d lm mt tnh nht qun
d liu. Mt cn b ch cht ca cng ty c thay i v hon cnh gia nh (mi ci
v / ly chng, sinh thm con ...) c th c cp nht ngay ti n v nhng sau mt
thi gian mi c cp nht ti Tng cng ty.
Do h thng c t chc thnh cc h thng file ring l nn thiu s chia s thng
tin gia cc ni. Vic kt ni cc h thng ny hay vic nng cp ng dng s l rt kh
khn.
Qua phn tch trn chng ta nhn thy vic t chc d liu theo h thng cc tp tin c
nhiu nhc im. Vic xy dng mt h thng tin m bo c tnh cht nht qun

5/174

d liu, khng trng lp thng tin m vn p ng c nhu cu khai thc ng thi ca


tt c cc phng ban cng ty v tng cng ty l thc s cn thit.

H phn mm qun tr CSDL.

gii quyt tt tt c cc vn t ra cho mt CSDL nh nu trn: tnh ch quyn,


c ch bo mt hay phn quyn hn khai thc CSDL, gii quyt tranh chp trong qu
trnh truy nhp d liu, v phc hi d liu khi c s c ... th cn phi c mt h thng
cc phn mm chuyn dng. H thng cc phn mm c gi l h qun tr CSDL
(ting Anh l DataBase Management System - DBMS). l cc cng c h tr tch
cc cho cc nh phn tch & thit k CSDL v nhng ngi khai thc CSDL. Cho n
nay c kh nhiu h qun tr CSDL mnh c a ra th trng nh: Visual FoxPro,
MicroSoft Access, SQL-Server, DB2, Sybase, Paradox, Informix, Oracle... vi cc cht
lng khc nhau.
Mi h qun tr CSDL u c ci t da trn mt m hnh d liu c th. Hu ht
cc h qun tr CSDL hin nay u da trn m hnh quan h (Xem chng III). D da
trn m hnh d liu no, mt h qun tr CSDL cng phi c:
Ngn ng giao tip gia ngi s dng (NSD) v CSDL, bao gm:
Ngn ng m t d liu (Data Definition Language - DDL) cho php khai bo
cu trc ca CSDL, khai bo cc mi lin h ca d liu (Data RelationShip) v cc quy
tc (Rules, Constraint) qun l p t ln cc d liu .
Ngn ng thao tc d liu (Data Manipulation Language - DML) cho php ngi s
dng c th thn (Insert), xa (Delete), sa (Update) d liu trong CSDL.
Ngn ng truy vn d liu, hay ngn ng hi p c cu trc (Structured Query
Language - SQL) cho php nhng ngi khai thc CSDL (chuyn nghip hoc khng
chuyn) s dng truy vn cc thng tin cn thit trong CSDL.
Ngn ng qun l d liu (Data Control Language - DCL) cho php nhng ngi
qun tr h thng thay i cu trc ca cc bng d liu, khai bo bo mt thng tin v
cp quyn hn khai thc CSDL cho ngi s dng.
T in d liu (Data Dictionary) dng m t cc nh x lin kt, ghi nhn cc
thnh phn cu trc ca CSDL, cc chng trnh ng dng, mt m, quyn hn s dng
v.v....
C bin php bo mt tt khi c yu cu bo mt.

6/174

C ch gii quyt vn tranh chp d liu. Mi h qun tr CSDL cng c th ci t


mt c ch ring gii quyt cc vn ny. Mt s bin php sau y c s dng:

Cp quyn u tin cho tng ngi s dng (ngi qun tr CSDL thc hin).

nh du yu cu truy xut d liu, phn chia thi gian, ngi no c yu cu trc


th c quyn truy xut d liu trc.
H qun tr CSDL cng phi c c ch sao lu (Backup) v phc hi (Restore) d liu
khi c s c xy ra. iu ny c th c thc hin bng cch:

nh k kim tra CSDL, sau mt thi gian nht nh h qun tr CSDL s t ng


to ra mt bn sao CSDL. Cch ny hi tn km, nht l i vi cc CSDL ln.

To nht k (LOG) thao tc CSDL. Mi thao tc trn CSDL u c h thng ghi


li, khi c s c xy ra th t ng ln ngc li (RollBack) phc hi CSDL.
H qun tr CSDL phi cung cp mt giao din (Interface) tt, d s dng, d hiu cho
nhng ngi s dng khng chuyn.
Ngoi ra, mt h qun tr CSDL phi p ng c mt yu cu rt quan trng, l
bo m tnh c lp gia d liu v chng trnh: Khi c s thay i d liu (nh sa
i cu lu tr cc bng d liu, thm cc ch mc (Index) ...) th cc chng trnh ng
dng (Application) ang chy trn CSDL vn khng cn phi c vit li, hay cng
khng lm nh hng n nhng NSD khc.

Vi nt v qu trnh pht trin cc h qun tr CSDL:


Tri qua gn 40 nm nghin cu v ci t ng dng, cc h qun tr CSDL khng ngng
c pht trin. Cc h qun tr CSDL u tin ra i vo u nhng nm 60 ca th k
20 da trn m hnh d liu phn cp v mng, trong s c h qun tr CSDL c tn
l IMS ca hng IBM da trn m hnh d liu phn cp.
Nm 1976, h qun tr CSDL u tin da trn m hnh d liu quan h ca hng IBM
mang tn System-R ra i. T nm 1980 hng IBM cho ra i h qun tr CSDL trn
cc my Main Frame mang tn DB2, tip theo l cc h qun tr CSDL Dbase, Sybase,
Oracle, Informix, SQL-Server ...
T nhng nm 1990 ngi ta bt u c gng xy dng cc h qun tr CSDL hng
i tng (Oriented Object DataBase Management System) nh Orion, Illustra, Itasca,
... Tuy nhin hu ht cc h ny u vn l quan h - hng i tng, ngha l, xt v

7/174

bn cht, chng vn da trn nn tng ca m hnh quan h. H qun tr CSDL hng


i tng thun nht c th l h ODMG ra i vo nm 1996.

H phn mm qun tr CSDL.

gii quyt tt tt c cc vn t ra cho mt CSDL nh nu trn: tnh ch quyn,


c ch bo mt hay phn quyn hn khai thc CSDL, gii quyt tranh chp trong qu
trnh truy nhp d liu, v phc hi d liu khi c s c ... th cn phi c mt h thng
cc phn mm chuyn dng. H thng cc phn mm c gi l h qun tr CSDL
(ting Anh l DataBase Management System - DBMS). l cc cng c h tr tch
cc cho cc nh phn tch & thit k CSDL v nhng ngi khai thc CSDL. Cho n
nay c kh nhiu h qun tr CSDL mnh c a ra th trng nh: Visual FoxPro,
MicroSoft Access, SQL-Server, DB2, Sybase, Paradox, Informix, Oracle... vi cc cht
lng khc nhau.
Mi h qun tr CSDL u c ci t da trn mt m hnh d liu c th. Hu ht
cc h qun tr CSDL hin nay u da trn m hnh quan h (Xem chng III). D da
trn m hnh d liu no, mt h qun tr CSDL cng phi c:
Ngn ng giao tip gia ngi s dng (NSD) v CSDL, bao gm:

Ngn ng m t d liu (Data Definition Language - DDL) cho php khai bo


cu trc ca CSDL, khai bo cc mi lin h ca d liu (Data RelationShip) v cc quy
tc (Rules, Constraint) qun l p t ln cc d liu .

Ngn ng thao tc d liu (Data Manipulation Language - DML) cho php ngi
s dng c th thn (Insert), xa (Delete), sa (Update) d liu trong CSDL.

Ngn ng truy vn d liu, hay ngn ng hi p c cu trc (Structured Query


Language - SQL) cho php nhng ngi khai thc CSDL (chuyn nghip hoc khng
chuyn) s dng truy vn cc thng tin cn thit trong CSDL.

Ngn ng qun l d liu (Data Control Language - DCL) cho php nhng ngi
qun tr h thng thay i cu trc ca cc bng d liu, khai bo bo mt thng tin v
cp quyn hn khai thc CSDL cho ngi s dng.
T in d liu (Data Dictionary) dng m t cc nh x lin kt, ghi nhn cc
thnh phn cu trc ca CSDL, cc chng trnh ng dng, mt m, quyn hn s dng
v.v....
C bin php bo mt tt khi c yu cu bo mt.

8/174

C ch gii quyt vn tranh chp d liu. Mi h qun tr CSDL cng c th ci t


mt c ch ring gii quyt cc vn ny. Mt s bin php sau y c s dng:

Cp quyn u tin cho tng ngi s dng (ngi qun tr CSDL thc hin).

nh du yu cu truy xut d liu, phn chia thi gian, ngi no c yu cu trc


th c quyn truy xut d liu trc.
H qun tr CSDL cng phi c c ch sao lu (Backup) v phc hi (Restore) d liu
khi c s c xy ra. iu ny c th c thc hin bng cch:

nh k kim tra CSDL, sau mt thi gian nht nh h qun tr CSDL s t ng


to ra mt bn sao CSDL. Cch ny hi tn km, nht l i vi cc CSDL ln.

To nht k (LOG) thao tc CSDL. Mi thao tc trn CSDL u c h thng ghi


li, khi c s c xy ra th t ng ln ngc li (RollBack) phc hi CSDL.
H qun tr CSDL phi cung cp mt giao din (Interface) tt, d s dng, d hiu cho
nhng ngi s dng khng chuyn.
Ngoi ra, mt h qun tr CSDL phi p ng c mt yu cu rt quan trng, l
bo m tnh c lp gia d liu v chng trnh: Khi c s thay i d liu (nh sa
i cu lu tr cc bng d liu, thm cc ch mc (Index) ...) th cc chng trnh ng
dng (Application) ang chy trn CSDL vn khng cn phi c vit li, hay cng
khng lm nh hng n nhng NSD khc.

Vi nt v qu trnh pht trin cc h qun tr CSDL:


Tri qua gn 40 nm nghin cu v ci t ng dng, cc h qun tr CSDL khng ngng
c pht trin. Cc h qun tr CSDL u tin ra i vo u nhng nm 60 ca th k
20 da trn m hnh d liu phn cp v mng, trong s c h qun tr CSDL c tn
l IMS ca hng IBM da trn m hnh d liu phn cp.
Nm 1976, h qun tr CSDL u tin da trn m hnh d liu quan h ca hng IBM
mang tn System-R ra i. T nm 1980 hng IBM cho ra i h qun tr CSDL trn
cc my Main Frame mang tn DB2, tip theo l cc h qun tr CSDL Dbase, Sybase,
Oracle, Informix, SQL-Server ...
T nhng nm 1990 ngi ta bt u c gng xy dng cc h qun tr CSDL hng
i tng (Oriented Object DataBase Management System) nh Orion, Illustra, Itasca,
... Tuy nhin hu ht cc h ny u vn l quan h - hng i tng, ngha l, xt v

9/174

bn cht, chng vn da trn nn tng ca m hnh quan h. H qun tr CSDL hng


i tng thun nht c th l h ODMG ra i vo nm 1996.

Cc mc biu din mt CSDL.

Theo kin trc ANSI-PARC, mt CSDL c 3 mc biu din: Mc trong (cn gi l mc


vt l - Physical), mc quan nim (Conception hay Logical) v mc ngoi.

Mc trong:
y l mc lu tr CSDL. Ti mc ny, vn cn gii quyt l, d liu g v c lu
tr nh th no? u (a t, bng t, track, sector ... no)? Cn cc ch mc g? Vic
truy xut l tun t (Sequential Access) hay ngu nhin (RandomAccess) i vi tng
loi d liu.

10/174

Nhng ngi hiu v lm vic vi CSDL ti mc ny l ngi qun tr CSDL


(Administrator), nhng ngi s dng (NSD) chuyn mn.
Mc quan nim:
Ti mc ny s gii quyt cho cu hi CSDL cn phi lu gi bao nhiu loi d liu?
l nhng d liu g? Mi quan h gia cc loi d liu ny nh th no?
T th gii thc (Real Universe) cc chuyn vin tin hc qua qu trnh kho st v phn
tch, cng vi nhng ngi s m nhn vai tr qun tr CSDL, s xc nh c nhng
loi thng tin g c cho l cn thit phi a vo CSDL, ng thi m t r mi lin
h gia cc thng tin ny. C th ni cch khc, CSDL mc quan nim l mt s biu
din tru tng CSDL mc vt l; hoc ngc li, CSDL vt l l s ci t c th ca
CSDL mc quan nim.
V d 1.2:
Ngi ta mun xy dng mt h qun tr CSDL qun l cc nhn vin ca mt cng
ty. Mi trng (th gii thc) ca cng ty y gm c cc phng ban (Department)
- mi phng ban c mt tn gi khc nhau, mt a ch tr s chnh (Location), cc
s in thoi (Telephone) lin lc, c mt ngi lm trng phng ban, hng nm
c cp mt khon kinh ph hot ng (Expense Budget), v phi t mt doanh thu
(Revenue Budget). trnh vit tn phng ban di d dn n vit sai, ngi ta thng
t cho mi phng ban mt gi tr s (gi l s hiu phng ban - Department Number)
v s dng s hiu ny xc nh tn v cc thng tin khc ca n.
Cng ty c mt s cng vic c th sp xp cho cc nhn vin trong cng ty. thun li
cho vic theo di cng vic cng nh trong cng tc tuyn chn nhn vin mi, ngi
ta lp thnh mt bng cc cng vic (JOBS) gm cc thng tin: tn tt cng vic (Job),
tn cng vic (Job Name), mc lng ti thiu (Min Salary) v ti a (Max Salary) ca
cng vic ny v cho bit cng vic ny cn c ngi lnh o khng. Mt cng vic c
th c nhiu ngi cng lm.
Mi phng ban c th c t 1 n nhiu nhn vin (Employee). Mi nhn vin c mt
tn gi, mt cng vic lm (Job), mt khon tin lng hng thng (Salary), s hiu
phng ban m anh ta ang cng tc. Nu mun, ngi ta c th theo di thm cc thng
tin khc nh ngy sinh (Birth Day), gii tnh (Sex) v.v... trnh vit tn nhn vin di
d dn n sai st, mi nhn vin c th c gn cho mt con s duy nht, gi l m s
nhn vin (EmpNo).
Nu yu cu qun l ca cng ty ch dng vic theo di danh sch nhn vin trong
tng phng ban cng cc cng vic ca cng ty th cn 3 loi thng tin: Phng ban
(DEPARTMENT), Cng vic (JOBS) v Nhn vin (EMPLOYEE) vi cc thng tin nh

11/174

trn l . C th cng ty c thm yu cu qun l c qu trnh tuyn dng v nng


lng th cn c thm mt (hoc mt s) loi thng tin v qu trnh: M s nhn vin,
ln thay i, thi gian bt u v kt thc s thay i, mc lng, .v.v...
T mi trng th gii thc, xut pht t nhu cu qun l, vic xc nh cc loi thng
tin cn lu tr v cc mi quan h gia cc thng tin nh th no ... chnh l cng
vic mc quan nim.
Mc ngoi.
l mc ca ngi s dng v cc chng trnh ng dng. Lm vic ti mc
ny c cc nh chuyn mn, cc k s tin hc v nhng ngi s dng khng chuyn.
Mi ngi s dng hay mi chng trnh ng dng c th c "nhn" (View) CSDL
theo mt gc khc nhau. C th "nhn" thy ton b hay ch mt phn hoc ch l cc
thng tin tng hp t CSDL hin c. Ngi s dng hay chng trnh ng dng c th
hon ton khng c bit v cu trc t chc lu tr thng tin trong CSDL, thm ch
ngay c tn gi ca cc loi d liu hay tn gi ca cc thuc tnh. H ch c th lm
vic trn mt phn CSDL theo cch "nhn" do ngi qun tr hay chng trnh ng dng
quy nh, gi l khung nhn (View).
V d 1.3:
Cng v d trn, Phng T chc nhn s gi y cn qun l thm c cc thng tin chi
tit trong l lch ca nhn vin trong cng ty: qu trnh o to chuyn mn k thut kinh t - chnh tr - qun l Nh nc, qu trnh c khen thng, cc ln b k lut,
qu trnh hot ng Cch mng b ch bt - b t y, qu trnh cng tc, qu trnh nng
lng, s lc tiu s cha m - anh ch em rut - v chng - con v.v... R rng rng,
Phng K ton c th ch c nhn thy CSDL l danh sch nhn vin ang lm cc
cng vic c th trong tng Phng ban vi cc mc lng tha thun, m khng c
thy l lch ca cc nhn vin. Lnh o cng ty c th ch cn "nhn" thy s lng
nhn vin, tng s lng phi tr v ai l ngi lnh o ca tng Phng ban. Trong
khi ngay c nhng ngi trong Phng T chc nhn s cng c th c ngi c
xem l lch ca tt c cn b, cng nhn vin ca cng ty, nhng cng c th c ngi
ch c xem l lch ca nhng cn b, cng nhn vin vi mc lng t xx ng tr
xung...
Nh vy, cu trc CSDL vt l (mc trong) v mc quan nim th ch c mt; nhng ti
mc ngoi, mc ca cc chng trnh ng dng v ngi s dng trc tip CSDL, th
c th c rt nhiu cu trc ngoi tng ng.

12/174

Nhng khi nim c bn


S tng qut ca mt h qun tr c s d liu

Hnh 1.6.1 S tng qut ca mt h qun tr CSDL


Hnh 1.6.1 minh ha s tng qut ca mt h qun tr CSDL. Chng ta thy c 3
mc: mc chng trnh khai bo cu trc v chng trnh ng dng; mc m t CSDL,
thao tc CSDL v cc t in d liu; v mc CSDL.

Mi h qun tr CSDL c mt ngn ng khai bo (hay m t: Data Definition LanguageDDL) cu trc CSDL ring. Nhng ngi thit k v qun tr CSDL thc hin cc cng
vic khai bo cu trc CSDL.
Cc chng trnh khai bo cu trc CSDL c vit bng ngn ng m h qun tr
CSDL cho php. Hai cng vic khai bo l khai bo cu trc lgic ( l vic khai bo
cc loi d liu v cc mi lin h gia cc loi d liu , cng cc rng buc ton vn
d liu - RBTV) v khai bo vt l (d liu c lu tr theo dng no?, c bao nhiu
ch mc?).
Cc chng trnh ng dng c vit bng ngn ng thao tc CSDL (Data
Manipulation Language - DML) vi mc ch:

Truy xut d liu

Cp nht d liu (thm, xa, sa d liu)


13/174

Khai thc d liu

Ngn ng thao tc CSDL cn c s dng cho nhng NSD thao tc trc tip vi
CSDL.
T in d liu (Data Dictionary - DD) l mt CSDL ca h qun tr CSDL s dng
lu tr cu trc CSDL, cc thng tin bo mt, bo m an ton d liu v cc cu trc
ngoi. Nhng ngi lm quen vi h qun tr CSDL ca MicroSoft Access c th
thy cc t in d liu ny thng qua cc bng (Table) c tn bt u bng ch MSys
nh MSysACEs, MSysColumn, MSysIMEXColumn, MSysIMEXSpecs, MSysIndexes,
MSysMacros, MSysObjects, MSysQueries, MSysRelationShips ... T in d liu cn
c gi l Siu CSDL (Meta-DataBase).
(*) Qu trnh hot ng ca mt chng trnh ng dng thng qua cc tng ca CSDL:

Hnh 1.6.2. Qu trnh hot ng ca mt chng trnh ng dng thng qua cc tng
ca CSDL.
Hnh 1.6.2 cho chng ta mt cch nhn v qu trnh hot ng ca mt chng trnh ng
dng thng qua cc tng ca CSDL:
Cc yu cu ca chng trnh ng dng c chuyn ti h qun tr CSDL (theo
con ng s 2). Ti y h qun tr CSDL s tham kho cc t in d liu (Meta
DataBase) tm kim cc nh x cu trc ngoi vi cu trc quan nim v cu trc vt
l (cc ng a, b v c). Ti y h qun tr CSDL c th s tham kho ti vng m ca
14/174

n xc nh xem cu tr li c sn cha, nu c th tr li cho chng trnh


ng dng thng qua con ng s 9; ngc li s yu cu h iu hnh truy xut thng
tin theo con ng s 3. Ti y h iu hnh s gi yu cu truy xut thng tin trong
CSDL thng qua h thng xut nhp ca HH (cc con ng s 4 v 5). Nu vic truy
xut khng thnh cng n s tr li yu cu v cho h qun tr CSDL (c th thng qua
cc m li) qua con ng s 6; nu thnh cng th d liu s c chuyn vo vng
m ca h qun tr CSDL. Qua x l, h qun tr CSDL s chuyn d liu vo vng
m ca chng trnh ng dng n x l (qua con ng 8a) v cho ra kt qu tr li
ca chng trnh ng dng qua con ng s 10.
Theo s trn c th nhn thy cc trc trc c th xy ra ti cc con ng (2a), (3),
(4), (5), (6) v (8). Li ti 2 con ng s (6) v (8) c th l do trn vng lm vic.

Tnh c lp gia d liu v chng trnh.

Lc khi nim l s biu din th gii thc bng mt loi ngn ng ph hp ca h


qun tr CSDL. Qua hnh 1.5.1 - S tng qut ca mt CSDL theo kin trc ANSI
- PARC, chng ta c th thy, t chng trnh ng dng v ngi khai thc trc tip
CSDL thng qua mt khung nhn ti CSDL (View) tn ti hai mc c lp d liu. Th
nht, lc vt l c th thay i do ngi qun tr CSDL m hon ton khng lm
thay i cc lc con. Ngi qun tr CSDL c th t chc li CSDL bng cch thay
i cch t chc, cu trc vt l ca d liu trn cc thit b nh th cp lm thay i
hiu qu tnh ton ca cc chng trnh ng dng, nhng khng i hi phi vit li cc
chng trnh ng dng. iu ny c gi l tnh c lp vt l ca d liu - hay tnh
c lp ca d liu mc vt l (Physical Independence). Tnh c lp d liu mc vt
l c m bo ti mc no cn ph thuc vo cht lng ca h qun tr CSDL.
Th hai, gia khung nhn vi lc quan nim cng c th tn ti mt loi c lp
v d liu. Trong qu trnh khai thc CSDL ngi ta c th nhn thy tnh cn thit
phi sa i lc khi nim nh b sung thm thng tin hoc xa bt cc thng
tin ca cc thc th ang tn ti trong CSDL. Vic thay i lc khi nim khng
lm nh hng ti cc lc con, do khng cn phi vit li cc chng trnh ng
dng. Tnh cht c lp ny c gi l tnh c lp ca d liu mc lgic (Logical
Independence).
Tnh c lp gia d liu vi chng trnh ng dng l mc tiu ch yu ca cc h
qun tr CSDL. C.J. Date [3] nh ngha tnh c lp d liu l "tnh bt bin ca cc

15/174

h ng dng i vi cc thay i bn trong cu trc lu tr v chin lc truy nhp


CSDL".

Nhng cch tip cn mt CSDL

M hnh d liu l s tru tng ha mi trng thc, n l s biu din d liu mc


quan nim. Mi loi m hnh d liu c trng cho mt cch tip cn d liu khc nhau
ca nhng nh phn tch - thit k CSDL, mi loi u c cc u im v mt hn ch
ca n nhng vn c nhng m hnh d liu ni tri v c nhiu ngi quan tm
nghin cu. Cho n nay ang tn ti 5 loi m hnh d liu, l: m hnh d liu
mng, m hnh d liu phn cp, m hnh d liu quan h, m hnh d liu thc th kt hp v m hnh d liu hng i tng. Chng ny s ln lt gii thiu cc loi
m hnh d liu nu trn.

Cch tip cn theo m hnh d liu mng

M hnh d liu mng (Network Data Model) - cn c gi tt l m hnh mng hoc


m hnh li (Network Model) l m hnh c biu din bi mt th c hng.
Trong m hnh ny ngi ta a vo cc khi nim: mu tin hay bn ghi (Record), loi
mu tin (Record Type) v loi lin h (Set Type):
(a) Loi mu tin (Recorde Type) l mu c trng cho 1 loi i tng ring bit.
Chng hn nh trong vic qun l nhn s ti mt n v, i tng cn phn nh ca
th gii thc c th l Phng, Nhn vin, Cng vic, l lch ... do c cc loi mu tin
c trng cho tng i tng ny. Trong th biu din m hnh mng mi loi mu
tin c biu din bi mt hnh ch nht, mt th hin (Instance) ca mt loi mu tin
c gi l bn ghi. Trong v d trn loi mu tin Phng c cc mu tin l cc phng,
ban trong n v; loi mu tin nhn vin c cc mu tin l cc nhn vin ang lm vic
ti cc phng ban ca c quan...
(b) Loi lin h (Set Type) l s lin kt gia mt loi mu tin ch vi mt loi mu tin
thnh vin. Trong th biu din m hnh mng mi loi lin h c biu din bi
mt hnh bu dc (oval) v s lin kt gia 2 loi mu tin c th hin bi cc cung c
hng (cc mi tn) i t loi mu tin ch ti loi lin h v t loi lin h ti loi mu
tin thnh vin.

16/174

Trong loi lin kt ngi ta cn ch ra s lng cc mu tin tham gia trong mi kt hp.
C cc loi lin h sau:
-:- 1 (One-to-One): Mi mu tin ca loi mu tin ch ch kt hp vi ng 1 mu tin
ca loi mu tin thnh vin. V d, mi nhn vin c duy nht mt l lch c nhn.
-:-n (One-to-Many): Mi mu tin ca loi mu tin ch ch kt hp vi 1 hay nhiu
mu tin ca loi mu tin thnh vin. V d, mi phng ban c t 1 n nhiu nhn vin.
Mi 1 nhn vin ch thuc mt phng ban nht nh.

n-:-1 (Many-to-One): Nhiu mu tin ca loi mu tin ch ch kt hp vi ng 1


mu tin ca loi mu tin thnh vin. V d, nhiu nhn vin cng lm mt cng vic.

quy (Recursive): Mt loi mu tin ch cng c th ng thi l loi mu tin


thnh vin vi chnh n. Ta n rng loi lin h ny l quy.
Hnh 2.1 biu din mt v d v m hnh d liu mng i vi CSDL nhn s ca mt
n v. Trong th ny, chng ta c 4 loi mu tin: phng, nhn-vin, cng-vic v
l-lch; 4 loi lin h: phng gm 1 n nhiu nhn-vin; nhn-vin c ng 1 l-lch;
nhiu nhn-vin cng lm mt cng-vic; 1 nhn-vin c th c 1 hay nhiu nhn-vin
l thn nhn ca mnh.
M hnh d liu mng tng i n gin, d s dng nhng n khng thch hp trong
vic biu din cc CSDL c quy m ln bi trong mt th c hng kh nng din
t ng ngha ca d liu, nht l cc d liu v cc mi lin h phc tp ca d liu
trong thc t l rt hn ch.

17/174

Hnh 2.1 M hnh d liu mng (Network Model)


M hnh d liu phn cp.

M hnh d liu phn cp (Hierachical Data Model) - c gi tt l m hnh phn cp


(Hierachical Model): M hnh l mt cy (Tree), trong mi nt ca cy biu din
mt thc th, gia nt con v nt cha c lin h vi nhau theo mt mi quan h xc
nh.
M hnh d liu phn cp s dng cc khi nim sau:
(a) Loi mu tin: ging khi nim mu tin trong m hnh d liu mng.
(b) Loi mi lin h: Kiu lin h l phn cp, theo cch:

Mu tin thnh vin ch ng vai tr thnh vin ca mt mi lin h duy nht, tc l


n thuc mt ch duy nht. Nh vy, mi lin h t mu tin ch ti cc mu tin thnh
vin l 1n, v t mu tin (hay bn ghi - record) thnh vin vi mu tin ch l 11.

Gia 2 loi mu tin ch tn ti 1 mi lin h duy nht.

V d 2.2.1:
18/174

Trong cuc Tng iu tra s dn nm 1989, chng trnh nhp phiu iu tra c vit
bng ngn ng CENS4 cho kt qu l cc file d liu nhp dng vn bn c t chc
nh sau:
Cc dng l cc mu tin (hay bn ghi) c di thay i.
C 6 loi mu tin:

Mu tin c trng cho tnh, thnh ph gm M s tnh thnh, Tn tnh thnh ph.
'02' l M s Thnh ph H Ch Minh.

Mu tin c trng cho qun huyn gm M s tnh thnh+M s qun huyn, Tn


qun huyn trong tnh thnh ph . '0201' l M s qun Nht ca TP.H Ch Minh.

Mu tin c trng cho phng x gm M s tnh thnh+M s qun huyn+M s


phng x, Tn phng x thuc qun huyn trong tnh thnh ph . '020101' l M
s phng Bn ngh, Qun Nht, TP.H Ch Minh.

Mu tin c trng cho a bn iu tra trong mt phng x. '02010101' l m s


a bn iu tra s 01 trong phng Bn ngh.

Mu tin c trng cho h iu tra, gm M s tnh + M s qun + M s phng +


M s a bn + S th t h iu tra trong a bn, Tng s nhn khu trong h, Trong
: N, Tng s tr di 16 tui.

Mu tin c trng cho nhn khu ca h, gm cc thng tin xc nh h iu tra,


S th t nhn khu trong h, Quan h vi ch h (19), Gii tnh (1,2,3), Thng sinh,
Nm sinh, Trnh vn ha, ...
y r rng l mt s phn cp trong file CSDL. Mt tnh thnh ph (th) c nhiu
qun huyn, mt qun huyn ch thuc mt tnh thnh duy nht. Mt qun huyn (th)
c nhiu phng x v mt phng x ch thuc mt qun huyn duy nht. Mi phng
x c chia thnh nhiu a bn iu tra, mi a bn ch thuc mt phng x duy
nht v.v...
Hnh 2.2 m t cy phn cp ca m hnh d liu i vi CSDL Tng iu tra s dn
Ton quc 0 gi ngy 01 thng 01 nm 1989.

19/174

Hnh 2.2 M hnh d liu phn cp (Hierachical Model)

20/174

Nhng cch tip cn mt c s d liu


M hnh d liu quan h.
M hnh d liu quan h (Relational Data Model) - cn c gi tt l m hnh quan
h (Relational Model) do E.F.Codd [2] xut nm 1970. Nn tng c bn ca n
l khi nim l thuyt tp hp trn cc quan h, tc l tp ca cc b gi tr (Value
Tuples). Trong m hnh d liu ny nhng khi nim s c s dng bao gm thuc
tnh (Attribute), quan h (Relation), lc quan h (Relation Schema), b (Tuple),
kha (Key).
M hnh d liu quan h l m hnh c nghin cu nhiu nht, v cho thy rng n
c c s l thuyt vng chc nht. M hnh d liu ny cng vi m hnh d liu thc
th kt hp ang c s dng rng ri trong vic phn tch v thit k CSDL hin nay.
Chng ta s nghin cu chi tit m hnh d liu ny cc chng sau.

M hnh d liu thc th - kt hp.


M hnh d liu thc th - kt hp (Entity - RelationShip Model) do P.P.Chen xut
vo nm 1976. Cc khi nim ch yu c s dng trong l thuyt ca m hnh ny
l:
Loi thc th (Entity Type): L mt loi i tng cn qun l trong CSDL, chng hn,
KHOA, LP-HC, MN-HC, GING-VIN, HC-VIN, tc l, cng tng t nh
khi nim v loi mu tin trong m hnh mng v m hnh phn cp.
Thc th (Entity): L mt th hin hoc mt i tng ca mt loi thc th. Khi nim
ny tng t nh khi nim mu tin trong m hnh d liu mng v m hnh d liu
phn cp.
Thuc tnh ca loi thc th (Entity Attribute): L cc c tnh ring bit c bn ca
loi thc th, tng t khi nim thuc tnh (Attribute) trong m hnh d liu quan h s
trnh by trong Chng III. V d, loi thc th KHOA c cc thuc tnh M-Khoa, TnKhoa. Loi thc th LP-HC c mt s thuc tnh M-Lp, Tn-Lp, Nin-Kha,
S-Hc-Vin. Loi thc th MN-HC c mt s thuc tnh M-Mn, Tn-Mn, Sv-Hc-Trnh. Loi thc th HC-VIN c mt s thuc tnh M-Hc-Vin, Tn-HcVin, Ngy-Sinh, Qu-Qun. Loi thc th GING-VIN c mt s thuc tnh MGing-Vin, Tn-Ging-Vin, Cp-Hc-V, Chuyn-Ngnh. v.v...
Kha ca loi thc th (Entity Key): l cc thuc tnh nhn din ca loi thc th.
Cn c vo cc gi tr ca cc thuc tnh nhn din ny ngi ta c th xc nh mt

21/174

thc th duy nht ca mt loi thc th. V d, kha ca loi thc th LP-HC c th
l M-Lp; kha ca loi thc th HC-VIN c th l M-Hc-Vin; kha ca loi
thc th MN-HC c th l M-Mn-Hc ... Khi nim ny cng tng tc nh khi
nim kha (Key) trong m hnh d liu quan h s trnh by trong Chng III.
Loi mi kt hp (Entity Relationship): Tng t nh loi mi lin h trong m hnh d
liu mng. Trong th biu din ca m hnh ny ngi ta cng s dng hnh elp
th hin mt mi kt hp gia cc thc th. Gia 2 loi thc th c th tn ti nhiu hn
mt mi kt hp.
S ngi ca mi kt hp (RelationShip Degree): L tng s loi thc th tham gia vo
mi kt hp. V d, gia loi thc th SINH-VIN v KHOA tn ti mi kt hp "trc
thuc" - l mi kt hp 2 ngi. KT-QU-THI (hoc KIM-TRA) ca sinh vin l
mi kt hp gia 3 thc th SINH-VIN, MN-THI v IM-THI - l mi kt hp
3 ngi.
Thuc tnh ca mi kt hp (RelationShip Attribute): Mi kt hp c th c cc thuc
tnh ca ring n. Thng thng mi kt hp c cc thuc tnh l kha ca cc loi thc
th tham gia vo mi kt hp, ngoi ra cn c thm nhng thuc tnh b sung khc. V
d, trong mi kt hp 3 ngi k trn, thuc tnh ca mi kt hp ny c th bao gm
M-Hc-Vin, M-Mn-Hc, im-Thi; v c th c thm cc thuc tnh b sung khc
nh Ln-Thi-Th, Ngy-Thi, Ghi-Ch v.v...
Bn s ca mi nhnh ca mi kt hp (RelationShip Cardinal): Mi nhnh (hay mi
chiu) ca mi kt hp l mi kt hp ni mt loi thc th vi mt mi kt hp. Trong
nhnh ny cn xc nh s lng ti thiu v s lng ti a cc thc th ca nhnh
s tham gia vo mt thc th ca mi kt hp. Hai i lng ny - t trong cp du
ngoc trn - c gi l bn s ca mi kt hp. V d, trong mi kt hp 3 ngi nu
trn, ti nhnh ni loi thc th HC-VIN vi mi kt hp KT-QU-THI l (1,n),
bi v s c t nht mt hc vin tham gia k thi v nhiu nht l tt c s hc vin hc
mn cng d thi.
Vo khong nm 1980, m hnh d liu thc th-kt hp c m rng thm mt
s khi nim mi nh "loi thc th chuyn bit ha" (Specialized Entity) v "mi kt
hp quy" (Recursive RelationShip). M hnh ny cng vi m hnh d liu quan h
v m hnh hng i tng c s dng kh ph bin trong vic thit k cc CSDL
hin nay, bi s kt hp ny lm cho m hnh d liu th hin c nhiu ng ngha ca
nhng loi d liu trong CSDL hn.

22/174

Hnh 2.4.1 M hnh d liu thc th - kt hp ca CSDL qun l hc vin.


Hnh 2.4.1 trnh by mt m hnh thc th - kt hp cho CSDL qun l hc vin gm
cc loi thc th KHOA, LP-HC, MN-HC, GING-VIN, HC-VIN. Mi kt
hp HCVINLPHC gia 2 loi thc th HC-VIN v LP-HC. Ti nhnh
HC-VIN bn s ca n l (1,1), iu ny nh phn tch v thit k khng nh tnh
trng thc t l mt hc vin phi theo hc (hay c tn trong danh sch) t nht l mt
lp v cng ch thuc ti a mt lp. Bn s ca nhnh LP-HC l (1,n) ngha l mt
lp (nu c tn trong danh sch lp hc) th c t nht 1 hc vin v ti a c th l
nhiu (n) hc vin theo hc.

23/174

Hnh 2.4.2. M hnh thc th kt hp vi cc thc th chuyn bit ha.


Nu yu cu qun l i hi phi phn tch rch ri thnh 2 loi lp hc chnh quy v
ti chc, v cc lp hc ti chc c th s khng phi hc mt s mn hc hoc s n
v hc trnh t hn so vi cc lp chnh quy, khi m hnh d liu thc th - kt hp
c th hin nh trong s 2.4.2. Thc th chuyn bit ha c th hin trong m
hnh bng hnh ch nht c khung (Frame) i; mt ng kt hp bng nt i c du
gch ngang th hin mi quan h l chuyn bit ho thnh cc loi thc th con chi tit
hn. Cc tn trong cc hnh hp ch nht th hin cc thuc tnh ca loi thc th .

M hnh d liu hng i tng.

M hnh d liu hng i tng (Object Oriented Data Model) ra i t cui nhng
nm 80 v u nhng nm 90. y l loi m hnh tin tin nht hin nay da trn cch

24/174

tip cn hng i tng quen thuc trong cc phng php lp trnh hng i
tng, n s dng cc khi nim nh lp (class), s k tha (inheritance), k tha bi
(tc l kt tha t nhiu lp c s multi-inheritance). c trng c bn ca cch tip cn
ny l tnh ng gi (encapsulation), tnh a hnh (polymorphism) v tnh ti s dng
(Reusability).
Lp l mt kiu d liu c cu trc bao gm cc thnh phn d liu v cc phng thc
x l thao tc trn cu trc d liu . N l mt kiu (hay cu trc) d liu c tru
tng ha, bi v cc tc ng (cn gi l cc phng thc - method) l phc v hoc
thao tc trn kiu d liu ny. D liu v phng thc ha quyn vo nhau thnh mt
th thng nht: d liu cn c nhng cch thc x l tha ng, v phng thc x l
c a vo trong kiu d liu l phc v cho cc i tng c cu trc nh th.
Ngi ta gi s thng nht l s ng gi.
V d, trong vic nh ngha php cng (+) hai s phc c1 v c2 cho mt s phc kt
qu l:
COMPLEX (c1.Real+c2.Real, c1.Image+c2.Image)
ngi ta c th s dng php cng (+) mt cch t nhin nh vic gn kt qu cho
bin phc c = c1 + c2, hon ton t nhin v trong sng hn rt nhiu so vi vic phi
vit mt th tc Add_COMPLEX (COMPLEX &c1, COMPLEX &c2, COMPLEX &c)
cng hai s phc v kt qu c gn vo tham i th 3 ca hm thng qua tham
chiu a ch ca bin c theo cch lp trnh hng th tc trc . V, hin nhin rng,
cch thc cng nh trn l ch c p dng cho cc i tng s phc.
Tng t, cng c th nh ngha php ton cng (+) trong lp ma trn (MATRIX)
cng hai ma trn c cng bc. Khi gi s A v B l hai ma trn m * n; Php gn tng
hai ma trn A v B cho bin ma trn C c th c vit:
C=A+B
r rng l t nhin v d hiu hn i vi cc ng dng lp ma trn so vi vic gi th
tc Add_MATRIX (MATRIX &A, MATRIX &B, MATRIX &C, int m, int n) ...
Phng php tip cn hng i tng trong m hnh d liu mc d cn mi m nhng
hin nay ang c nhiu ngi quan tm nghin cu pht trin v p dng. Cc h
qun tr CSDL hng i tng hin nay vn cha nhiu, mt s cn cha thun nht
(ngha l vic lp trnh l hng i tng nhng CSDL vn ch yu da trn m hnh
quan h.

25/174

M hnh d liu quan h ca e.f.codd


Cc khi nim c bn
Phn m u ca chng III s trnh by k hn v cc khi nim c nhc ti trong
chng II v cch tip cn m hnh d liu kiu quan h v s coi nh l nhng c
s nn tng tip tc nghin cu cc phn tip theo.
Thuc tnh (Attribute):
Thuc tnh l mt tnh cht ring bit ca mt i tng cn c lu tr trong CSDL
phc v cho vic khai thc d liu v i tng.
+V d 3.1.1:
-i tng KHOA (tng ng vi loi thc th KHOA trong m hnh thc th kt hp)
c cc thuc tnh M-khoa, Tn-khoa.
-Loi thc th LP-HC c mt s thuc tnh M-lp, Tn-lp, Nin-kha, S-hcvin.
-Loi thc th MN-HC c mt s thuc tnh M-mn, Tn-mn, S-v-Hc-Trnh.
-Loi thc th HC-VIN c mt s thuc tnh M-khoa, M-hc-vin, Tn-hc-vin,
Ngy-sinh, Qu-qun.
-Loi thc th GING-VIN c mt s thuc tnh M-ging-vin, Tn-ging-vin,
Cp-hc-v, Chuyn-ngnh. v.v...
Cc thuc tnh c c trng bi mt tn gi, kiu gi tr v min gi tr ca chng.
Trong gio trnh ny, trnh by mt cch tng qut v nu khng cn lu n ng
ngha th tn ca cc thuc tnh thng c k hiu bg cc ch ci in hoa u tin
trong bng ch ci la tinh: A, B, C, D, ... Nhng ch ci X, Y, W, Z, ... dng thay cho
mt nhm (hay tp hp) gm nhiu thuc tnh. i khi cn dng cc k hiu ch ci vi
cc ch s A1, A2, ...., An ch cc thuc tnh trong trng hp tng qut hay mun
cp n s ngi (hay s lng cc thuc tnh) ca mt quan h.
Trong cc ng dng thc t, ngi phn tch - thit k thng t tn thuc tnh mt
cch gi nh; nhng lm r hn ngha ca nhng tn gi, ngi ta c th t tn
kh di cho cc thuc tnh vi cc ch in hoa u t hoc vit cch nhau bi du gch
chn (Underscore: _ ).

26/174

Trong cc v d ca ti liu ny, cc tn thuc tnh c vit bng ting Vit gm nhiu
t Vit ni vi nhau bi du tr (-) c ch ci u tin c vit in hoa nhm mc ch
chuyn ti c ng ngha ca tn thuc tnh. iu ny khng c g sai, bi v hin nay
c mt s h qun tr CSDL cho php lm nh vy (MicroSoft Access, SQL-Server cho
php t tn di ti 255 k t v c th c cha cc khong trng, cc k t ting Vit
c du v cc k t c bit khc). Nhng tn thuc tnh hoc tn quan h nh vy, khi
s dng trong Micro Soft Access hoc SQL-Server phi vit chng trong cp du ngoc
vung ( [ ] ), khi s dng trong ORACLE phi vit trong c du nhy kp ( Quotes).
Trong ti liu ny chng ta s dng k php ca SQL-Server.
Trong ci t c th vi mt h qun tr CSDL cn lu n kha cnh t tn cho
cc bng cng nh tn ca thuc tnh. Trong hu ht cc ngn ng lp trnh ni chung
v mt s ngn ng qun tr CSDL ni ring, tn i tng (tn bin, tn quan h hay
tn thuc tnh v.v...) u ch c php vit bng cc ch ci la tinh, ch s v/hoc
du gch chn (underscore _), bt u bng ch ci hoc du gch chn, vi di
tn theo quy nh. Theo l thuyt, ngi ta vn khuyn rng khng nn t tn thuc
tnh qu di (bi v n lm cho vic vit cc cu lnh truy vn tr nn vt v hn) v
cng khng nn t tn thuc tnh qu ngn (v n khng cho thy ng ngha ca thuc
tnh ca quan h), c bit l khng t trng tn hai thuc tnh mang ng ngha khc
nhau thuc hai i tng khc nhau. Chng hn, nu c hai i tng HC-VIN v
GING-VIN u c thuc tnh TN th nn t tn thuc tnh r rng l Tn_hc-vin
ca loi i tng HC-VIN v Tn-gio-vin cho i tng GING-VIN, bi v 2
thuc tnh TN mang ng ngha khc nhau trong 2 quan h khc nhau.
Mi thuc tnh u phi thuc mt kiu kiu d liu (Data Type) nht nh. Kiu d
liu c th l v hng ( l cc kiu d liu c bn nh chui - String hoc Text hoc
Charater, s - Number, Lun l - Logical, ... ) hoc cc kiu d liu c cu trc c
nh ngha da trn cc kiu d liu c sn. Mt s kiu d liu v hng sau y
thng c s dng trong cc h qun tr CSDL :
-

Text (hoc Character, String, hoc Char) kiu vn bn.

Number (hoc Numeric, hoc float) kiu so

Logical (hoc Boolean) kiu lun ly

Date/Time kiu thi gian : ngy thng nm + gi pht

Memo (hoc VarChar) kiu vn bn c di thay i.

Mi h qun tr CSDL c th gi tn cc kiu d liu ni trn bng cc tn gi khc


nhau, ngoi ra cn b sung thm mt s kiu d liu ring ca mnh. Chng hn,
MicroSoft Access c kiu d liu OLE cha cc i tng nhng nh hnh nh, m

27/174

thanh, audio, video ORACLE c kiu d liu LONG cho php cha d liu c kch
thc ln ti 2 t bytes.
Mi thuc tnh c th ch chn ly nhng gi tr trong mt tp hp con ca kiu d liu.
Tp hp cc gi tr m mt thuc tnh A c th nhn c gi l min gi tr (domain)
ca thuc tnh A v c k hiu l MGT(A) hoc Dom(A).
-V d 3.1.2:
Hc vin ang theo hc ti trng H.KHTN th tui ca h nhiu nht l 60 v tui
t nht l 18, va mi tt nghip PTTH. Mc d ni rng Nm-sinh ca hc vin l mt
s nguyn, nhng khng phi s nguyn no cng c th c chn gn vo thuc
tnh Nm-sinh. Gi tr nm sinh ca hc vin ch cn lu 2 ch s sau ca nm sinh tc
l ch cn mt byte ghi nhn nhng nm sinh ca h trong th k 20: t nm 40 n
nm 82. Vi min gi tr ch cha t 40 n 82, nh vy ch cn dng 1 byte lu l
.
Nu kiu d liu ca thuc tnh A l c cu trc th min gi tr ca A l tch -cc
(hoc tp con ca tch -cc - Cartesian) ca cc min gi tr thnh phn.
-V d 3.1.3:
Ta c kiu d liu ngy thng nm theo dng lch vi m t bng ngn ng Pascal nh
sau:
Type DATE = Record
Day

: 1 .. 31;

Month

: 1 .. 12;

Year

: 0 .. 2500;

End;
Tch -cc ca 3 min gi tr ca cc thnh phn l [1 .. 31] x [1 .. 12] x [0 .. 2500].
Nu thuc tnh A thc kiu DATE th MGT(A) [1..31] x [1..12] x [0..2500], bi v
{30,02,1999} khng phi l mt ngy thng nm hp l nn t hp khng thuc
MGT(A). Ngy nay, hu ht cc ngn ng qun tr d liu u c nh ngha kiu ny
nh mt kiu c bn. T hp 3 gi tr thnh phn lun lun c kim tra tnh ng n
trc khi c coi l mt gi tr kiu ngy thng. Hai php ton s hc c th tc ng
trn kiu DATE l php cng (+) hoc tr (-) mt DATE vi mt s nguyn cho kt
qu l mt gi tr kiu DATE; hiu 2 gi tr kiu DATE l s ngy tri qua gia 2 ngy
thng nm .
28/174

Trong nhiu h qun tr CSDL, ngi ta thng a thm vo min gi tr ca cc thuc


tnh mt gi tr c bit gi l gi tr rng (NULL). Ty theo ng cnh m gi tr ny c
th c trng cho mt gi tr khng th xc nh c hoc mt gi tr cha c xc
nh vo thi im nhp tin nhng c th c xc nh vo mt thi im khc.
Nu thuc tnh c kiu d liu l v hng th n c gi l thuc tnh n hoc thuc
tnh nguyn t; nu thuc tnh c kiu d liu c cu trc th ta ni rng n l thuc tnh
kp (hay khng phi l nguyn t).
Quan h (Relation):
Mt quan h R c n ngi c nh ngha trn tp cc thuc tnh U = {A1, A2, ... An}
(th t ca cc thuc tnh l khng quan trng) v km theo n l mt tn t, tc l mt
quy tc xc nh mi quan h gia cc thuc tnh Ai v c k hiu l R (A1, A2, ...
An). Tp thuc tnh ca quan h R i khi cn c k hiu l R+.
Vi Ai l mt thuc tnh c min gi tr l MGT(Ai), nh vy R(A1, A2, ... An) l tp
con ca tch -cc: MGT(A1) x MGT(A2) x ... x MGT(An).
Quan h cn c gi bng thut ng khc l bng (Table).
-V d 3.1.4:
KHOA (M-khoa, Tn-khoa), l mt quan h 2 ngi.
Tn t: "Mi khoa c mt tn gi v mt m s duy nht phn bit vi tt c cc khoa
khc ca trng".
-Vi d 3.1.5:
LP-HC (M-lp, Tn-lp, Nin-kha, S-hc-vin, M-khoa) l quan h 5 ngi vi
tn t: "Mi lp hc trong trng c mt m s quy c duy nht phn bit vi tt c
cc lp hc khc trong trng; c mt tn gi ca lp hc, mt s lng hc vin theo
hc v thuc mt khoa ca trng".
-V d 3.1.6:
MN-HC (M-mn, Tn-mn, S-v-hc-trnh) l quan h 3 ngi.
Tn t: "Mi mn hc c mt tn gi c th, c hc trong mt s n v hc trnh nht
nh v ng vi mn hc l mt m s duy nht phn bit vi mi mn hc khc".
-V d 3.1.7:

29/174

HC-VIN (M-hc-vin, Tn-hc-vin, Ngy-sinh, Qu-qun, M-lp) l quan h 5


ngi.
Tn t: "Mi hc vin c mt h v tn, ngy sinh, qu qun, ... v c cp mt m s
duy nht phn bit vi mi hc vin khc trong trng; hc vin c ghi danh vo
mt lp hc duy nht trong trng".

Cc thao tc c bn trn cc quan h.

Trong chng ny chng ta ch cp ti nhng khi nim c bn do cc php ton


khc trn cc quan h s c trnh by chi tit trong chng V. Ba thao tc c bn trn
mt quan h, m nh CSDL c thay i, l Thm (Insert), Xa (Delete) v Sa
(Update) cc b gi tr ca quan h.
Php thm mt b mi vo quan h.
Vic thm mt b gi tr mi t vo quan h R (A1, A2, ... An) lm cho th hin TR ca
n tng thm mt phn t mi: TR = TR t. Dng hnh thc ca php thm b mi l:
INSERT (R; Ai1=v1, Ai2 =v2, ... Aim= vm)
trong , Ai1, Ai2, ... Aim l cc thuc tnh, v v1, v2, ... vm l cc gi tr thuc
MGT(Ai1), MGT(Ai2) , ..., MGT(Aim) tng ng.
Cn lu rng cc thuc tnh khng c tn trong danh sch gn gi tr ca b t trong
cu lnh INSERT s c gi tr l NULL, tc l gi tr khng xc nh.
-V d 3.1.17:
Quan h:
HC-VIN (M-hc-vin, Tn-hc-vin, Ngy-sinh, Qu-qun, M-lp).
Thm b q5 = (SV002, Hong Th Chnh, 17/05/1967, H ni, QTKD1) vo quan h
HC-VIN bi php thm nh sau:
INSERT (HC-VIN; [M-hc-vin]=Hong Th Chnh, [Ngy-sinh]=17/05/1967,
[Qu-qun]=H ni, [M-lp]=QTKD1).
Th hin THC-VIN gi y l:

30/174

q1 = (SV001,

Nguyn Vn Nam,

27/03/1970, Cn Th,

q5 = (SV002,

Hong Th Chnh,

17/05/1967, H ni,

q2 = (SV005,

V Th Tuyt Mai,

q3 = (SV014,

Hng ng,

q4 = (SV015,

L Hoi Nh,

QTKD1)
QTKD1)

26/02/1968, ng Nai, KTKC1)


30/04/1975, ng Nai, CNTK3)
23/03/1965, Long An,

CNTK4)

Xin lu l quan h HC-VIN c kha l M-hc-vin, do bn ghi mi q5 c


y ln v tr th 2 theo th t tng dn gi tr ca kha. Cng v l do ny, php thm
bn ghi mi cn c gi l php chn. [7].
Nu xem th t ca cc thuc tnh l c nh v gi tr v1, v2, ... vm l hon ton tng
ng th php chn c th vit di dng tng minh nh sau:
INSERT (R; v1, v2, ... vm).
Php chn c th khng thc hin c hoc lm mt tnh nht qun ca d liu trong
CSDL v cc l do:
- Gi tr kha ca b mi l rng (NULL) hoc trng vi gi tr kha ca mt b c
trong CSDL. Trong trng hp ny h qun tr CSDL khng cho b sung.
- B mi khng ph hp vi lc quan h. Trng hp ny c th xy ra khi ngi
s dng lm ln th t, kiu hoc ln ca cc thuc tnh. H qun tr CSDL c th
khng cho b sung nu khng tng thch kiu gi tr, hoc vn cho b sung b mi
nhng tnh nht qun d liu khng c m bo.
- Mt s gi tr ca b mi khng thuc min gi tr ca thuc tnh tng ng. Trong
trng hp ny, nu quan h c m bo tnh nht qun bi cc RBTV v min
gi tr th h qun tr CSDL s khng cho b sung, nu khng c RBTV nh vy th tnh
nht qun ca d liu b vi phm m h qun tr CSDL khng pht hin c.
Php loi b b khi quan h.
Php loi b (hoc xa b) mt b t ca quan h s ly i (nhng) b t khi th hin
ca quan h. TR = TR \ t. Php loi b c vit mt cch hnh thc nh sau:
DELETE (R; Ai1=v1, Ai2 =v2, ... Aim= vm).
trong Aij=vj (j = 1, 2, ..., m) c coi nh nhng iu kin tha mt s thuc tnh ca
b t loi b mt b ra khi quan h.
31/174

V d 3.1.18:
Quan h:
HC-VIN (M-hc-vin, Tn-hc-vin, Ngy-sinh, Qu-qun, M-lp)
Vi php loi b nh sau:
DELETE (HC-VIN; [Qu-qun]=ng nai).
Th cc b:
q2 = (SV005,

V Th Tuyt Mai,

q3 = (SV014,

Hng ng,

26/02/1968, ng Nai, KTKC1)


30/04/1975, ng Nai, CNTK3)

s b loi b ra khi quan h HC-VIN bi v cng c chung Qu-qun l ng nai.


Th hin THC-VIN lc ny l:
q1 = (SV001,

Nguyn Vn Nam,

27/03/1970, Cn Th,

QTKD1)

q5 = (SV002,

Hong Th Chnh,

17/05/1967, H ni,

QTKD1)

q4 = (SV015,

L Hoi Nh,

23/03/1965, Long An,

CNTK4)

Php sa i gi tr ca cc thuc tnh ca quan h.


D liu ca CSDL i khi cng cn phi c i mi theo thi gian hoc sa li cho
m bo tnh chnh xc hoc nht qun ca d liu. Do thao tc sa d liu (Update)
l rt cn thit. Mt s h qun tr CSDL a ra nhiu cu lnh khc nhau sa i d
liu: EDIT, CHANGE, BROW, UPDATE (nh DBase, FoxPro v.v...). Trong ngn ng
hnh thc, mc ny a ra mt dng ca php sa i gi tr cc b ca quan h:
UPDATE (R; Ai1=c1, Ai2 =c2, ... Aim= cm; Ai1=v1, Ai2 =v2, ... Aim= vm).
Trong R l quan h cn thc hin sa i; Aij= cj (j = 1, 2, ..., m) l iu kin tm
kim b gi tr sa v Aij= vj (j = 1, 2, ..., m) l gi tr mi ca b.
V d 3.1.19:
Quan h

32/174

HC-VIN (M-hc-vin, Tn-hc-vin, Ngy-sinh, Qu-qun, M-lp)


Vi php sa i gi tr nh sau:
UPDATE (HC-VIN; [M-hc-vin]=SV015, [Qu-qun]=Sng B)
th gi tr ca b q4 c sa li thnh:
q4 = (SV015, L Hoi Nh, 23/03/1965, Sng B, CNTK4)

33/174

Rng buc ton vn


Rng buc ton vn trn mt CSDL
Rng buc ton vn (Integrity Constraint / Rule vit tt l: RBTV) v kim tra s vi
phm rng buc ton vn l hai trong nhng vn rt quan trng trong qu trnh phn
tch, thit k v khai thc CSDL. Trong qu trnh phn tch - thit k c s d liu, nu
khng quan tm ng mc n nhng vn trn, th c th dn n nhng hu qu rt
nghim trng v tnh an ton v ton vn d liu, c bit trong nhng CSDL tng i
ln.
Chng ny c chia lm 3 mc nh: Mc th nht trnh by cc khi nim c bn
ca rng buc ton vn; mc th hai s gii thiu cc cch phn loi rng buc ton vn
v phn th ba s cp n mt cng c biu din mt s cc rng buc ton vn:
Ph thuc hm.
Rng buc ton vn, cc yu t ca RBTV.
nh ngha.
Rng buc ton vn l mt iu kin bt bin khng c vi phm trong mt CSDL.
Trong mt CSDL, lun lun tn ti rt nhiu mi lin h nh hng qua li ln nhau
gia cc thuc tnh ca mt quan h, gia cc b gi tr trong mt quan h v gia cc
thuc tnh ca cc b gi tr trong cc quan h vi nhau. Cc mi quan h ph thuc ln
nhau ny chnh l nhng iu kin bt bin m tt c cc b ca nhng quan h c lin
quan trong c s d liu u phi tha mn bt k thi im no. Rng buc ton vn
cn c gi l cc quy tc qun l (Rules) c p t ln trn cc i tng ca th
gii thc.
V d 4.1.1:
Trong CSDL v qun l hc vin ca mt trng hc cho trong cc v d ca mc
3.1 trong Chng III (Bi 4), chng ta c mt s rng buc ton vn nh sau:
R1 : Mi lp hc phi c mt m s duy nht phn bit vi mi lp hc khc trong
trng.
R2 : Mi lp hc phi thuc mt KHOA ca trng.
R3 : Mi hc vin c mt m s ring bit, khng trng vi bt c hc vin no khc.

34/174

R4 : Mi hc vin phi ng k vo mt lp ca trng.


R5 : Mi hc vin c thi ti a 3 ln cho mi mn hc.
R6 : Tng s hc vin ca mt lp phi ln hn hoc bng s lng m c ca lp
ti mt thi im.
Kha ni, Kha ngoi, gi tr NOT NULL ... l nhng RBTV v min gi tr ca cc
thuc tnh. Nhng RBTV va nu trn cng mi ch l nhng RBTV n gin trong
CSDL nh v qun l hc vin. Trong thc t, tt c cc RBTV ca mt c s d liu
phi c ngi phn tch thit k pht hin y v m t mt cch chnh xc, r
rng trong h s phn tch, thit k.
Trong mt CSDL, rng buc ton vn c xem nh mt cng c din t ng ngha
ca c s d liu . Trong sut qu trnh khai thc c s d liu, cc RBTV u phi
c tha mn bt k thi im no nhm m bo cho CSDL lun lun trng thi
an ton v nht qun v d liu.
Cc h qun tr CSDL thng c cc c ch t ng kim tra cc RBTV v min gi tr
ca Kha ni, Kha ngoi, gi tr NOT NULL qua khai bo cu trc cc bng (m hnh
d liu ca quan h) hoc thng qua nhng th tc kim tra v x l vi phm RBTV do
nhng ngi phn tch - thit k ci t. Vic kim tra RBTV c th c tin hnh vo
mt trong cc thi im sau:
-Kim tra ngay khi thc hin mt thao tc cp nht CSDL (thm, sa, xa). Thao tc cp
nht ch c xem l hp l nu nh n khng vi phm bt c mt RBTV no, ngha l
n khng lm mt tnh ton vn d liu ca CSDL. Nu vi phm RBTV, thao tc cp
nht b coi l khng hp l v s b h thng hy b (hoc c mt x l thch hp no
).
-Kim tra nh k hay t xut, ngha l vic kim tra RBTV c tin hnh mt cch
c lp i vi thao tc cp nht d liu. i vi nhng trng hp vi phm RBTV, h
thng s c nhng x l ngm nh hoc yu cu ngi s dng x l nhng sai st mt
cch tng minh.
Cc yu t ca rng buc ton vn:
Khi xc nh mt RBTV cn ch r:
iu kin (tc l ni dung) ca RBTV, t xc nh cch biu din.
Bi cnh xy ra RBTV : trn mt hay nhiu quan h, c th trn cc quan h no.
Tm nh hng ca RBTV. Kh nng tnh ton vn d liu b vi phm, v
35/174

Hnh ng cn phi c khi pht hin c RBTV b vi phm.


iu kin ca RBTV:
iu kin ca RBTV l s m t, v biu din hnh thc ni dung ca n, c th c
biu din bng ngn ng t nhin, thut gii (bng m gi - Pseudo Code, ngn ng ta
Pascal), ngn ng i s tp hp, i s quan h v.v hoc bng cc ph thuc hm (s
c trnh by chi tit trong mc 3 ca chng ny).
V d 4.1.2:
Gi s c mt CSDL qun l ha n bn hng gm cc bng sau:
HAN (S-ha-n, S-chng-loi-mt-hng, Tng-tr-gi).
DM_HNG (M-hng, Tn-hng, n-v-tnh).
CHITIT-H (S-ha-n, M-hng, S-lng-t, n-gi, Tr-gi).
iu kin ca rng buc ton vn c th biu din nh sau:
R1 : Mi ha n c mt S ha n ring bit, khng trng vi ha n khc:
" h1, h2 HAN, h1 h2 h1.S-ha-n h2. S-ha-n.
R2 : S-chng-loi-mt-hng = s b ca CHITIT_H c cng S-ha-n:
" h HAN th:
h.S-chng-loi-mt-hng = COUNT (cth CHITIT_H, cth.S-ha-n =
h.S-ha-n)
R3 : Tng cc tr gi ca cc mt hng trong CHITIT_H c cng S-ha-n phi
bng Tng-tr-gi ghi trong HAN:
" h HAN th:
h.Tng-tr-gi = SUM (cth.Tr-gi) i vi cccth CHITIT_H sao cho : cth.
S-ha-n= h. S-ha-n.
R4 : Mi b ca CHITIT_H phi c m hng thuc v danh mc hng:
CHITIT_H [M-hng] DM_HNG[M-hng]

36/174

hoc biu din bng cch khc:


" cth CHITIT_H, $ hh DM_HNG
sao cho: cth.M-hng=hh.M-hng.
Ghi ch: Chng ta quy c: ch COUNT (...) ngha l m s b gi tr ca mt quan
h tha mn iu kin cho trong du ngoc trn. Ch SUM (...) ngha l ly tng cc
gi tr ca cc b trn mt quan h tha mn iu kin cho trong du ngoc trn. Cc
ngn ng qun tr CSDL u c cc th tc hm ny h tr tnh ton. Chng VI
(Bi 9 v 10) s trnh by ngn ng truy vn CSDL c cu trc (SQL) trong c
cp ti cc hm ny.
Bi cnh ca RBTV :

Bi cnh c th nh ngha trn mt quan h c s hay nhiu quan h c s. l


nhng quan h m RBTV c p dng trn .
Nh trong v d 4.1.2, bi cnh ca rng buc ton vn R1 ch l mt quan h
HAN; bi cnh ca rng buc ton vn R2 v R3 l hai quan h HAN v
CHITIT_H; bi cnh ca rng buc ton vn R4 l hai quan h CHITIT_H v
DM_HNG.

Xc nh tm nh hng ca RBTV:

Mt RBTV c th lin quan n mt s quan h, v ch khi c thao tc cp nht (Thm,


Sa, Xa) mi c nguy c dn n vi phm RBTV, o cn xc nh r thao tc no
dn n vic cn phi kim tra RBTV.
Trong qu trnh phn tch, thit k mt CSDL, ngi phn tch cn lp bng xc nh
tm nh hng cho mi rng buc ton vn nhm xc nh khi no th phi tin hnh
kim tra cc rng buc ton vn . Bng ny gm 4 ct: ct 1 l ct ch t cha tn
cc quan h lin quan ti RBTV; 3 ct tip theo l thao tc Thm / Sa / Xa b gi
tr ca quan h. Nu RBTV cn c kim tra nguy c dn ti vi phm th ti (giao
im dng v ct) ngi ta nh du bng du gch cho (x) hoc du cng (+), v
c th ch r thm cc thuc tnh no nu c cp nht mi dn n vi phm RBTV
bng cch lit k chng di du (x) hoc du (+). Nu RBTV khng c nguy c b vi
phm khi cp nht CSDL th nh du tr (-) vo tng ng. Nu khng b vi phm v
khng c php sa i th k hiu l tr vi du sao ( -(*)).
V d 4.1.3:
37/174

Bng tm nh hng ca rng buc ton vn R1


Quan h

Thm

Sa Xa

HAN + (S-ha-n) - (*) +


Bng tm nh hng ca rng buc ton vn R2
Quan h

Thm Sa

HAN

CHITIT_H +

Xa

+ (S-chng-loi-mt-hng) +
-

Bng tm nh hng ca rng buc ton vn R3


Quan h

Thm Sa

HAN

CHITIT_H +

Xa

+ (Tng-tr-gi) +
+ (Tr-gi)

Bng tm nh hng ca rng buc ton vn R4


Quan h

Thm

Sa Xa

CHITIT_H + (M-hng) - (*) +


DM_HNG

- (*) +

Trong thc t, rng buc ton vn R1 l khng cn thit, bi thuc tnh S-ha-n l
kha ca quan h HAN, do vy n lun lun phi l duy nht v khng c php
cha gi tr rng; ng thi khng c php sa i (Xem li Chng III, mc 3.1,
im 3.1.6 - mt s quy c v kha. Bi 4).
Sau khi xy dng cc bng tm nh hng ca tng RBTV trn cc quan h lin quan,
cn phi tng hp li bng cch xy dng mt bng tm nh hng tng hp cc RBTV
nhm xc nh tt c cc RBTV cn phi kim tra trn tng quan h. Bng ny gm ct
ch t l cc RBTV, cc ct cn li l cc thao tc Thm (T), Sa (S) v Xa (X) ca
tng quan h nm trong bi cnh ca cc RBTV trong CSDL.
V d 4.1.4:

38/174

Lp bng tm nh hng tng hp ca cc RBTV trong CSDL qun l ha n bn


hng nu trn:
Q.H

HAN CHITIT_H DM_HNG

RBTV T

R1

+ (S-h)

- (*)

R2

+ (S-loi-MH)

R3

+ (Tng-TG)

R4

T S

X T S

+ - (*)

+ + (Tr-gi) +
+ -

+ - - (*) +

Nhn vo bng tng hp trn chng ta c th thy quan h HAN khi thm v xa
mt b gi tr, phi kim tra rng buc ton vn R1, R2 v R3; khi sa gi tr thuc tnh
S-chng-loi-mt-hng th phi kim tra rng buc ton vn R2 v khi sa gi tr thuc
tnh Tng-tr-gi th phi kim tra rng buc ton vn R3. Quan h CHITIT_H khi
c cp nht cn kim tra 2 RBTV: R2 v R3; Quan h DM_HNG cn kim tra rng
buc ton vn R4 khi xa mt b gi tr.

Hnh ng khi RBTV b vi phm:

Khi mt RBTV b vi phm cn c nhng hnh ng thch hp. Thng thng c 2 gii
php:
Phn loi rng buc ton vn
Trong mt CSDL c th pht hin nhiu RBTV, tuy nhin c th chia chng thnh hai
loi chnh theo bi cnh RBTV:
Rng buc ton vn trong bi cnh l mt quan h c s.
Rng buc ton vn c bi cnh trn nhiu quan h c s.
Chng ta s xem xt chi tit cc loi RBTV chi tit trong tng bi cnh nu trn.
Rng buc ton vn c bi cnh l 1 quan h c s.
Trn mt quan h c s c th tn ti nhiu RBTV thuc cc loi: RBTV v min gi tr
ca thuc tnh, RBTV v gi tr gi thuc tnh ny vi (cc) thuc tnh khc (gi l lin

39/174

thuc tnh) v gia cc gi tr ca cc b gi tr khc nhau (gi l lin b - lin thuc


tnh)
Rng buc ton vn v min gi tr ca thuc tnh.

Trong hu ht cc CSDL quan h, loi RBTV ny l rt ph bin. Nh chng ta bit,


thuc tnh c c trng khng ch bi kiu gi tr m n cn b gii hn bi min gi
tr trong kiu d liu . Do , khi thc hin cc thao tc cp nht Thm / Sa b gi
tr mi cho quan h u phi kim tra RBTV ny.
V d 4.2.1:
Trong quan h KQU-THI m t trong v d 3.1.12, do quy nh mi hc vin ch
c thi mt mn hc ti a l 3 ln, hin nhin l im thi ca mi mn hc trong mi
ln thi khng b m v khng vt qu 10. C 2 rng buc ton vn v min gi tr trong
quan h ny:
R1: "kq KQU-THI th 0 kq.Ln-thi 3
R2: "kq KQU-THI th 0 kq.im-thi 10
Gi s cc ging vin c chm chc thm rng im thi ln sau khng nh hn
im thi ln trc . Chng ta c thm rng buc ton vn v min gi tr:
R3: "kq KQU-THI / kq.im-thi (ln trc) kq.im-thi 10.0
Rng buc ton vn lin thuc tnh.

l loi RBTV c lin quan ti nhiu thuc tnh ca mt quan h. Thng thng l
cc ph thuc tnh ton, hoc mt suy din t gi tr ca mt hay nhiu thuc tnh trong
cng mt b gi tr.
V d 4.2.2:
Quan h CHITIT_H trong CSDL qun l ha n bn hng cho trong v d 4.1.2
ti mc 4.1 trnh by trn, c RBTV lin thuc tnh l:
"cth CHITIT_H / cth.Tr-gi = cth.S-lng-t * cth.n-gi.
V d 4.2.3:
Quan h danh sch cn b - cng chc Nh nc CBCC vi tp cc thuc tnh: {
M-n-v, M-CBCC, H-tn, Gii-tnh, Ngy-sinh, Ngy-tuyn-dng, Ngch-CBCC,
Bc, H-s-lng, Ngy-xp-lng }.
40/174

Vi quy nh nam t 18 n 60 v n t 18 n 55 tui v phi t 18 tui tr ln mi


c tuyn vo lm cng chc Nh nc. Chng ta c cc RBTV v min gi tr lin
thuc tnh nh sau:
R1: "cc CBCC / nu cc.Gii-tnh = Nam th (Now() - cc.Ngay_sinh) / 365 trong
khong 18 v 60. Nu cc.Gii-tnh = N th (Now() - cc.Ngay-sinh) / 365 trong khong
18 v 55.
R2: "cc CBCC / (cc.Ngay-tuyen-dung - cc.Ngay-sinh) / 365 18 va cc.Ngay-tuyendung Now().
Ghi ch:
Now() l ly ngy thng nm hin ti v mt nm trung bnh c 365 ngy;
Hiu 2 gi tr ngy thng l s ngy tri qua gia 2 ngy .
Rng buc ton vn lin b, lin thuc tnh.

y l loi RBTV c lin quan ti nhiu b v c th ti nhiu thuc tnh ca (cc) b


gi tr trong mt quan h.
V d 4.2.4:
Trong v d 4.2.1 va nu, chng ta thy im thi khng ch lin quan n thuc tnh
Ln-thi m cn lin quan ti im thi ca ln thi trc nu thi 1 hay 2 ln ri.
RBTV y phi c din t bng thut ton nh sau:
R3: "kq KQU-THI / Nu kq.Ln-thi = 1 th 0 kq.im-thi 10.0
hoc:
Nu kq.Ln thi > 1 th $kq KQU-THI
sao cho kq.Ln-thi = kq.Ln-thi - 1 v kq.im-thi kq.im-thi.
V d 4.2.5:
Gi thit thm rng, xc nh h s lng ca mt cn b - cng chc Nh nc cn
c vo Ngch cng chc v Bc c xp, chng ta c thm bng quy nh Ngch, bc
v h s lng cn b cng chc Nh nc theo Ngh nh 25CP ca Th tng Chnh
ph:
NGCH-BC-LNG (M-ngch, Bc, H-s-lng).
41/174

Tn t: ng vi mt Ngch cng chc v mt Bc c th th c mt h s lng tng


ng (t 1.0 n 10.0).
Vic biu din rng buc ton vn H-s-lng ph thuc vo Ngch v Bc ca quan
h CBCC nu trong v d 4.2.3 nu trn bng thut gii c th tr nn rc ri. Ngi ta
a thm mt cch biu din mi lm cho RBTV tr nn r rng hn, l cch
biu din RBTV bng ph thuc hm m chng ta s trnh by r hn trong mc 4.3 ca
chng ny.
Rng buc ton vn nh ngha trn nhiu quan h c s.

Rng buc ton vn v ph thuc tn ti.

Rng buc ton vn v ph thuc tn ti (Existential Dependency hay Referential


Dependency) cn c gi l ph thuc v kha ngoi. y l loi RBTV kh ph bin
trong cc CSDL bi cc quan h trong mt CSDL lun lun c mi quan h mt thit
vi nhau. B gi tr ca quan h ny c thm vo mt cch hp l nu tn ti mt bn
ghi tng ng ca mt quan h khc.
Ph thuc tn ti xy ra nu c mt trong hai trng hp sau:
(i) C s hin din ca kha ngoi.
(ii) C s lng kha gia cc quan h.
V d 4.2.6:
Trong th hin ca quan h CHITIT-H, s tn ti ca mi b gi tr cth u ph
thuc vo s tn ti ca mt b gi tr h trong th hin ca quan h HAN sao cho
h.S-ha-n = cth.S-ha-n, v ph thuc c vo s tn ti ca mt b gi tr mh
trong th hin ca quan h DM_HNG sao cho mh.M-hng = cth.M-hng.
Biu din cc RBTV ny nh sau:
RBTV1 : Mi b ca CHITIT_H phi c mt ha n vi S-ha-n tng ng:
"cth CHITIT_H, $h HAN
sao cho cth.S-ha-n = h.S-ha-n.

42/174

hoc biu din bng cch khc:


CHITIT_H [ S-ha-n ] HAN [ S-ha-n ]
RBTV2 : Mi b ca CHITIT_H phi c m hng thuc v danh mc hng:
"cth CHITIT_H, $hh DM_HNG sao cho cth.M-hng=hh.M-hng
hoc biu din bng cch khc:
CHITIT_H [ M-hng ] DM_HNG [ M-hng ]

V d 4.2.7:
Trong CSDL v qun l CBCC nu trong v d 4.2.3 v 4.2.5 trn, RBTV v ph
thuc tn ti gia 2 quan h CBCC v NGCH-BC-LNG c xc nh:
"cbcc CBCC, $ng NGCH-BC-LNG
sao cho (cbcc.M-ngch = ng.M-ngch) (cbcc.Bc = ng.Bc)
hoc biu din bng cch khc:
CBCC [ M-ngch, Bc ] NGCH-BC-LNG [ M-ngch, Bc ]
V d 4.2.8:
Trong CSDL v qun l hc vin nu trong v d 3.1.12, cc RBTV v ph thuc tn
ti gm:
RBTV1 : Mi LP-HC u phi thuc mt KHOA nht nh:
"lh LP-HC, $kh KHOA sao cho lh.M-khoa = kh.M-khoa.
hoc biu din qua php chiu quan h:
LP-HC [ M-khoa ] KHOA [ M-khoa ].
RBTV2 : Mi HC-VIN u phi thuc mt LP-HC nht nh:
"hv HC-VIN, $lh LP-HC sao cho hv.M-lp = lh.M-lp.

43/174

hoc biu din qua php chiu quan h:


HC-VIN [ M-lp ] LP-HC [ M-lp ].

RBTV3 : Mi KQU-THI u phi l ca mt HC-VIN nht nh:


"kq KQU-THI, $hv HC-VIN
sao cho kq.M-hc-vin = hv.M-hc-vin.
hoc biu din qua php chiu quan h:
KQU-THI [ M-hc-vin ] HC-VIN [ M-hc-vin ].
RBTV4 : Mi mn thi trong KQU-THI u phi c tn trong danh sch cc mn hc
:
"kq KQU-THI, $mh MN-HC sao cho kq.M-mn = mh.M-mn
hoc biu din qua php chiu quan h:
KQU-THI [ M-mn ] MN-HC [ M-mn ]
Chng ta c th thy v phi ca php ton tp con ( ) l php chiu trn thuc tnh
kha ni ca mt quan h, cn v tri l php chiu trn tp cc thuc tnh kha ngoi
ca mt quan h khc. Chnh v l m ngi ta cn gi RBTV loi ny l RBTV v
kha ngoi. Pht biu tng qut v loi RBTV ny l nh sau:
R v S l hai quan h nh ngha trn cc tp thc tnh R+ v S+. KR R+ l tp cc thuc
tnh kha ni ca quan h R; KS S+ l tp cc thuc tnh kha ni ca quan h S; v W
S+ l tp cc thuc tnh kha ngoi ca S i vi R. Khi ta c ph thuc tn ti ca
S vo R v c biu din thng qua php chiu:
S [W] R [W].
Nu W KS, th ta ni rng c s lng kha gia hai quan h R v S.
Trong bng tm nh hng ca loi RBTV ny, cc thao tc Thm v Sa mt b gi
tr ca quan h R (v phi ca ph thuc tn ti) khng gy ra s vi phm RBTV (tr
khi c s lng kha gia R vi mt quan h khc), ch c thao tc Xa b mt b gi
tr ca R mi cn c s kim tra RBTV. Ngc li, thao tc Xa mt b gi tr ca S
44/174

khng gy ra s vi phm RBTV (tr khi c s lng kha ca mt quan h khc vo S),
thao tc Thm mt b gi tr mi vo S lun lun phi c kim tra RBTV ny; nu W
l cc thuc tnh kha ngoi ca S th vic Sa b gi tr ca S trn cc thuc tnh kha
ngoi W vn phi kim tra RBTV; nu c s lng kha th vic sa khng i hi kim
tra RBTV v theo quy c l khng c sa gi tr ca thuc tnh kha.
Bng tm nh hng c 2 dng ng vi 2 trng hp trn nh sau:
a. ng vi trng hp kha ngoi:
Quan h Thm Sa

Xa

- (*)

+ (W) -

a. ng vi trng hp lng kha:


Quan h Thm Sa Xa
R

- (*) +

- (*) -

Rng buc ton vn lin b - lin quan h.

Khi c s hin din ca 1 thuc tnh mang tnh cht tng hp (tc l gi tr ca thuc
tnh c th c tnh ton t gi tr ca cc thuc tnh khc trn mt hay nhiu b gi tr
ca cc quan h trong CSDL), hay ph thuc tn ti lng kha th c RBTV lin quan
h - lin b.
V d 4.2.9 :
Xt CSDL v qun l hc vin nu trong v d 3.1.12 (Chng III, mc 3.1. Bi 4),
RBTV lin quan h - lin b c th c xc nh: Vi mi b gi tr ca LP-HC,
nu S lng hc vin ln hn 0 th s lng ny phi ln hn hay bng tng s b gi
tr m c ca cc hc vin c cng M lp. y chnh l RBTV R6 nu trong v
d 4.1.1.
Biu din hnh thc ca RBTV ny nh sau:

45/174

" lh LP-HC th:


nulh.S-hc-vin > 0 th:
h.S-hc-vin = COUNT (hv HC-VIN, hv.M-lp = lh.M-lp).

V d 4.2.10 :
Xt CSDL qun l ha n bn hng cho trong v d 4.1.2 vi 3 quan h:
1) HAN (S-ha-n, S_chng_loi_mt_hng, Tng-tr-gi).
2) CHITIT_H (S-ha-n, M-hng, S-lng-t, n-gi, Tr-gi).
3) DM_HNG (M-hng, Tn-hng, n-v-tnh).
RBTV1 : S_chng_loi_mt_hng = s b ca CHITIT_H c cng S-ha-n :
" h HAN th:
h.S-chng-loi-mt-hng = COUNT (cth CHITIT_H, cth.S-ha-n =
h.S-ha-n)

RBTV2 : Tng tt c cc Tr-gi ca cc mt hng trong CHITIT_H c cng Sha-n phi bng Tng-tr-gi ca ha n trong HAN:
" h HAN th h.Tng-tr-gi = SUM (cth.Tr-gi)
i vi cc cth CHITIT_H
sao cho : cth. S-ha-n= h. S-ha-n.

Chng ta c th nhn thy trong CSDL ny c s d tha thng tin mt cch c . l


thuc tnh tnh ton Tr-gi ca cc mt hng trong chi tit ho n bn hng. Mt trong
nhng phng php kim nh tnh ng n ca d liu c nhp vo l t chc nhp
tha d liu tnh ton c (Computable Value) ri so snh vi cng thc tnh ton.
Nu c s sai st no trong cc thnh phn c lin quan trong cng thc th lgc biu
thc s khng cn ph hp na.
46/174

By gi t c dng chun (Normal Form) tt hn cho quan h CHITIT-H,


chng ta c th loi b thuc tnh Tr-gi. Khi RBTV2 c vit li l:
" h HAN th
h.Tng-tr-gi = SUM (cth.S-lng-t * cth.n-gi)
i vi cccth CHITIT_H
sao cho : cth. S-ha-n= h. S-ha-n.

(1) a ra thng bo v yu cu sa cha d liu ca cc thuc tnh cho ph hp vi


quy tc m bo tnh nht qun d liu. Thng bo phi y v to c s thn thin
vi ngi s dng. Gii php ny l ph hp cho vic x l thi gian thc.
(2) T chi thao tc cp nht. Gii php ny l ph hp i vi vic x l theo l (Batch
processing). Vic t chi cng phi c lu li bng nhng thng bo y , r rng
v sao thao tc b t chi v cn phi sa li nhng d liu no.

47/174

Rng buc ton vn cc loi


RBTV do s hin din ca chu trnh
By gi chng ta biu din cu trc CSDL di dng th nh sau: Mi nt ca th
biu din mt quan h hoc mt thuc tnh.
(i) Quan h c biu din bng nt trn trng (o), v
(ii) Thuc tnh c biu din bi mt nt trn en nh hn ().
(iii) Tt c cc nt u c ch r bng tn ca quan h hoc thuc tnh. Thuc tnh
thuc mt quan h c biu din bi mt cung ni gia nt trn trng v nt trn en
.
Nu trn th chng ta thy xut hin mt ng khp kn th ta ni rng trong lc
CSDL c s hin din ca chu trnh. S hin din ny lm ny sinh mt vn mi:
Xc nh kh nng m bo tnh nht qun ca d liu, l mt RBTV, do s hin din
ca chu trnh.
V d 4.2.11:
Hy xt lc CSDL vi cc lc quan h con: Q1 (A, B), Q2 (B, C), Q3 (C, D) v
Q4 (A, C). Biu din lc CSDL bng th nh sau:

Hnh 4.2.1 Biu din lc CSDL bng th pht hin chu trnh
Vi a A th qua quan h Q1 ta c th xc nh c mt gi tr b B. Vn vi gi tr
a A nhng xc nh qua con ng Q4 ( c c C) ri qua Q2 c b. b v
b c nht thit phi ging nhau hay khng? Mt CSDL l nht qun nu qua cc cch
48/174

khc nhau ch xc nh c 1 gi tr duy nht ca thuc tnh lin quan. Trong trng
hp ny c 3 vn ny sinh:
Hai cch xc nh (hoc 2 con ng) mang ngha hon ton ging nhau.
C mt con ng ph thuc vo con ng kia, ngha l tp hp mt s thuc tnh
thng qua mt con ng l tp con ca cc thuc tnh thng qua con ng kia.
Hai con ng c lp nhau th chu trnh y l chu trnh gi, v nh vy khng c
rng buc ton vn do s hin din ca chu trnh.
V d 4.2.12:
Gi s cc quan h Q1, Q2, Q3, v Q4 c dnh ngha trn cc thuc tnh nh sau:
Q1 (M-nhn-vin, M-phng)
Q2 (M-phng, M--n)
Q3 (M--n, Tn--n)
Q4 (M--n, M-nhn-vin)
th biu din CSDL ny nh trong hnh 4.2.2:
Gi thit 1: Vi tn t sau:
Mi nhn vin (th hin qua M-nhn-vin) c phn cng vo tt c cc n do
phng (th hin qua M-phng) ph trch.

Hnh 4.2.2. Lc CSDL c biu din di dng th

49/174

(i) Hai con ng mang ngha hon ton ging nhau. ng di hn Q1 kt ni vi


Q2 (k hiu l Q1 I><I Q2) trng vi con ng ngn hn Q4 khi cng xc nh mt
n (th hin qua M--n) m mt nhn vin (th hin qua M-nhn-vin) tham gia
vo. y l mt chu trnh gi, c th hy b (bng cch loi b quan h Q4).
(ii) Nu vn mun gi li quan h Q4, tc l khng hy b chu trnh, th phi c mt
RBTV vi thut ton sau:
Q1 I><I Q2 [M-nhn-vin, M--n] = Q4 [M-nhn-vin, M--n]
Gi thit 2: Vi tn t sau:
Mi nhn vin (th hin qua M-nhn-vin) c phn cng vo mt s n do phng
(th hin qua M-phng) ph trch.
Con ng ngn Q4 ph thuc vo con ng di Q1 I><I Q2, bi v mt nhn vin c
th khng tham gia vo tt c cc n do phng mnh ph trch. Chu trnh trn mang
ngha thc s. Rng buc ton vn c th hin bi thut ton sau:
Q4 [M-nhn-vin, M--n] Q1 I><I Q2 [M-nhn-vin, M--n]
Gi thit 3: Vi tn t sau:
Mi nhn vin (th hin qua M-nhn-vin) c phn cng vo nhng n (th
hinqua M-phng) bt k.
Hai con ng hon ton c lp nhau, khng lin quan g ti nhau, mang ngha hon
ton khc nhau, do khng c RBTV.

Biu din RBTV bng ph thuc hm.


Trong Chng III, mc 3.1, im 3.1.7, bi 4 trnh by khi nim c bn vph thuc
hm (Functional Dependency) trong mt quan h. Ph thuc hm c tm quan trng rt
ln trong vic phn tch v thit k m hnh d liu. Mc ny s trnh by k hn v vn
ny.
Khi nim: Quan h R c nh ngha trn tp thuc tnh U = { A1, A2, ..., An}. A, B
U l 2 tp con ca tp thuc tnh U. Nu tn ti mt nh x f: A B th ta ni rng A
xc nh hm B, hay B ph thuc hm vo A, v k hiu l A B.
nh ngha hnh thc ca ph thuc hm nh sau:
Quan h Q (A, B, C) c ph thuc hm A xc nh B (k hiu l A B) nu:

50/174

" q, q Q, sao cho q.A = q.A th q.B = q.B


(Ngha l: ng vi 1 gi tr ca A th c mt gi tr duy nht ca B)
A l v tri ca ph thuc hm, B l v phi ca ph thuc hm.
A B c gi l ph thuc hm hin nhin nu B A. Ngha l, mt tp A ln hn
v bao tp con B th A xc nh c gi tr ca cc thuc tnh trong tp B l iu hin
nhin.
A B c gi l ph thuc hm nguyn t, hoc ni cch khc, B c gi l ph
thuc hm y (fully functional dependence) vo A nu "A A u khng c A B.
V d 4.3.1 :

Trong lc CSDL qun l ha n bn hng cho trong v d 4.1.2 v 4.2.10, quan


h HAN (S-ha-n, S_chng_loi_mt_hng, Tng-tr-gi) c cc ph thuc
hm sau:
f1: S-ha-n S_chng_loi_mt_hng;
f2: S-ha-n Tng-tr-gi;
bi v S-ha-n l kha ca lc quan h HAN. Nu bit s ha n th ta
c th xc nh c tt c cc thng tin cn li lin quan n ha n , trong c
thng tin v S_chng_loi_mt_hng v Tng-tr-gi tt c cc mt hng ca ha n.
Cc ph thuc hm trn u l nguyn t.
Quan h CHITIT_H (S-ha-n, M-hng, S-lng-t, n-gi, Tr-gi) c cc
ph thuc hm sau:
f1: S-ha-n, M-hng S-lng-t.
f2: S-ha-n, M-hng n-gi.
f3: S-ha-n, M-hng Tr-gi.
f4: S-lng-t, n-gi Tr-gi.
Thuc tnh n-gi ph thuc hm khng y vo kha (S-ha-n, M-hng), bi
v n ch ph thuc vo mt hng (thng qua M-hng).

51/174

Qua v d va nu chng ta thy, trn mt lc quan h c th tn ti nhiu ph thuc


hm. Tp cc ph thuc hm thng c k hiu bng ch F.
Gi F l tp cc ph thuc hm i vi lc quan h R nh ngha trn tp thuc tnh
U v X Y l mt ph thuc hm; X,Y U. Ta ni rng X Y c suy din lgic t
F nu R tha cc ph thuc hm ca F th cng tha X Y v k hiu l:
F = X Y.

V d 4.3.2:
Vi F = { X Y, X Z, Y T }
Th ta c cc ph thuc hm X YZ v X T.
Gi F+ l bao ng (Closure) ca F , tc l tp cc ph thuc hm c suy din lgic
t F. Nu F = F+ th ta ni F l h y (full family) ca cc ph thuc hm.
Bi ton thnh vin (MemberShip) nu vn ph thuc hm X Y c phi l c
suy din lgc t F hay khng (tc l X Y F + ? ) l mt bi ton kh gii. N i
hi chng ta phi c mt h lut dn suy din lgic cc ph thuc hm.
Nm 1974, Amstrong a ra h tin (cn gi l h lut dn Amstrong, hay cc tnh
cht ca ph thuc hm) (D.Maier - 1983 [2]) nh sau:
X, Y, Z, W U. Ph thuc hm c cc tnh cht sau y:
(i) Tnh phn x:
Nu Y X th X Y.
X Y th X Z YZ.
(iii) Tnh bc cu:
Nu X Y v Y Z th X Z.
V ngi ta chng minh rng h tin Amstrong l ng n v y thng qua
3 b ( y khng chng minh):

52/174

B 1: H tin Amstrong l ng, ngha l, vi F l tp ph thuc hm ng trn


quan h R, nu X Y l mt ph thuc hm
B 2: T h tin Amstrong suy ra mt s lut b sung sau y:
(iv) Tnh phn r (hoc lut tch):
Nu X YZ th X Y v X Z.
(v) Tnh hp (hoc lut hp):
Nu X Y v X Z th X YZ.
(vi) Tnh ta bc cu, hoc bc cu gi:
Nu X Y v YZ W th XZ W.
nh ngha: Bao ng (Closure) ca tp cc thuc tnh X i vi tp cc ph thuc hm
F (k hiu l XF+) l tp tt c cc thuc tnh A c th suy dn t X nh tp bao ng
ca cc ph thuc hm F+:
X+ F = { A X A F + }
V
B 3: X Y c suy din lgic t F nh h tin Amstrong khi v ch khi Y
X+F.
nh l: H tin Amstrong l ng v y .
y l nn tng chng minh cc l thuyt CSDL quan h, c bit l trong bi ton
thnh vin - kim tra xem mt ph thuc hm f : X Y c thuc bao ng ca tp F
hay khng? ...
V d 4.3.3:
Cho lc quan h R (A,B,C,D,E,G,H) v tp cc ph thuc hm F = {ABC, BD,
CDE, CEGH, GA }. p dng h tin Amstrong, tm mt chui suy din ABE.
Gii:
1. ABC (cho trc - ph thuc hm f1)

53/174

2. ABAB (tnh cht phn x)


3. ABB (lut tch)
4. BD (cho trc - ph thuc hm f2)
5. ABD (bc cu 3 & 4)
6. ABCD (hp 1 & 5)
7. CDE (cho trc - ph thuc hm f3)
8. ABE (bc cu 6 & 7). Kt thc.
V d 4.3.4:
Cho lc quan h R (A,B,C,D,E,G,H,I,J) v tp cc ph thuc hm F = {ABE,
AGJ, BEI, EG, GIH }. Tm chui suy din ABGH (Bi tp mu ca David
Maier tr. 51)
Gii:
1. ABE (cho trc - ph thuc hm f1)
2. ABAB (phn x)
3. ABB (lut tch)
4. ABBE (hp ca 1 & 3)
5. BEI (cho trc - ph thuc hm f3)
6. ABI (bc cu 4 & 5)
7. EG (cho trc - ph thuc hm f4)
8. ABG (bc cu 1 & 7)
9. ABGI (hp 6 & 8)
10. GIH (cho trc - ph thuc hm f5)
11. ABH (bc cu 9 & 10)

54/174

12. ABGH (hp 8 & 11)


Thut ton tm bao ng ca X da trn tp ph thuc hm F i vi quan h R c
m t bng ngn ng ta Pascal nh sau (Xem D.Maier - 1983 tr.64-69 [4]):
Procedure Closure (X, F)
Begin
OldDep := NewDep := X;
While NewDep <> OldDep Do
Begin
OldDep= NewDep;
For every FD: WZ F Do
If W NewDep Then NewDep := NewDep Z;
End;
Return NewDep;
End;
ng dng gii bi ton tm kha ca quan h:
nh ngha 3.1.6.2 trong Chng III, mc 3.1 v kha c vit li bng ph thuc hm
nh sau:
R l lc quan h nh ngha trn tp cc thuc tnh U = { A1, A2, ... , An }, vi tp
cc ph thuc hm F = { f1, f2, ..., fm } xc nh trn R. K U l kha ca R nu tha
mn hai iu kin sau y:
(i) K U.
(ii)$ K K m K U.
By gi chng ta hy biu din lc quan h R (U) bng th c hng nh sau:
-Mi nt ca th l tn mt thuc tnh ca R.

55/174

-Cung ni 2 thuc tnh A v B th hin ph thuc hm A B


-Thuc tnh m ch c cc mi tn i ra (tc l ch nm trong v tri ca cc ph thuc
hm) c gi l nt gc.
-Thuc tnh m ti n ch c cc cung i ti (tc l ch nm trong v phi ca cc ph
thuc hm) c gi l nt l.
Nh vy kha ca lc quan h phi bao ph tp cc nt gc, ng thi khng cha
bt k nt l no ca th.
Xut pht t tp cc nt gc (X), da trn tp cc ph thuc hm F, chng ta tm bao
ng XF+ . Nu XF+ = U th X l kho, ngc li th b sung mt thuc tnh khng thuc
nt l vo X ri tm bao ng. C nh th cho n khi tm c bao ng ca X bng
U.
V d 4.3.5 :
Cho R (A, B, C, D, E, H) vi F = { ABC, CDE, ECA, CDH, HB }. Hy tm
kha ca R.

Trong th trn chng ta thy ch c nt D l nt gc, cc nt cn li u khng phi


nt l. Kha ca R phi cha thuc tnh D.
D

+ = , bi v khng tm thy ph thuc hm no c v tri ch c mt mnh D.

V CD c mt trong v tri ca 2 ph thuc hm do ghp thm C vo tp cc nt gc


xt kha.

56/174

Nh vy CD{C,D,E,H,B,A } do CD l kha ca R.
V d 4.3.6:
Cho quan h GING-DY (MS_CBGD, MS_MH, T_CBGD, HH_CBGD, ML, TSSV)
vi tp ph thuc hm:
F = {MS_CBGD T_CBGD;
MS_MH HH_CBGD, ML;
HH_CBGD ML;
MS_CBGD HH_CBGD;
MS_CBGD, MS_MH TSSV
}
y MS_CBGD l m s cn b ging dy; MS_MH l m s mn hc; T_CBGD l
tn cn b ging dy; HH_CBGD l hc hm ca cn b ging dy; ML l m s lp
hc; v TSSV l tng s sinh vin theo hc mn MS_MH do ging vin MS_CBGD
ph trch.
Bi ton: Xc nh kha ca quan h GING-DY.
(TS. ng th Bch Thy, thi nm 1992).
Li gii: cho n gin, chng ta hy k hiu tn cc thuc tnh ca quan h trn ln
lt l A, B, C, D, E, G tng ng. Khi quan h GING-DY v tp ph thuc hm
F c vit ngn gn li l:
R (A, B, C, D, E, G)
F = { AC; BD,E; DE; AED; ABG }
th biu din cc ph thuc hm nh sau:

57/174

Chng ta nhn thy trn th, hai thuc tnh A v B l cc nt gc. E, C v G l cc


nt l. Kha ca quan h phi cha cc thuc tnh cc nt gc.
Xt X = { A }
XF+ = { A, C, D, E } // Cn thiu thuc tnh B v G
Xt X = { B }
XF+= { D, E } // Cn thiu thuc tnh A,B,C v G
Ly X = { A,B }

Vy AB l kha ca R. Tc l, kha ca quan h ging-dy l { MS_CBGD, MS_MH }


Ph thuc hm cng vi cc loi ph thuc a tr (Multivalued Dependency) v ph
thuc kt (Join Dependency) l nhng khi nim rt quan trng trong l thuyt, phn
tch v thit k CSDL.

58/174

Ngn ng i s quan h
Dn nhp.
Ngn ng i s quan h l ngn ng biu din cu hi v cc quan h.
Do cc cch biu din khc nhau nn trong ti liu ny, ngn ng i s quan h c
chia lm 3 nhm: Cc php ton tp hp - cc php ton ny c biu din nh cc
php ton trn tp hp, cc php ton quan h v cc php ton khc lin quan ch yu
n php kt ni.

Cc php ton tp hp trn cc quan h.


Su php ton c bn trn tp hp c p dng trn tp cc b gi tr ca cc quan h,
l: Hp (Union), Hiu (Minus), Giao (Intersection), Tch -cc (Cartesian), php
chia (Division) v php b (Complement).
Gi thit: U = { A1, A2, A3, ... An } l tp cc thuc tnh.
R v S l 2 quan h c nh ngha trn U c cng th t ca cc thuc tnh. V
y chng ta lun lun gi thit l R v S c s lng hu hn cc b gi tr.
Php hp 2 quan h (Union).
Hp ca hai quan h R v S - c k hiu l R S - l mt quan h Q xc nh trn
tp thuc tnh U, c cng th t thuc tnh nh trong quan h R v S, c nh ngha
nh sau:
Q = R S = { t / t R hoc t S }
Ni mt cch nm na, hp ca 2 quan h R v S l mt quan h c cng ngi vi
quan h R v S vi cc b gi tr bng gp cc b gi tr ca c R v S; nhng b gi tr
trng nhau ch c gi li 1 b.
V d 5.2.1:
Quan h nvA c cc b gi tr sau:
MS H-tn
100

Phi Chc-danh

Nguyn Vn Nam Nam Gim c

Lng

MV

2.500.000 10

59/174

101

Hong Th Xun

103

ng Ngc Chin N

105

Phan K Nhn

K ton trng 1.700.000 10


Th k

Nam Li xe

1.000.000 10
700.000

10

Quan h nvB c cc b gi tr sau:


MS H-tn

Phi Chc-danh

Lng

MV

210

Nguyn Th Cao N

Trng phng 1.200.000 30

101

Hong Th Xun N

K ton trng 1.700.000 10

221

Hu Ngc

Nam Ph phng

1.000.000 30

233

Hong Thao

Nam Chuyn vin

1.000.000 30

Hp ca hai quan h trn cho kt qu l quan h NV-CTy c 7 b gi tr sau:


MS H-tn

Phi Chc-danh

Lng

MV

100

Nguyn Vn Nam Nam Gim c

101

Hong Th Xun

103

ng Ngc Chin N

105

Phan K Nhn

Nam Li xe

210

Nguyn Th Cao

221

Hu Ngc

Nam Ph phng

1.000.000 30

233

Hong Thao

Nam Chuyn vin

1.000.000 30

2.500.000 10

K ton trng 1.700.000 10


Th k

1.000.000 10
700.000

10

Trng phng 1.200.000 30

B gi tr c m s nhn vin l 101 xut hin 2 ln trong 2 quan h nvA v nvB,


nhng trong quan h NV-Cty b ny ch c gi li 1 ln, do ch cn 7 b gi tr.

Php tr hai quan h (Minus).


Hiu ca hai quan h R v S, c k hiu l R - S, l mt quan h Q xc nh trn tp
thuc tnh U, c cng th t thuc tnh nh trong quan h R v S, c nh ngha nh
sau:
Q = R - S = { t / t R v t S }
60/174

Ni mt cch nm na, hiu ca 2 quan h R v S l mt quan h c cng ngi vi quan


h R v S vi cc b gi tr l cc b gi tr ca R sau khi loi b i cc b c mt
trong quan h S.
V d 5.2.2:
Vi hai quan h nh trn, hiu ca nvA v nvB l quan h NV-CtyA vi cc b
sau:
MS H-tn

Phi Chc-danh Lng

MV

100

Nguyn Vn Nam Nam Gim c

2.500.000 10

103

ng Ngc Chin N

1.000.000 10

105

Phan K Nhn

Th k

Nam Li xe

700.000

10

Giao ca 2 quan h (Intersection).


Giao ca hai quan h R v S, c k hiu l R S, l mt quan h Q xc nh trn
tp thuc tnh U, c cng th t thuc tnh nh trong quan h R v S, c nh ngha
nh sau:
Q = R S = { t / t R v t S }
Ni mt cch nm na, giao ca 2 quan h R v S l mt quan h c cng ngi vi
quan h R v S vi cc b gi tr l cc b ging nhau ca c hai quan h R v S.
V d 5.2.3:
Vi hai quan h nh trn, hiu ca nvA v nvB l quan h NV-CtyA vi cc b
sau:
MS H-tn
101

Phi Chc-danh

Hong Th Xun N

Lng

MV

K ton trng 1700.000 10

Tch -cc ca 2 quan h (Cartesian).


R (A1, A2, ..., An) v S (B1, B2, ..., Bm) l hai quan h c s b gi tr hu hn.
Tch -cc ca hai quan h R v S, c k hiu l R x S, l mt quan h Q xc nh
trn tp thuc tnh ca R v S (vi n + m thuc tnh) v c nh ngha nh sau:

61/174

Q = R x S = { t / t c dng (a1, a2, ..., an, b1, b2, ..., bm) trong (a1, a2, ..., an) R v
(b1, b2, ..., bm) S }
Ni mt cch nm na, tch -cc ca 2 quan h R v S l mt quan h Q c s ngi
bng tng s ngi ca R v S, vi cc b gi tr gm 2 phn: phn bn tri l mt b gi
tr ca R v phn bn phi l mt b gi tr ca S. Nh vy, nu R c n1 b gi tr v S
c n2 b gi tr, th Q s c n1 x n2 b gi tr.
V d 5.2.4:
R (A, B, C) R x S = Q (A, B, C, D, E, F)
a1, b1 c1 a1 b1 c1 d1 e1 f1
a2, b2 c2 a1 b1 c1 d2 e2 f2
a3, b3 c3 a2 b2 c2 d1 e1 f1
v S (D, E, F) a2 b2 c2 d2 e2 f2
d1 e1 f1 a3 b3 c3 d1 e1 f1
d2 e2 f2 a3 b3 c3 d2 e2 f2

Php chia hai quan h (Division).


R l quan h n ngi v S l quan h m ngi (n > m v S ), c m thuc tnh chung
(ging nhau v mt ng ngha, hoc cc thuc tnh c th so snh c) gia R v S.
Php chia 2 quan h R v S, k hiu l R S, l mt quan h Q c n - m ngi c nh
ngha nh sau:
Q = R S = { t / sc: " u S, (t,u) R }
S dng nh ngha php tch -cc, c th nh ngha php chia hnh thc hn nh
sau:
R S = Q sao cho Q x S R (vi gi thit thm l th t thuc tnh ca R, S, Q l khng
quan trng).
V d 5.2.5:
R (A, B, C, D) S (C, D) R S= (A, B)
62/174

abcdcdab
abefefcd
bcef
cdcd
cdef
abde
V d 5.2.6: (TS. ng Th Bch Thy)
Cho quan h v kh nng li cc loi my bay ca cc phi cng:
KH-NNG (S-hiu-phi-cng, S-hiu-my-bay)
S-hiu-phi-cng S-hiu-my-bay
32

102

30

101

30

103

32

103

33

100

30

102

31

102

30

100

31

100

Cu hi: Cho bit cc phi cng c kh nng li c c 3 loi my bay 100, 101, v 103
?
Tr li: l thng ca php chia quan h KH-NNG cho quan h MY-BAY (Shiu-my-bay):
100
101

63/174

103
V kt qu l quan h PHI-CNG (S-hiu-phi-cng) c 1 b gi tr (30).
Php b ca mt quan h (Complement).
Cho quan h R (A1, A2, ..., An) vi cc min gi tr ca thuc tnh Ai l MGT(Ai).
Php b ca quan h R l quan h Q xc nh trn tp thuc tnh R+, k hiu l R, c
nh ngha nh sau:
Q = R = { t (a1, a2, ..., an) v ai MGT(Ai) " i=1.. n / t R }
Ngha l tp tt c cc b gi tr c th c ca tch -cc min gi tr MGT(Ai) nhng
cha c mt trong th hin ca quan h R. Quan h b ca mt quan h c s lng b
gi tr l rt ln, v vy trong thc t rt t h qun tr CSDL ci t php ton ny.
V d 5.2.7:
Quan h CUNG-CP (M-NCC, Hng-ha) vi M-NCC = { S1, S2, S3 } v cc Hngha cung cp l { inh, c, Vt }
M-NCC Hng-ha
S1

inh

S1

Vt

S2

S2

inh

S3

Vt

Quan h b ca quan h CUNG-CP c cc b gi tr sau:


M-NCC Hng-ha
S1

S2

Vt

S3

S3

inh

64/174

Ngn ng i s quan h (tip theo)


Php kt ni hai quan h (Join)
Gi s c 2 quan h R (A1, A2, ..., An) v S (B1, B2, ..., Bm).
t = (a1, a2, ..., an) l mt b gi tr ca R v u = (b1, b2, ..., bm) l mt b gi tr ca S.
Gi v l b ghp ni u vo t (hay b gi tr t v u c "xp cnh nhau" to thnh b
gi tr mi v) c nh ngha nh sau:
v = (t, u) = (a1, a2, ..., an, b1, b2, ..., bm).
A R+ v B S+ l hai thuc tnh c th so snh c.
Gi q l mt trong cc php ton so snh { <, <=, >, >=, =, }.
Php kt ni hai quan h (c th ni tt l php kt) R vi S trn cc thuc tnh A
v B vi php so snh q , vi gi thit l gi tr ct R[A] c th so snh c (qua php
so snh q ) vi mi gi tr ca ct R[B], c nh ngha qua:
R

S = { v = (t, u) t R , u S v t.A q u.B }


Hoc:
R

S = (R x S) : (A q B).
Php kt ni 2 quan h R v S c th xem nh c thc hin qua 2 bc:
Bc 1: Thc hin tch -cc hai quan h R v S.
Bc 2: Chn cc b gi tr tha mn iu kin A q B.

65/174

Ng ngha: nh ngha trn cho ta kt qu ca php kt ni hai quan h R v S vi php


so snh q trn 2 thuc tnh A v B l mt quan h mi, l kt qu cui cng ca php
ton quan h (php Chn) trn quan h kt qu ca php ton tp hp (tch -cc).
Nu q l php ton so snh bng nhau (=) th ta gi l php kt ni bng (Equi Join).
Nu cc thuc tnh so snh l ging tn nhau th trong kt qu ca php kt ni s loi
b i mt trong 2 thuc tnh , khi php kt ni c gi l php kt ni t nhin
(Natural Join) v s dng k hiu cho php ton l " * " hoc ch k hiu I><I (khng
c A q B) pha trn ca php ton. Trong cc trng hp cn li, php ton c gi
chung l php kt ni theta (q -Join).
Php kt ni c biu din bng s nh sau:

Hnh 5.3.3. S biu din php kt ni


V d 5.3.3:
Cho 2 quan h R v S vi cc b gi tr cho trong bng ct ln th nht v th
hai bn tri. Kt qu php kt ni theta (q -Join) ca 2 quan h trn c cho trong bng
ct ln th ba di y:
R

(A B C)
a1 1

a2 2

a3 2

(C D E)

=Q (A B C C D E)

66/174

d1 e1

a1 1 1 1 d1 e1

d2 e2

a2 2 1 1 d1 e1

d3 e3

a2 2 1 2 d2 e2
a3 2 2 1 d1 e1
a3 2 2 2 d2 e2

Kt qu php kt ni t nhin ca 2 quan h R v S l quan h Q vi cc b gi tr nh


sau:
R I><I S = Q (A B C D E)
a1 1 1 d1 e1
a2 2 1 d1 e1
a3 2 2 d2 e2
V d 5.3.4:
Cho CSDL v cn b - vin chc Nh nc (CBVC) vi cc quan h sau y:
-Quan h N-V:
M-V Tn-n-v

Loi

10002

Trng K thut nghip v my tnh 3

10003

Phng qun l hnh chnh

10022

Vn phnh i din Thanh nin

10070

Ban qun l vn sinh vin

10071

Lc lng qun l th trng

-Quan h loi hnh t chc ca n v LOAI-V:


Loi Tn-loi-hnh
2

Hnh chnh

S nghip hon ton

Hch ton c lp
67/174

-Quan h Ngch-CBVC:
Ngch Tn ngch
01002 Chuyn vin chnh
01003 Chuyn vin
01004 Cn s
01005 K thut vin nh my
01008 Nhn vin vn th
01010 Li xe c quan
-Quan h Ngch-Bc-lng:
Ngch Bc H-s-lng
01002 01

3.35

01002 02

3.63

01002 03

3.91

01003 05

2.82

01003 07

3.31

01003 08

3.56

01004 07

2.18

01004 08

2.30

01004 10

2.55

01004 11

2.68

01005 04

2.06

01005 05

2.18

01005 06

2.30

01008 11

2.12

01010 08

2.47

01010 11

2.80

68/174

01010 13

3.02

-Quan h danh sch CBVC vi cc b gi tr sau:


M-V M-CC

H-lt

Tn

Gii Ngy-sinh Ngch Bc Ngy-xp

10002

1000028 Trn T

Hi

Nam 05/09/40

01003 08

01/12/96

10002

1000040 Trn Ngc

Sn

Nam 04/08/57

01003 05

01/12/97

10002

1000042 Nguyn Vn Sang

Nam 20/04/61

01004 10

01/01/97

10002

1000043 Nguyn Vn Thnh Nam 04/10/44

01004 10

01/01/97

10002

1000065 Hunh Th

10003

Hoa

06/04/61

01004 07

01/01/97

1000156 Hunh Ngc Thy

28/10/54

01005 06

01/09/97

10003

1000134 Nguyn Vn Bc

Nam 08/09/42

01010 13

01/12/97

10003

1000159 L Vn

Sang

Nam 15/06/50

01008 11

01/03/96

10003

1000160 Trnh Ngc

Tm

Nam 18/11/66

01010 08

01/02/96

10022

1000218 Nguyn Cu Chu

Nam 19/11/47

01010 11

01/10/96

10022

1000219 Nguyn Vn Hng Nam 15/05/55

01003 05

01/12/95

10022

1000220 Nguyn Kim Lu

01004 12

01/12/95

22/07/55

(Cc quan h 4 v 5 c nu trong cc v d 4.2.3 v 4.2.5 trong Chng IV, mc


4.2, bi 5).
Php kt ni t nhin 2 quan h N-VI v LOI-V l mt quan h gm 4 thuc tnh:
M-V, Tn-n-v, Loi v Tn-loi vi cc b gi tr sau:
M-V Tn-n-v

Loi Tn-loi-hnh

10002

Trng K thut nghip v my tnh 3

S nghip hon ton

10003

Phng qun l hnh chnh

Hnh chnh

10022

Vn phnh i din Thanh nin

Hnh chnh

10070

Ban qun l vn sinh vin

Hch ton c lp

10071

Lc lng qun l th trng

Hch ton c lp

69/174

Ghi ch **: Hc vin cn ghi nhn li cc quan h trong v d ny. Chng s c dng
li trong cc chng ti.

Cc php ton khc.


Mc ny trnh by 3 php ton kt ni m rng khc c bit quan trng, m bn cht
ca chng vn l kt ni. Chng c ci t trong mt s h quan tr CSDL nh
MicroSoft Access, SQL-Server, Oracle. Cc php kt ni l: Kt ni ni (Inner Join),
Kt ni tri (Left Join) v Kt ni phi (Right Join).

Php kt ni ni (Inner Join).


Thc cht l php kt ni bng trnh by trn. Tuy nhin, ngay c trong trng
hp hai thuc tnh so snh c cng tn th kt qu php kt ni vn gi li 2 tn thuc
tnh .
V d 5.4.1.1:
Cho 2 quan h R (A, B, C) v S (A, D, E, F) vi cc b gi tr nh di y. Kt
qu ca php kt ni ni c cho trong bng pha bn phi.
R (A B C) S (A D E F) R

S =Q (A B C A D E F)

a1 b1 c1

a1 d1 e1 f1

a1 b1 1

a1 d1 e1 f1

a2 b2 c2

a2 d2 e2 f2

a2 b2 c2 a2 d2 e2 f2

a3 b3 c3

a4 d4 e4 f4

a7 b7 c7 a7 d7 e7 f7

a5 b5 c5

a6 d6 e6 f6

a7 b7 c7

a7 d7 e7 f7

V d 5.4.1.2 :
Php kt ni ni 2 quan h N-V v LOI-V cho kt qu l mt bng sau:
M-V Tn-n-v

Loi Loi Tn-loi-hnh

10002

Trng K.thut nghip v my tnh 3

SN hon ton

10003

Phng qun l hnh chnh

Hnh chnh

70/174

10022

Vn phnh i din Thanh nin

Hnh chnh

10070

Ban qun l vn sinh vin

Hch ton .lp

10071

Lc lng qun l th trng

Hch ton .lp

Php kt ni tri (Left Join)


Gi s c 2 quan h R (A1, A2, ..., An) v S (B1, B2, ..., Bm).
t = (a1, a2, ..., an) v u = (b1, b2, ..., bm) l hai b gi tr ca R v S. Gi v l b
ghp ni u vo t (hay b gi tr t v u c "xp cnh nhau") v k hiu l:
v = (t, u) = (a1, a2, ..., an, b1, b2, ..., bm).
B tNULL = (NULL, NULL, ..., NULL) l mt b c bit ca R gm n gi tr ca
cc thuc tnh A1, A2, ..., An u l khng xc nh v uNULL = (NULL, NULL, ...,
NULL) l mt b c bit ca S gm m gi tr ca cc thuc tnh B1, B2, ..., Bm u l
khng xc nh.
A R+ v B S+ l hai thuc tnh c th so snh c.
Php kt ni tri hai quan h R vi S trn cc thuc tnh A v B vi php so snh bng (
= ), vi gi thit l gi tr ct R[A] c th so snh tng ng c vi mi gi tr ca
ct S[B], c nh ngha l:
R

S = { v = (t, u) (t R , u S v t.A q u.B) hoc (t R, u = uNULL vi t.A S[B]) }


ngha l, tt c cc b v c c nh cch t b gi tr ca R v S xp cnh nhau, nu
c gi tr ging nhau trn 2 thuc tnh kt ni; v cc b v c c nh cch t b ca
R vi cc b NULL ca S, nu khng tm c gi tr tng ng ca thuc tnh kt ni
trn quan h S.
V d 5.4.2.1:
Vi hai quan h R v S cng cc b gi tr ca chng c cho trong v d 5.4.1,
kt qu ca php kt ni tri ca R v S l:
R

71/174

S = Q (A, B, C, A, D, E, F)
a1 b1 1 a1 d1 e1 f1
a2 b2 c2 a2 d2 e2 f2
a3 b3 c3 - -

- -

a5 b5 c5 -

- -

a7 b7 c7 a7 d7 e7 f7
K hiu du tr (-) trong cc thuc tnh ca S c hiu l gi tr khng xc nh (gi
tr Null).
Cc dng c gi tr thuc tnh A ca R l a3 v a5 khng tm c gi tr ca thuc tnh
A tng ng trong quan h S, nn phn cn li ca n c l khng xc nh. Qua
bng kt qu trnh by trn, chng ta thy ngha ca php ton ny l nhm xc nh
cc b gi tr ca quan h bn tri nhng khng c b gi tr tng ng trong quan h
pha bn phi.
V d 5.4.2.2 :
Gi s chng ta thm mt b mi cho bng N-V gm c M-V l 10090, Tnn-v l Hi khuyn nng Qun X v loi hnh n v l 7. Khi php kt ni tri
(Left Join) hai quan h N-V v LOI-V cho kt qu l quan h c th hin nh
sau:
M-V Tn-n-v

Loi Loi Tn-loi-hnh

10002

Trng K.thut nghip v my tnh 3

SN hon ton

10003

Phng qun l hnh chnh

Hnh chnh

10022

Vn phnh i din Thanh nin

Hnh chnh

10070

Ban qun l vn sinh vin

Hch ton .lp

10071

Lc lng qun l th trng

Hch ton .lp

10090

Hi khuyn nng Qun X

Null Null

72/174

Bi v trong quan h LOI-V khng c b no c gi tr ct Loi l 7, do dng


cui cng ca quan h trn, mt b gm ton gi tr NULL c hai ct Loi v Tn-loihnh c t cnh b gi tr mi c b sung trong th hin ca quan h N-V.
ng dng ca php kt ni ny c th thy r trong bi ton qun l CBVC nu trn:
Trc ht cn xc nh nhng n v c loi hnh t chc khng c trong danh mc
Loi-V. Cu tr li rt n gin: ch vic chn ra cc dng ca bng kt ni c gi tr
NULL ct Loi trong phn ui ca b gi tr l NULL.
Cng trong bi ton qun l CBVC nu trn: Theo yu cu qun l, mi CBVC c tn
trong danh sch ca n v phi c mt bn khai l lch, tc l mt b gi tr v l lch
chi tit. Mi CBVC c mt m s CBVC phn bit v nhn dng ng thi kha ca
quan h l lch cng l m s ny. C th ng dng php kt ni tri xc nh nhng
CBVC no c tn trong danh sch m cha c l lch trong CSDL.

Php kt ni phi (Right Join)


Vn vi cc quan h R, S; cc thuc tnh A, B; v cc b gi tr v, t, u, tNULL, uNULL
c xc nh nh trn.
Php kt ni phi hai quan h R vi S trn cc thuc tnh A v B vi php so snh =,
vi gi thit l gi tr ct R[A] c th so snh tng ng c vi mi gi tr ca ct
S[B], c nh ngha l:
R

S = { v = (t, u) (t R , u S v t.A q u.B) hoc (t = tNULL , u S, vi t.B R[A]) }


ngha l, tt c cc b v c c nh cch t b gi tr ca R v S xp cnh nhau nu
chng c gi tr ging nhau trn 2 thuc tnh kt ni, v cc b NULL ca R vi cc b
ca S, nu khng tm c gi tr tng ng ca thuc tnh kt ni trn quan h R.

V d 5.4.3.1:
Gi s vi cc quan h R v S cng cc b gi tr ca chng c xc nh nh trong
v d 5.4.2 nu trn. Kt qu ca php kt ni phi R vi S l quan h vi cc b gi tr
sau:

73/174

S = Q (A, B, C, A, D, E, F)
a1 b1 1 a1 d1 e1 f1
a2 b2 c2 a2 d2 e2 f2
-

- - a4 d4 e4 f4
-

a6 d6 e6 f6

a7 b7 c7 a7 d7 e7 f7
K hiu du tr (-) trong cc thuc tnh ca R c hiu l gi tr khng xc nh (gi
tr Null).
Cc dng c gi tr ti thuc tnh A ca S l a4 v a6 khng tm c gi tr ca thuc
tnh A tng ng trong quan h R, do phn u ca n c l khng xc nh.
Qua bng kt qu trnh by trn, chng ta thy ngha ca php ton ny l nhm xc
nh cc b gi tr ca quan h bn phi khng c b gi tr tng ng trong quan h
pha bn tri.
V d 5.4.3.2 :
Gi s chng ta thm mt b mi cho quan h LOI_V gm c m Loi l 6,
Tn-loi-hnh l C quan ng / on. Khi php kt ni phi (Right Join) hai quan
h N-V v LOI-V cho kt qu l quan h c th hin nh sau:
M-V Tn-n-v

Loi Loi Tn-loi-hnh

10002

Trng K.thut nghip v my tnh 3

SN hon ton

10003

Phng qun l hnh chnh

Hnh chnh

10022

Vn phnh i din Thanh nin

Hnh chnh

10070

Ban qun l vn sinh vin

Hch ton .lp

10071

Lc lng qun l th trng

Hch ton .lp

10090

Hi khuyn nng Qun X

Null Null

Null

Null

Null 6

C quan ng

74/174

V khng c n v no c loi hnh t chc n v l 6, nn dng cui cng trong


bng trn, c 3 ct thuc phn ca quan h N-V b trng bng cc gi tr Null
khng xc nh.
Mt ng dng ca php kt ni ny l: xc nh nhng CBVC no c l lch trong CSDL
(do nhp sai m s CBVC) nhng khng c tn trong danh sch (tc l cc l lch v
ch). Hoc: xc nh cc loi hnh n v (Loi) m khng c n v no thuc vo.
Trong mt s ngn ng truy vn CSDL (MicroSoft SQL-Server, Oracle ...) ngi ta gi
2 php ton kt ni tri (Left Join) v kt ni phi (Right Join) bng chung mt t l
"php kt ni ngoi" (Outer Join). Mc ch ca php kt ni ny l cho php gi li
tt c cc bn ghi (hoc b gi tr) ca 2 quan h c cng gi tr ca cc thuc tnh kt
ni v nhng b gi tr ca c 2 quan h khng tm c b gi tr ging nhau trn cc
thuc tnh kt ni thuc quan h i ng.

75/174

Ngn ng truy vn c s d liu SQL


Ngn ng SQL
Nh trong Chng I mc 1.4, bi 1 trnh by, mt h qun tr CSDL phi c ngn
ng giao tip gia ngi s dng vi CSDL (hoc cng cn gi l ngn ng truy nhp
CSDL). Ngn ng giao tip CSDL gm cc phm tr:
Ngn ng m t d liu (Data Definition Language - DDL) cho php khai bo cu
trc cc bng ca CSDL, khai bo cc mi lin h ca d liu (Data RelationShip) v
cc quy tc (Rules, Constraint) qun l p t ln cc d liu .
Ngn ng thao tc d liu (Data Manipulation Language - DML) cho php ngi s
dng c th thn (Insert), xa (Delete), sa (Update) d liu trong CSDL.
Ngn ng truy vn d liu, hay ngn ng hi p c cu trc (Structured Query
Language - SQL) cho php nhng ngi khai thc CSDL (chuyn nghip hoc khng
chuyn) s dng truy vn cc thng tin cn thit trong CSDL.
Ngn ng qun l d liu (Data Control Language - DCL) cho php nhng ngi qun
tr h thng thay i cu trc ca cc bng d liu, khai bo bo mt thng tin v cp
quyn hn khai thc CSDL cho ngi s dng.
Nhng nm 1975-1976, IBM ln u tin a ra h qun tr CSDL kiu quan h mang
tn SYSTEM-R vi ngn ng giao tip CSDL l SEQUEL (Structured English QUEry
Language), mt ngn ng con thao tc vi CSDL.
Nm 1976 ngn ng SEQUEL c ci tin thnh SEQUEL2. Khong nm 1978-1979
SEQUEL2 c ci tin v i tn thnh Ngn Ng Truy Vn C Cu Trc (Structured
Query Language - SQL) v cui nm 1979 h qun tr CSDL c ci tin thnh
SYSTEM-R*.
Nm 1986 Vin Tiu Chun Quc Gia M (American National Standards Institute ANSI) cng nhn v chun ha ngn ng SQL, v sau T chc Tiu chun Th
gii (International Standards Organization - ISO) cng cng nhn ngn ng ny.
l chun SQL-86.
Ti nay SQL qua 3 ln chun ha li (1989, 1992, 1996) m rng cc php ton
v tng cng kh nng bo mt v tnh ton vn d liu. Ti liu ny trnh by Ngn
ng truy vn CSDL da trn chun SQL-92 v c tham kho vi SQL, SQL*PLUS, PL/

76/174

SQL ca Oracle Server Release 7.3 (1996) v MicroSoft SQL Server 7.1 vi cc phm
tr nu trn.
vic trnh by c php cc cu lnh SQL c gn gng v d hiu, ti liu ny c
a ra mt s quy c k php (Typographic Conventions) nh sau:
Cc t kha (KeyWords), cc hm (Functions), tn bng (quan h - Table Names) ca
cc cu lnh c vit bng ch in hoa (UpperCase).
Cc tn thuc tnh (Column Names) ca cc bng c vit m. Nhng tn thuc tnh
c du ting Vit hay c khong trng c vit trong du ngoc vung ( [ ] ) theo k
php ca SQL-Server.
V d: SELECT Deptno, Deptname FROM DEPARTMENT;
Cc bin c php (Syntax Variables), tc l cc thnh phn ngn ng m ngi s dng
phi in c th vo khi vit lnh, s c vit bng ch thng (LowerCase), trong cp
du ( < > ) v nghing.
V d:CREATE TABLE <tn bng> (<tn ct> <kiu>, <tn ct> <kiu>, ...);
Cc thnh phn ty chn (Optional), tc l c th c hoc khng c vit trong cp
du ngoc vung m nt ([ ]).
V d: UPDATE <tn quan h>
SET <tn ct> = <biu thc>, <tn ct> = <biu thc>, ...
[ WHERE <iu kin> ];
Vic la chn mt trong cc kh nng c th hin bi du x ng m ( ).
Thnh phn bt buc phi chn trong danh sch c vit trong cp du mc m nt (
{ } ).
Gi tr mc nh (Default Value) c vit vi du gch chn (Underline).
V d: SELECT { * <biu thc 1>, <biu thc 2>, ... }
FROM <cc bng>
[ORDER BY <tn ct> <biu thc>[ASC DESC ], ...]

77/174

Lnh SQL c th c vit trn nhiu dng v kt thc lnh bi du chm phy ( ;
), tuy nhin t kha, tn hm, tn thuc tnh, tn bng, tn i tng (Objects) th khng
c php vit tch xung hng. Trong vn dng thc t, t kha, tn thuc tnh, tn
bng, tn i tng c vit in hoa hoc ch thng l nh nhau.
Cho n by gi chng ta c cc CSDL vi y d liu v qun l hc vin
- c trnh by trong Chng III, bi 4 (gm cc quan h: KHOA, GING-VIN,
LP-HC, MN-HC, HC-VIN, KQU-THI), qun l nhn s ca mt cng ty
EMPLOYMENT c trnh by trong Chng V, mc 5.3, bi 7 (gm cc quan h:
DEPARTMENT, EMPLOYEE, JOBS, EMPLHIST) v CSDL qun l cn b - cng
chc CCVC c trnh by trong Chng V, mc 5.4, bi 8 (gm cc bng: NV, LOI-V, NGCH-CBVC, NGCH-BC-LNG v CBVC). Cc CSDL ny
s c s dng lm cc mu cho vic trnh by cc cu lnh SQL trong ton b chng
ny.
Cc lnh hi - tm kim d liu: (Data Retrieval SQL)
Cu lnh SELECT - SQL tm kim d liu l mt trong s cc cu lnh SQL ci t
y cc php ton quan h da trn cc t kha c bn SELECT, FROM, WHERE,
GROUP BY, ORDER BY, HAVING. y l cu lnh c s dng ph bin nht vi
mc ch tm kim thng tin trong CSDL quan h. C php tng qut ca cu lnh nh
sau:
SELECT [DISTINCT]<biu thc 1>, <biu thc 2>, ...
FROM <tn bng 1>, <tn bng 2>, ...
[WHERE <iu kin chn> ]
[GROUP BY <tn ct 1>, <tn ct 2>, ...]
[ORDER BY <tn ct 1> | <biu thc s 1>[ASC | | DESC ], ...]
[HAVING <iu kin in kt qu>];
Chng ta s ln lt lm r tng phn ca c php ngn ng. C s d liu c s
dng minh ha cc v d trong chng ny l h qun l nhn s ca mt cng
ty EMPLOYMENT vi cc bng quan h: DEPARTMENT, EMPLOYEE, JOBS,
EMPLHIST ni trn.
Tm thng tin t cc ct ca bng.

78/174

SELECT [DISTINCT]{ * | <biu thc 1>[AS <Tn mi 1>],


<biu thc 2>[AS <Tn mi 2>], ... }
FROM <tn bng>;
Cu hi 6.1.1: Cho danh sch cc phng ban (bao gm tt c cc thng tin v M s (
Cu hi 6.1.1: Cho danh sch cc phng ban (bao gm tt c cc thng tin v M s
(DeptNo), Tn (DeptName), a im (Loc), M s ngi lnh o (Mgr), Kinh ph
hot ng (Exp_Budg) v Doanh thu (Rev_Budg) ca cc phng ban) trong Cng ty:
SELECT Deptno, Deptname, Loc, Mgr, Exp_budg, Rev_budg
FROM DEPARTMENT;
Khi cn ly thng tin v tt c cc ct ca bng chng ta c th s dng du sao ( * )
thay cho vic lit k cc tn ct ca bng. Cu lnh trn tng ng vi cu lnh:
SELECT * FROM DEPARTMENT;
Kt qu ca cu lnh l mt bng (nm trong b nh trong):
DepTno DeptName

Loc

Mgr Exp_Budg Rev_Budg

10

Accounting

Dallas

200 10.000

30

Research

San Fransisco 105 125.000

40

Sales

Boston

50

Manufacturing Houston

210 130.000

60

Shipping

215 90.000

Houston

109 280.000

800.000

Cu hi 6.1.2: Cho M s, Tn, a im, Kinh ph hot ng ca tng phng ban trong
Cng ty:
SELECT DeptNo, DeptName, Loc, Exp_Budg
FROM DEPARTMENT;
Cu lnh ny l ci t ca php chiu trn 4 thuc tnh DeptNo, DeptName, Loc v
Exp_Budg ca bng DEPARTMENT. Kt qu ca cu lnh l mt bng (nm trong b
nh trong):

79/174

DepTno DeptName

Loc

Exp_Budg

10

Accounting

Dallas

10.000

30

Research

San Fransisco 125.000

40

Sales

Boston

50

Manufacturing Houston

130.000

60

Shipping

90.000

Houston

280.000

Chng ta gi thit rng cn t tn khc (gi l b danh - Alias) cho cc ct ca bng kt


qu bng ting Vit thay v dng tn ca thuc tnh ca bng d liu ngun. Vic ny
c thc hin bng cch thm t kha AS theo sau l mt tn mi. Nu tn c cha
cc k t c bit v/hoc khong trng th vit tn trong cp du ngoc vung ( [ ]
). V d trn c sa thnh:
SELECT DeptNo AS [M s], DeptName AS [Tn phng], Loc AS [a dim],
Exp_Budg as [Kinh ph]
FROM DEPARTMENT;
Kt qu ca cu lnh l nh sau:
M s Tn phng

a im

Kinh ph

10

Accounting

Dallas

10.000

30

Research

San Fransisco 125.000

40

Sales

Boston

50

Manufacturing Houston

130.000

60

Shipping

90.000

Houston

280.000

Cu lnh SELECT khng ch thc hin vic trch thng tin t cc ct n l ca bng
m c th thc hin tnh ton theo cng thc hay biu thc bt k da trn gi tr ca
cc ct trn tng bn ghi ca bng. Trong :
Biu thc (expression) l mt dy cc ton hng (Operand) ni vi nhau bi cc php
ton (Operator). y:
Ton hng c th l:

80/174

-Trc hng (Literals): bao gm hng s (Number - V d. 1234.56 1234.56), hng vn


bn (Text) trong cp du nhy n (V d. Nguyn Hng Anh ) , hng ngy thng (Date/
Time) t trong cp du hng ro ( # - V d.#19/05/1890# ), v hng lgic (True hay
False) hoc tn gi ca trc hng.
-Tn thuc tnh (c th km theo tn bng v du chm ng trc). V d.
DEPARTMENT.DeptNo.
- Tn hm (function). V d. SUM (...), COUNT(...), SIN (...), COS(...)
- Tn bin (Variable).
Cc php ton c th l:
- Cc php ton s hc: ^ (ly tha); * (nhn), / (chia), % (chia nguyn), Mod (phn
d); + (cng), - (tr). Th t u tin cao nht theo 3 cm t tri qua phi. Cc php ton
s hc thng cho kt qu l mt s.
- Cc php ton so snh: <, <=, >, >=, =, <>. Kt qu php so snh l gi tr lgc (True
hoc False).
- Cc php ton phm vi: IN (<danh sch gi tr>), BETWEEN <Min> AND <Max>,
LIKE <Mu v.bn>.
- Cc php ton lgic: NOT (ph nh), AND (ni lin - conjunction), OR (ni ri disjunction). Kt qu cc php ton lgc l mt gi tr lgc.
Cu hi 6.1.3: Cho bit M s, Tn v lng c nm ca cc nhn vin trong cng ty:
SELECT EmpNo AS [M s], Name AS [Tn], Salary * 12 AS [Lng nm]
FROM EMPLOYEE;
Kt qu l bng:
M s Tn

Lng nm

100

Wilson

20.400

101

Smith

30.000

103

Reed

42.000

105

Watson

54.000

109

Allen

45.600
81/174

110

Turner

21.600

200

Chen

34.800

210

Ramirez

43.200

213

McDonnel 19.500

214

Simpson

9.900

215

Di Salvo

32.400

220

Schwartz

50.400

Khi thc hin php chiu tn mt quan h, cc b gi tr ging nhau c th c chn.


T kha DISTINCT c s dng nu mun ch gi li 1 b trong cc b gi tr ging
nhau tm c.
Cu hi 6.1.4: Cho bit cc nhn vin ca cng ty ang m nhn cc cng vic g? y
chnh l php chiu trn thuc tnh Job ca quan h EMPLOYEE.
SELECT DISTINCT Job FROM EMPLOYEE;
Kt qu l bng vi 6 dng v 1 ct nh sau:
Job
Clrk
Anlt
Mngr
Drvr
Spvr
Slsm
Chn cc dng ca bng - Mnh WHERE

Trong nhiu trng hp chng ta ch cn chn ra nhng b gi tr ca bng tha


mn iu kin no . Mnh WHERE (WHERE Clause) vi c php ) vi c php
WHERE <iu kin> cho php thc hin iu . y <iu kin> l mt biu thc
m kt qu l mt gi tr lgic hoc ng (True) hoc sai (False). y l s ci t ca
php chn (Selection) trong i s quan h.
82/174

Cu hi 6.1.5: Cho danh sch nhn vin ca phng s 40?.


SELECT * FROM EMPLOYEE WHERE Deptno = 40;
Kt qu l bng c 3 dng (trn tng s 12 dng ca bng ngun):
EmpNo Name

Job

Salary Comm DeptNo Sex

101

Smith

Slsm 2.500 1.300

40

109

Allen

Mngr 3.800 8.000

40

220

Schwartz Slsm 4.200 5.300

40

Cu hi 6.1.6: Cho danh sch nhn vin ca phng s 10, 30 v 50.


SELECT * FROM EMPLOYEE
WHERE (DeptNo = 10) OR (DeptNo = 30) OR (DeptNo = 50);
Hoc vit cch khc:
SELECT * FROM EMPLOYEE WHERE DeptNo IN (10, 30, 50);
Kt qu l bng:
EmpNo Name

Job

Salary Comm DeptNo Sex

100

Wilson

Clrk

1.700

10

103

Reed

Anlt

3.500

30

105

Watson Mngr 4.500 0

30

110

Turner

Clrk

1.800

50

200

Chen

Mngr 2.900

10

210

Ramirez Mngr 3.600

50

Cu hi 6.1.7: Cho danh sch cc nhn vin c lng thng 1 3500 n 4500 USD:
SELECT * FROM EMPLOYEE
WHERE (Salary >= 3500) AND (Salary >= 4500);
Hoc vit cch khc:
83/174

SELECT * FROM EMPLOYEE


WHERE Salary BETWEEN 3500 AND 4500;
EmpNo Name

Job

Salary Comm DeptNo Sex

103

Reed

Anlt

3.500

105

Watson

109

Allen

210
220

30

Mngr 4.500 0

30

Mngr 3.800 8.000

40

Ramirez Mngr 3.600

50

Schwartz Slsm 4.200 5.300

40

Mu so snh trong php ton LIKE l mt gi tr kiu Text, l mt dy k t bt k


trong c 2 k t c ngha c bit sau y:
_ : i din cho mt k t bt k ti v tr du ?
% : i din cho mt nhm k t bt k ti v tr .
V d: Vi ting Vit 1 byte (VNI, VietWare, ABC, ...) mu Nguy_n i din cho mt
dy k t c 6 k t, trong c 4 k t u l Nguy , k t th 5 l g cng c v
k t th 6 l ch n.
Mu %t chc% i din cho bt c gi tr vn bn no c cha hai t "t chc".
Cu hi 6.1.8: Cho danh sch nhn vin c tn bt u bng ch W:
SELECT * FROM EMPLOYEE WHERE Name LIKE W%;
EmpNo Name

Job

Salary Comm DeptNo Sex

100

Wilson Clrk

1.700

105

Watson Mngr 4.500 0

10

30

F Lu : Trong MS Access, hng vn bn c t trong cp du nhy kp v d "


F Lu : Trong MS Access, hng vn bn c t trong cp du nhy kp v d
"Nguyn Hng An" - v k t i din trong mu so snh vi php LIKE l:
? : i din cho mt k t bt k ti v tr du ?

84/174

* : i din cho mt nhm k t bt k ti v tr .

Th t hin th cc bn ghi - Mnh ORDER BY

Trong v d 6.1.6 v 6.1.7 chng ta thy cc nhn vin khng c sp xp theo


phng ban hay khng theo th t tng hay gim dn ca mc lng thng. thc hin
c cc iu trn, SQL h tr bi mnh ORDER BY sp xp kt qu tm c.
C php mnh ny l:
ORDER BY <tn ct>|<biu thc>[ASC| DESC], <tn ct> , <tn ct>|<biu
thc>[ASC| DESC], ...
Biu thc phi c gi tr s; n th hin s th t ca ct trong bng kt qu c
ch nh phi sp xp th t thay v phi ch r tn ct, hn na nu ct kt qu l ct
tnh ton th n cha c tn nn cc s dng biu thc l mt bin php thay th hu
dng. C th sp xp theo th t tng dn (vi t kha ASC - Vit tt ca ASCending mc nh l ASC) hoc gim dn (DESCending) theo gi tr ct. Trc ht cc bn ghi
c xp theo th t ca ct th nht; cc bn ghi c cng gi tr ct 1 s c sp
xp theo th t ct th 2, Cc bn ghi c cng gi tr c 2 ct 1 v 2 s c xp theo
ct th 3 v v.v...
Cu hi 6.1.9: Cho danh sch cc nhn vin ca phng 10, 30 v 50. Kt qu in ra theo
th t tng dn ca m phng v gim dn theo mc lng.
, ...
Biu thc phi c gi tr s; n th hin s th t ca ct trong bng kt qu c
ch nh phi sp xp th t thay v phi ch r tn ct, hn na nu ct kt qu l ct
tnh ton th n cha c tn nn cc s dng biu thc l mt bin php thay th hu
dng. C th sp xp theo th t tng dn (vi t kha ASC - Vit tt ca ASCending mc nh l ASC) hoc gim dn (DESCending) theo gi tr ct. Trc ht cc bn ghi
c xp theo th t ca ct th nht; cc bn ghi c cng gi tr ct 1 s c sp
xp theo th t ct th 2, Cc bn ghi c cng gi tr c 2 ct 1 v 2 s c xp theo
ct th 3 v v.v...
Cu hi 6.1.9: Cho danh sch cc nhn vin ca phng 10, 30 v 50. Kt qu in ra theo
th t tng dn ca m phng v gim dn theo mc lng.
SELECT * FROM EMPLOYEE WHERE Deptno IN (10, 30, 50)

85/174

ORDER BY Deptno, Salary DESC;


Hoc cch vit khc:
SELECT * FROM EMPLOYEE WHERE DeptNo IN (10, 30, 50)
ORDER BY 6 ASC, 4 DESC;
Kt qu l bng:
EmpNo Name

Job

200

Chen

Mngr 2.900

10

100

Wilson

Clrk

10

105

Watson Mngr 4.500 0

30

103

Reed

3.500

30

210

Ramirez Mngr 3.600

50

110

Turner

50

Anlt

Clrk

Salary Comm DeptNo Sex

1.700

1.800

iu kin hin th cc bn ghi - Mnh HAVING


Mnh WHERE cho php chn cc bn ghi ca bng tha mn iu kin tm
kim. Trong mt s trng hp sau khi tm c cc bn ghi tha iu kin tm, chng
ta ch mun hin th ch nhng bn ghi tha mt iu kin khc na. SQL h tr yu
cu ny bi mnh HAVING <iu kin>. Thng thng mnh ny c p dng
trong nhng cu lnh tm cc b gi tr thng qua cc qu trnh tnh ton trn nhm.
Cu hi 6.1.10 a ra sau y lm v d khng c "t gi" cho lm nhng
cng minh ha iu va nu. "Hy cho danh sch cc nhn vin phng 10, 30 v
50. Ch in nhng ngi l lnh o phng ban".
SELECT * FROM EMPLOYEE WHERE Deptno IN (10, 30, 50)
ORDER BY 6 ASC, 4 DESC
HAVING Job = "Mngr";
Kt qu l bng:
EmpNo Name

Job

Salary Comm DeptNo Sex

86/174

200

Chen

105
210

Mngr 2.900

10

Watson Mngr 4.500 0

30

Ramirez Mngr 3.600

50

Cu hi 6.1.11: Cho M phng m ngi c mc lng cao nht ca phng ln hn


4000 $US.
R rng y phi thc hin 3 cng vic:
Phn t cc nhn vin theo cc phng ban.
Xc nh mc lng cao nht ca tng phng ban.
Chn phng no c mc lng cao nht trn 4000 $US. Vic ny ch c th tin hnh
c sau khi tm ra tt c cc mc lng cao nht ca tng phng ban. Cu lnh sau
y l mt gi m ca mc 6.2 sp c trnh by di y.
SELECT Deptno, MAX(Salary)FROM EMPLOYEE
GROUP BY DeptNo
HAVING MAX(Salary) > 4000;
Deptno Max (Salary)
30

4.500

40

4.200

Truy vn thng tin t nhiu bng d liu.

Vic thc hin cc cu truy vn trn nhiu bng, v bn cht l ging nh trn mt
bng, tc l cn ch ra thng tin g cn tm v ly t cc ngun d liu no. Cc bng d
liu ngun ny cn ch ra trong mnh FROM trong cu lnh SELECT.
Nu cc bng d liu ngun c cc tn thuc tnh ging nhau th tn thuc tnh ny
phi c vit tng minh trong biu thc tm kim vi tn bng i km pha trc. Ni
chung trong mt CSDL quan h, cc bng thng c cc mi lin h vi nhau. Cc bng
c lin h vi nhau thng qua php kt ni v thng l kt ni bng (Equi-Join).
Mi lin h phi c th hin trong php kt ni ca mnh FROM hoc thng qua

87/174

iu kin ca mnh WHERE ca cu lnh SELECT. Nu khng th hin mi lin h


ny, kt qu s l bng tch -cc ca 2 bng.
Cu hi 6.1.12: Cho M phng, Tn phng v tn ngi lnh o phng tng ng.
Trong cu hi ny, Tn phng c ly t bng DEPARTMENT, M phng c th ly
t DEPARTMENT hoc t bng EMPLOYEE, cn tn nhn vin lm lnh o phng
c ly t bng EMPLOYEE. Hai bng ny c kt ni vi nhau thng qua gi tr
ca thuc tnh Mgr ca DEPARTMENT v EmpNo ca EMPLOYEE.
Mt im na cn lu l thuc tnh DeptNo c trong c 2 bng DEPARTMENT v
EMPLOYEE, do khi vit lnh phi ch r DeptNo ca bng no (mc d chng l
nh nhau)
SELECT DEPARTMENT.DeptNo, DeptName FROM
DEPARTMENT, EMPLOYEE
WHERE DEPARTMENT.Mgr = EMPLOYEE.EmpNo;
;
Hoc c th vit cch khc nh s dng php kt ni bng INNER JOIN ( trnh by
trong chng V, mc 5.1, im 5.1.1) nh sau:
SELECT DEPARTMENT.DeptNo, DeptName FROM
DEPARTMENT INNER JOIN EMPLOYEE
ON (DEPARTMENT.Mgr = EMPLOYEE.EmpNo);
);
gim nh cng vic phi vit tn bng nhiu ln trong lnh, SQL h tr tn b
danh cho bng bng cch t b danh ngay sau tn bng ngun. B danh ny c th c
dng trc khi n c t. Dng u tin ca v d ny c vit li tng ng nh
sau:
SELECT D.DeptNo, D.DeptName, E.Name
FROM DEPARTMENT D, EMPLOYEE E
WHERE D.Mgr = E.Empno;

88/174

;
Kt qu ca c 3 cch th hin cu hi trn l:
D.Deptno D.Deptname

E.Name

10

Accounting

Chen

30

Research

Watson

40

Sales

Allen

50

Manufacturing Ramirez

60

Shipping

Di Salvo

Cc cu truy vn lng nhau (Query with SubQuery).


Trong nhiu trng hp chng ta cn phi tm kim thng tin qua nhiu bc: kt qu
ca bc trc c s dng trong biu thc ca cu truy vn tip theo, ri kt qu
ca cu truy vn ny li c dng trong biu thc ca cu truy vn tip theo na v.v...
Bng ngn ng th tc, qua mi bc chng ta phi ghi nh li cc kt qu trung gian
ny. Nu nh vy th cng vic truy vn d liu s rt vt v cho nhng ngi thao tc
trc tip vi CSDL. SQL - SELECT cho php ly ngay kt qu ca mt cu truy vn
xy dng biu thc iu kin cho mt cu hi khc. Cu hi trung gian c gi l
cu hi con (SubQuery). Cu hi con phi c bao trong cp du ngoc trn trong biu
thc ca cu hi chnh. S cho php cu hi con l mt trong nhng u im ni bt ca
ngn ng qun tr CSDL quan h.
Cu hi 6.1.13: Cho danh sch nhng ngi lm vic cng phng vi ng Watson:
Phn tch cu hi ny ta c 2 bc:
Bc 1: Tm s hiu phng (m) ng Watson l nhn vin (gi s phng tm c c
m l pp).
Bc 2: Tm nhng ngi c s hiu phng lm vic bng pp
Cu hi bc 1 l cu hi con cho cu hi bc 2. Cu lnh SQL nh sau:
SELECT * FROM EMPLOYEE
WHERE DeptNo = ANY ( SELECT DeptNo
FROM EMPLOYEE WHERE Name = Watson );

89/174

Kt qu l bng:
EmpNo Name

Job

Salary Comm DeptNo Sex

103

Reed

Anlt

3.500

105

Watson Mngr 4.500 0

30

30

Cu hi 6.1.14: Cho bit M s, Tn v Mc lng ca ngi lnh o ca ng Smith.


Cu hi ny phi c thc hin qua 3 bc:
Bc 1: Tm M s phng (m) ng Smith lm nhn vin (phng pp).
Bc 2: Tm M s ngi lnh o phng pp (nhn vin xx).
Bc 3: Tm M s, Tn, Mc lng ca nhn vin c m s l xx.
Nh vy chng ta phi vit 2 cu hi con lng nhau trong mt cu hi chnh:
SELECT EmpNo, Name, Salary FROM EMPLOYEE
WHERE EmpNo = ANY
( SELECT Mgr FROM DEPARTMENT
WHERE DeptNo = SOME
( SELECT DeptNo FROM EMPLOYEE
WHERE Name = Smith
)
);
Cu tr li l:
Empno Name Salary
109

Allen 3.800

Kt qu ca cu hi con c s dng trong php so snh vi mt gi tr khc trong


biu thc iu kin ca cu hi bao n. Cc php so snh c dng:

90/174

<php so snh> [<lng t>] (SELECT - cu hi con)


y :
<Php so snh> c th l cc php so snh s hc (>, >=, <, <=, <>, =) hoc php
ton tp hp IN, LIKE hoc NOT LIKE.
<Lng t> c th l ALL, ANY (hoc SOME). Php so snh = ANY c th c
thay tng ng bng php ton IN; php so snh <> ALL c th thay tng ng
bng php ton NOT IN.
Cu hi 6.1.15: Cho danh sch nhn vin c mc lng ln hn hay bng mc lng
cao nht ca phng ng McDonnel:
Bc 1: Tm s hiu phng (m) ng McDonnel l nhn vin (M phng pp).
Bc 2: To nhm nhn vin c m phng lm vic l pp ri tnh lng trung bnh ca
nhng ngi ny (Lng cao nht zz).
Bc 3: Tm nhng ngi c lng ln hn hay bng zz.
SELECT * FROM EMPLOYEE
WHERE Salary >= ALL
( SELECT MAX(Salary) FROM EMPLOYEE
WHERE DeptNo = ANY
( SELECT DeptNo FROM EMPLOYEE
WHERE Name = McDonnel
)
);
Lng cao nht phng ng McDonnel l 2700 $US. Bng kt qu l:
EmpNo Name

Job

Salary Comm DeptNo Sex

103

Reed

Anlt

3.500

105

Watson

Mngr 4.500 0

30

30

91/174

109

Allen

Mngr 3.800 8.000

40

200

Chen

Mngr 2.900

10

210

Ramirez Mngr 3.600

50

215

Di Salvo Spvr 2.700

60

220

Schwartz Slsm 4.200 5.300

40

Nhm thc hin tnh ton.


Cc hm tnh ton trn nhm cc bn ghi (Aggregate Functions):
Qua v d trn, chng ta nhn thy s cn thit ca nhng tnh ton trong cu lnh
SELECT. SQL cung cp mt s hm xy dng sn (Built-in) lm vic trn nhm theo
k thut tnh ton nhanh tin tin RushMore. l cc hm: COUNT (* |<tn ct>) m s bn ghi c gi tr xc nh ti ct c cho bi <tn ct>, SUM (<biu thc>)
- tnh tng gi tr cc biu thc, MIN (<biu thc>) - tm gi tr nh nht, MAX (<biu
thc>) - tm gi tr ln nht v AVG (<biu thc>) - tnh gi tr trung bnh ca biu thc
da trn cc bn ghi ca cc nhm. Cc hm ny thng phi c i km vi mnh
GROUP BY thc hin phn nhm cc bn ghi theo gi tr cc ct no trc khi
tnh ton. Nu khng c mnh GROUP BY th cu lnh s coi ton b cc bn ghi
ca bng l mt nhm.
Cu hi 6.2.1: Cho bit khon tin hu hng (Commission) cao nht v trung bnh ca
cc nhn vin (c khon ny).
SELECT MAX ( Comm ), AVG ( Comm ) FROM EMPLOYEE;
Bng kt qu:
MAX(Comm) AVG(Comm)
8000

3650

Chng ta thy rng cc hm trn ch tnh ton trn cc gi tr xc nh. Do , mc d


khng c s phn nhm nhng hm MAX (.) SUM (.), COUNT (.) v AVG (.) ch tnh
trn cc gi tr xc nh. Ch c 4 ngi c tin hu hng, nn gi tr trung bnh l (1300
+ 0 + 8000 + 5300) / 4 = 3650.
Cu hi 6.2.2: Cho bit M s, Tn, Tng s nhn vin, mc lng cao nht, thp nht,
v trung bnh ca cc phng ban:
SELECT A.DeptNo AS [M s], A.DeptName AS [Tn phng],
92/174

COUNT (*) AS [Tg.s n/v], MAX (Salary) AS [Lng Max],


MIN (Salary) AS [Lng Min],
AVG (Salary) AS [Lng TBnh]
FROM DEPARTMENT A, EMPLOYEE B
WHERE A.Deptno = B.Deptno
GROUP BY A.Deptno, A.Deptname;
Bng kt qu:
M s Tn phng

TgS n/v Lng Max Lng Min Lng TBnh

10

Accounting

2.900

1.700

2.300

30

Research

4.500

3.500

4.000

40

Sales

4.200

2.500

3.500

50

Manufacturing 2

3.600

1.800

2.700

60

Shipping

2.700

825

1.716

Trn y l danh sch cc phng ban vi cc mc lng cao nht, thp nht v trung
bnh ca cc nhn vin trong tng phng. C th bit c nhng ai trong phng c mc
lng cao nht hay thp nht trong cc phng ban khng ?
Cu hi 6.2.3: Cho bit cc nhn vin c mc lng cao nht (tng t: lng thp nht,
v lng trung bnh) ca cc phng:
y cn phi tin hnh theo hai bc:
Bc 1: Xc nh cc mc lng cao nht ca tng phng.
Bc 2: Tm nhng nhn vin c mc lng bng vi mc lng cao nht ca phng
.
Cn lu rng, kt qu ca cu hi con c dng lm ton hng trong cu hi
khc, do gi tr cc phn t (hay b gi tr) ca bng kt qu phi l v hng, tc l,
cu lnh SELECT con ch c chn mt biu thc trong cu lnh. Chng ta khng th
ch chn mt ct mc lng cao nht trong bc 1, ri trong bc 2 chn ra nhng
ngi c mc lng trng vi mt trong cc mc lng tm c. Bi v, ngi c mc
lng cao nht ca mt phng c th bng vi mc lng ca mt ngi bnh thng
93/174

trong phng khc. Phi lm sao gn c mc lng cao nht i km vi phng c th.
Chng ta thc hin vic bin i nh: i M phng v mc lng cao nht ca phng
thnh chui ri ghp li vi nhau thnh mt chui c trng cho tng phng. Trong
cu hi chnh, chng ta cng ghp hai chui i c t M phng v mc lng ca
tng nhn vin, ri so khp vi kt qu bc trn. Cu lnh c vit trong MicroSoft
SQL-Server nh sau:
SELECT *
FROM EMPLOYEE
WHERE STR ( Deptno, 2 ) + STR ( Salary, 5 ) IN
( SELECT STR ( Deptno, 2 ) + STR ( MAX (Salary), 5)
FROM EMPLOYEE GROUP BY DeptNo
ORDER BY DeptNo;
Bng kt qu:
EmpNo Name

Job

Salary Comm DeptNo Sex

200

Chen

Mngr 2.900

10

105

Watson

Mngr 4.500 0

30

220

Schwartz Slsm 4.200 5.300

40

210

Ramirez Mngr 3.600

50

215

Di Salvo Spvr 2.700

60

F Ghi ch:
Hm STR (<ExpN> [, m[, n]]) thc hin vic i mt gi tr ca biu thc s <ExpN>
ra dy k t ch s gm m k t, trong c n s l sau du chm thp phn. Nu trong
hm khng c n th n c gi tr mc nhin l 0 khng c s l; nu khng c m th gi
tr mc nhin ca m l 10.
Trong MS Access c th s dng php ton du "v" (&) ghp ni hai gi tr c kiu
bt k thnh mt gi tr c kiu bin th (Variant).
Ngoi cc hm COUNT, SUM, MIN, MAX, AVG ngn ng qun tr CSDL cn
ci t mt s hm thng k trong c hm tnh phng sai (VAR = Variance) v tnh

94/174

lch chun STDEV (Standard Deviation) ca mt dy biu thc da trn cc ct s


ca cc bn ghi ca (cc) bng. l cc hm tnh ton trn nhm cc bn ghi, i hi
c mnh GROUP BY trong cc cu lnh truy vn SQL.
Cc hm tnh ton trn bn ghi:
Hu ht cc h qun tr CSDL u ci t th vin cc hm xy dng sn trong
ngn ng truy vn d liu nhm h tr vic xy dng cc biu thc tnh ton cho tng
b gi tr (hay bn ghi) ca cc quan h. V mi hng cung cp h qun tr CSDL t
tn cc hm c th khc nhau hoc b sung mt hm ring bit ca hng hay loi b bt
mt s hm, do , mc ny ca bi ging ch nu ra cc hm thuc mt s lnh vc
mang tnh gi m. Khi ci t CSDL trn mt ngn ng qun tr CSDL c th, cc hc
vin cn phi hc hi nhiu thng qua cc cc bi ging trc tip (Tutorials) v ti liu
hng dn ca hng cung cp ngn ng qun tr CSDL.
Cc hm ton hc:

ABS(x): Tr tuyt i ca x
SQRT(x): Cn bc hai ca x (Access v SQL-Server l: SQR(x))
LOG(x): Logarit t nhin ca x
EXP(x): Hm m c s e ca x: ex.
SIGN(x): Ly du ca s x (-1: x<0, 0: x=0, +1: x>0)
OUND(x,n): Lm trn ti n s l (Access v SQL-Server: RND(x))
... v cc hm lng gic: SIN, COS, TAN, ASIN, ACOS, ATAN ...
Cc hm x l chui k t:

LEN (str): Cho chiu di dy k t str.


LEFT(str,n): Ly n k t pha tri ca dy str.
): Ly n k t pha tri ca dy str.
RIGHT(str,n): Ly n k t pha phi ca dy str.
MID(str,p,n): Ly n k t ca dy str k t v tr p trong dy.

95/174

Cc hm x l ngy thng v thi gian:

DATE(): Cho ngy thng nm hin ti (Oracle: SYSDATE)


DAY(dd): Cho s th t ngy trong thng ca biu thc ngy dd.
MONTH(dd): Cho s th t thng trong nm ca biu thc ngy dd.
YEAR(dd): Cho nm ca biu thc ngy dd.
HOUR(tt): Cho gi trong ngy (0 23)
MINUTE(tt): Cho s pht ca thi gian tt.
SECONDS(tt): Cho s giy ca biu thc gi tt.
Cc hm chuyn i kiu gi tr:

FORMAT(bthc, mu): i biu thc c kiu bt k thnh chui theo mu cho trong
tham s th 2. C th s dng hm STR thay th.
... v h cc hm chuyn i biu thc c kiu bt k thnh mt gi tr thuc kiu xc
nh: CSTR, CINT, CLNG, CSIN, CDBL, v.v...
C php v ng ngha c th ca cc hm ny c th c tm thy trong cc ti
liu hng dn c th ca cc hng cung cp phn mm. Ti liu ny khng c tham
vng trnh by chi tit cc hm ca ngn ng h qun tr CSDL c th.

96/174

Ngn ng truy vn CSDL SQL (tip theo)


Nhm lnh cp nht d liu
Nhm lnh thao tc d liu (Data Manipulation Language) bao gm cc lnh Thm b
gi tr mi, Sa gi tr ca mt b ca quan h v Hy b (cc) b gi tr ca (cc) quan
h (hoc cc bng). Nhng lnh ny c gi chung l lnh cp nht CSDL.
B sung (cc) b gi tr mi.
C 2 cch b sung b gi tr mi cho bng. Cch 1, b sung trc tip mt b bi mt
lnh SQL v cch 2, b sung nhiu b gi tr ly t (cc) b gi tr ca cc bng ca
CSDL.
B sung trc tip mt b gi tr.
- C php:
INSERT INTO <tn bng> [ (<tn ct 1>, <tn ct 2> ...)]
VALUES (<biu thc 1>, <biu thc 2>, ...);
- Ng ngha: Thm mt b gi tr (bn ghi) mi vo bng c tn c ch ra sau t
kha INTO vi gi tr ca <biu thc 1> c gn cho <tn ct 1>, <biu thc 2> c
gn cho <tn ct 2> v.v...
-Lu : S lng biu thc v kiu gi tr ca cc biu thc phi tng ng vi s
lng v kiu gi tr ca cc tn ct trong danh sch tn ct ca bng. Ngoi ra, cc
gi tr cn phi ph hp vi cc rng buc ton vn nh ngha trn quan h, trong
c RBTV v kha chnh (Primary key), kha ngoi (Foreign Key) v min gi tr. Tn
thuc cc tnh kha chnh v kha ngoi phi c mt trong danh sch tn ct ca lnh.
Nu cc gi tr ca cc biu thc sau t kha VALUES vi phm RBTV th h qun tr
CSDL s thng bo li v b gi tr mi s khng c b sung vo bng.
-V d 6.3.1.
Thm mt phng mi c tn l Marketing, M s l 20, t ti a im San Diego,
kinh ph hot ng 240.000 $ / nm. Phng khng c doanh thu v cha c ngi ph
trch. Cu lnh SQL nh sau:
INSERT INTO DEPARTMENT

97/174

(DeptNo, DeptName, Loc, Mgr, Exp_Budg, Rev_Budg )


VALUES (20, Marketing, San Diego, NULL, 240000, NULL);
Kt qu ta c bng DEPARTMENT vi th hin mi nh sau:
Deptno Deptname

Loc

Mgr Exp_budg Rev_budg

10

Accounting

Dallas

200 10.000

20

Marketing

San Diego

30

Research

San Fransisco 105 125.000

40

Sales

Boston

50

Manufacturing Houston

210 130.000

60

Shipping

215 90.000

Houston

240.000

109 280.000

800.000

Nu gi tr ca cc biu thc trong ngoc trn sau t kho VALUES hon ton ph
hp v s lng, min gi tr v th t ca cc ct trong bng th danh sch tn cc ct
ca bng sau t kha INTO c th c b qua. V d trn c th vit tng ng (v
cho kt qu nh bng trn):
INSERT INTO DEPARTMENT
VALUES (20, Marketing, San Diego, NULL, 240000, NULL);
Thm mt hay nhiu b gi tr t bng CSDL.
-C php:
INSERT INTO <tn bng> [ (<tn ct 1>, <tn ct 2> ...)]
SELECT <biu thc 1>, <biu thc 2> , ....
FROM <danh sch cc bng ngun>
[WHERE <iu kin>]
[GROUP BY <danh sch ct phn nhm>]
[ORDER BY <ct 1> [ASC | DESC], <ct 1> [, <ct 1> [ASC| DESC],... ]
[,... ]
98/174

[HAVING <iu kin>];


-Ng ngha: Cng nh trn, s lng biu thc v kiu gi tr ca cc biu thc sau
SELECT phi ph hp vi s lng v kiu ca cc ct c tn trong danh sch i sau
tn bng, ng thi phi ph hp vi cc RBTV c nh ngha trn quan h . Nu
b gi tr SELECT c vi phm RBTV nh ngha trn quan h c b sung th s c
cc thng bo li thch hp v b khng c b sung vo bng.
Nu gi tr ca cc biu thc sau t kho SELECT hon ton ph hp v s lng,
min gi tr v th t ca cc ct trong bng th danh sch tn cc ct ca bng sau t
kha INTO c th c b qua.
-V du 6.3.2:
B sung cc bn ghi cho bng EMPLHIST i vi nhng nhn vin cha c qu
trnh cng tc no trong bng, vi gi thit thm rng h c tuyn dng vo lm ti
Cng ty k t ngy 01/01/1980. Cu lnh SQL c vit nh sau:
INSERT INTO EMPLHIST
(EmpNo, Seq, Date_Beg, Salary, FrJob, ToJob, Promo, ToDept)
SELECT EmpNo, 1, #01/01/1980#, Salary, Job, Job, No, Dept
FROM EMPLOYEE
WHERE
FROM EMPLOYEE
WHERE EmpNo NOT IN
(SELECT DISTINCT EmpNo FROM EMPLOYEE);
Hoc vit tng ng (thm 2 gi tr khng xc nh NULL cho 2 ct Date_End v
FrJob cho chng hon ton ph hp v s lng, th t v kiu gi tri ca danh sch
thuc tnh ca bng,ng thi b qua danh sch thuc tnh sau tn bng):
INSERT INTO EMPLHIST
SELECT EmpNo, 1, #01/01/1980#, NULL, Salary, Job, Job, No, NULL, DeptNo
FROM EMPLOYEE

99/174

WHERE
FROM EMPLOYEE
WHERE Empno NOT IN
(SELECT DISTINCT Empno FROM EMPLHIST
WHERE EMPLHIST.Empno = EMPLOYEE.Empno
);
Kt qu chng ta c thn b gi tr mi sau y s c b sung vo bng
EMPLHIST:
EmpNo Seq Date_Beg Date_End Salary FrJob ToJob Promo FrDept ToDept
100

01/01/80

1700

Clrk

Clrk

10

103

01/01/81

3500

Anlt

Anlt

30

105

01/01/81

4500

Mngr Mngr N

30

110

01/01/81

1800

Clrk

50

200

01/01/81

2900

Mngr Mngr N

10

210

01/01/81

3600

Mngr Mngr N

50

213

01/01/81

1625

Clrk

Clrk

60

214

01/01/81

825

Drvr

Drvr

60

215

01/01/81

2700

Spvr

Spvr

60

Clrk

To mi mt bng vi cc b gi tr ly t CSDL.

Cc cu truy vn d liu tm kim thng tin to ra mt bng trung gian vi


nhng mi lin h sao cho c th xem v, nu c php, c th sa cha d liu hoc
xa b chng. Cc QUERY to ra nhng khung nhn (VIEW). Trong nhiu trng
hp chng ta mun cc bng ny tr thnh nhng bng vt l, c lu tr lu di trong
CSDL. iu ny c th c thc hin nh 1 lnh truy vn hnh ng (Action Query)
gi l truy vn to bng mi (Make Table Query).
-C php:
100/174

SELECT <biu thc 1>, <biu thc 2> , ....


FROM <danh sch cc bng ngun>
INTO TABLE <tn bng>
[WHERE <iu kin>]
[GROUP BY <danh sch ct phn nhm>]
[ORDER BY <ct 1> [ASC | DESC], <ct 1> [, <ct 1> [ASC| DESC],... ]
[,... ]
[HAVING <iu kin>];
F Ghi ch: Trong Oracle, cu lnh ny l CREATE TABLE c c php nh sau:
CREATE TABLE <tn bng> AS
SELECT <biu thc 1>, <biu thc 2> , ....
FROM <danh sch cc bng ngun> INTO TABLE <tn bng>
[WHERE <iu kin>]
[GROUP BY <danh sch ct phn nhm>]
[ORDER BY <ct 1> [ASC | DESC], <ct 1> [, <ct 1> [ASC| DESC],... ]
[,... ]
[HAVING <iu kin>];
-V d 6.3.3.
To bng mi tn l MANAGER bao gm ch nhng nhn vin ph trch cc phng
ban.
SELECT * FROM EMPLOYEE INTO TABLE MANAGER
WHERE Job = Mngr ORDER BY DeptNo;
Kt qu ta c mt bng mi MANAGER vi cc bn ghi sau:

101/174

EmpN o Name

Job

Salary Comm Dept N o Sex

200

Chen

Mngr 2.900

105

10

Watson Mngr 4.500 0

30

109

Allen

40

210

Ramirez Mngr 3.600

50

Mngr 3.800 8.000

Sa ni dung cc bn ghi:

Thng thng c th sa ni dung ca (cc) bn ghi bng cch cho hin ni dung
ca bng (gi l Browse hoc Open bng), di chuyn con tr (Cursor) n bn ghi cn
sa v thc hin vic sa i gi tr ca cc field ca bn ghi th theo yu cu. Tuy
nhin cch lm ny l ph hp vi cc bng ca CSDL nh, v s lng bn ghi cn sa
cng rt t. i vi cc bng ln nhiu ngn - thm ch hng chc ngn nh bng CCVC
trong CSDL qun l cng chc vin chc thnh ph, hay trm ngn nh bng cc i
tng chnh sch trong CSDL qun l cc i tng chnh sch, c cng Cch mng;
hoc nhiu triu bn ghi nh bng thng tin chi tit v mt c dn trong CSDL qun l
dn s TP.H Ch Minh v.v... th vic sa (cp nht) thng tin bin ng ch 1 bn ghi
thi cng l kh khn.
Ngn ng qun tr CSDL cung cp mt lnh cho php sa i ni dung cc bn ghi
trong CSDL mt cch d dng, chnh xc v nhanh chng.
-C php lnh nh sau:
UPDATE <tn bng>
SET <tn ct 1> = <biu thc 1>,
<tn ct 2> = <biu thc 2>, ...
<tn ct n> = <biu thc n>
[WHERE <iu kin>];
-Ng ngha: Gi tr ca cc field c tn trong danh sch <tn ct 1>, <tn ct 2> ...
ca nhng bn ghi tho mn iu kin sau WHERE s c sa i thnh gi tr ca cc

102/174

<biu thc 1>, <biu thc 2> ... tng ng. Nu khng c mnh iu kin WHERE,
th tt c cc bn ghi ca bng s c sa i.
F Ghi ch: SQL/Plus ca Oracle m rng c php, cho php lit k danh sch cc tn
ct ca bng cn sa i gi tr trong cp du ngoc trn sau t kha SET v danh sch
cc gi tr mi ca chng trong cp du ngoc trn theo sau du bng ( = ), ng thi
chp nhn nhiu danh sch nh th trong cu lnh UDATE. C php nh sau:
UPDATE <tn bng>
SET <d/sch tn ct 1> = <d/sch biu thc 1>,
< d/sch tn ct 2> = < d/sch biu thc 2>, ...
< d/sch tn ct n> = < d/sch biu thc n>
[WHERE <iu kin>];

-V d 6.3.4:
Tng lng thm 10% cho cc nhn vin ph trch cc phng ban.
UPDATE EMPLOYEE
SET Salary = Salary * 1.1
WHERE Job = Mngr;
Kt qu l, lng mi ca cc nhn vin ph trch cc phng ban c th hin nh
trong bng di y:
EmpN o Name

Job

Salary Comm Dept N o Sex

200

Chen

Mngr 3.190

105

10

Watson Mngr 4.950 0

30

109

Allen

40

210

Ramirez Mngr 3.960

50

Mngr 4.180 8.000

103/174

Xa b cc bn ghi khi mt bng:

Vic loi b mt bn ghi khi mt bng trong CSDL l mt trong nhng thao tc cp
nht d kiu c tin hnh mt cch thng xuyn nhm n bo phn nh tnh trng
mi nht ca CSDL.
-C php:
DELETE FROM <tn bng>
[WHERE <iu kin>];
-Ng ngha: Cc bn ghi tho mn iu kin sau WHERE s b xo khi bng. Nu
khng c mnh WHERE th tt c cc bn ghi ca bng s b xa khi bng.
F Lu : Nu thao tc trn View, tc l mt bng trung gian ca mt cu lnh truy vn
SQL, v ngi s dng c quyn cp nht xa d liu, th khi thc hin lnh ny cc
bn ghi trong cc bng vt l ca CSDL cng s b xa.
-V d 6.3.5:
Xa tt c cc nhn vin ph trch cc phng ban khi bng nhn vin EMPLOYEE.
Cu lnh SQL nh sau:
DELETE FROM EMPLOYEE
WHERE Job = Mngr;
Kt qu l, bng EMPLOYEE ch cn cc bn ghi sau:
EmpN o Name

Job

Salary Comm Dept N o Sex

100

Wilson

Clrk 1.700

10

101

Smith

Slsm 2.500 1.300

40

103

Reed

Anlt 3.500

30

110

Turner

Clrk 1.800

50

213

McDonnel Clrk 1.625

60

214

Simpson

60

Drvr 825

104/174

215

Di Salvo

Spvr 2.700

220

Schwartz

Slsm 4.200 5.300

60

Cc lnh khai bo cu trc CSDL


Mc ny s trnh by cc kha cnh lgic v bng v ct ca bng, v cc lnh cn thit
to cc bng cng cc rng buc ton vn nh ngha trn cc bng. y l phn
u tin trong s cc lnh SQL trong ngn ng nh ngha d liu (Data Definition
Language - DDL).
Cch t tn i tng:
SQL chun ha (86, 89, 92, 96) u quy nh cch t tn cc i tng nh tn
bng, tn ct ca bng, tn View, tn RBTV v.v... (gi chung l nh danh - Identifier)
nh sau:
Tn gi gm ti a 32 k t ch ci Latinh, ch s Arp v du gch chn
(Underscore) v phi bt u bng mt ch ci Latinh hoc du gch chn. Tuyt i
khng cha khong trng hay k t ch ci khng phi Latinh nh ting Vit chng hn.
Ch in hoa hay ch thng u c xem l nh nhau. Tn bng phi l duy nht trong
CSDL v tn bng trung gian, v khng trng vi bt c t kha no trong ngn ng
qun tr CSDL.
Tn ct ca mt bng phi l khc nhau, nhng chng c th ging nhau nu chng
nm trong cc bng khc nhau. Ngi ta ngh rng nhng tn mang ng ngha ging
nhau v m t cng mt thc th thi nn t tn ging nhau. Chng hn, tn ct s hiu
phng ban nn t l DEPTNO trong c hai bng EMPLOYEE v DEPARTMENT,
hay tn ct m ngch cng chc vin chc (CCVC) nn t l MA_NGACH trong c 3
bng CCVC, danh mc ngch CCVC: NGACH_LG v bng ngch - bc - h s lng:
NGACH_BAC_HESO.
-V d 6.4.1:
EMP_85 : l tn hp l
85EMPL : khng hp l, v t u tin l ch s.
BNG_NV : khng hp l v c k t ting Vit
BANG-N/V : khng hp l v c du tr (-) v du chia (/)
DANH SACH : khng hp l v c khong trng

105/174

UPDATE : khng hp l v l t dnh ring ca ngn ng .

SQL To bng CSDL:


Mt trong nhng dng n gin nht ca cu lnh to bng CSDL quan h c c php
nh sau:
CREATE TABLE <tn bng> (
<tn ct 1> <kiu d liu 1>(<kch thc 1>),
<tn ct 2> <kiu d liu 2>(<kch thc 2>),
...
<tn ct n> <kiu d liu n>(<kch thc n>)
);
Kiu d liu c th l:
-CHAR (w) : Kiu k t vi kch thc c nh. Chiu di ca gi tr d liu lun lun
l w k t. Nu ct c gn gi tr l mt chui k t c chiu di nh hn w th cc k
t khong cch (space) s c in vo bn phi chui (Right Padded) cho w k
t. Kch thc ti thiu l 1 v ti a l 255 k t.
-VARCHAR(w) : Kiu k t vi kch thc thay i t 0 n w k t. Gi tr ln nht
ca w l 2000.
-NUMBER (w, s): Kiu d liu s c kch thc ti a w k t (k cha du chm thp
phn), trong c s ch s sau du chm th hin phn s l.
-DATE : Kiu d liu ngy thng nm
-LOGICAL : Kiu d liu lgic 1 byte c gi tr hoc ng (True), hoc sai (False).
-V d 6.4.2:
Lnh SQL to bng DEPARTMENT nh nu trong Chng V, mc 5.3, bi 7
nh sau:
CREATE TABLE DEPARTMENT (
106/174

Deptno NUMBER (2),


Deptname CHAR (15),
Loc CHAR (15),
Mgr NUMBER (3),
Exp_budg NUMBER (7),
Rev_budg NUMBER (7)
);
Trong bng ny chng ta xc nh DeptNo l thuc tnh kha; mt phng ban
phi c mt tn gi, a im, v kinh ph hot ng xc nh, ngha l DeptName, Loc,
Exp_Budg phi khc NULL; ng thi chng ta c th mun a im mc nh ca
cc phng ban l Houston. Cch khai bo cc RBTV kiu ny c h tr bi cc t
kha PRIMARY KEY, DEFAULT, UNIQUE v NOT NULL nh sau:
CREATE TABLE DEPARTMENT (
DeptNo NUMBER (2) PRIMARY KEY,
DeptName CHAR (15) NOT NULL,
Loc CHAR (15) NOT NULL DEFAULT Houston,
Mgr NUMBER (3),
Exp_Budg NUMBER (7) NOT NULL,
Rev_Budg NUMBER (7)
);
-V d 6.4.3:
To cu trc bng cc chc danh (cng vic) JOBS c th c ca cng ty:
CREATE TABLE JOBS (
Job CHAR (5) CONSTRAINT PK PRIMARY KEY,

107/174

Jobname CHAR(15) NOT NULL UNIQUE,


Minsalary NUMBER(4),
Maxsalary NUMBER(4),
Mgrflag CHAR(1)
);
Nhng ch vi cch khai bo nh trn th chng ta vn cn qu nhiu vic phi
lm trong vic nh ngha cc RBTV trn bng v cc bng: RBTV v min gi tr ca
mt thuc tnh, RBTV nh ngha trn nhiu thuc tnh ca mt bng, RBTV ph thuc
tn ti, RBTV lin thuc tnh, lin quan h v.v... Ngn ng qun tr CSDL cho php
khai bo cc RBTV ny trong khi to cu trc cc bng bi mnh CONSTRAINT m
chng ta s c lm quen trong mc 6.5 di y.

Khai bo cc RBTV
Nh trnh by trong Chng V, mc 5.3, cc v d t 5.3.1 n 5.3.12
v phn bi tp cui Chng V, c s d liu v qun l nhn vin vi cc bng
DEPARTMENT, EMPLOYEE, JOBS v EMPLHIST c cc RBTV nh ngha trn
chng nh:
-M s phng ban DeptNo trong bng DEPARTMENT, EMPLOYEE ch c th l 10,
20, 30, 40, 50, 60, 70, 80, 90; ng thi m phng ban trong bng EMPLOYEE l kha
ngoi.
-M s nhn vin Empno l mt s gm 3 ch s c gi tr t 100 n 999.
-M cng vic trong bng EMPLOYEE l kha ngoi tham chiu ti bng cc cng vic
JOBS.
-Trong bng cng vic JOBS, mc lng ti thiu (MinSalary) ca mi cng vic phi
nh hn mc lng ti a ca n.
-Kha ca quan h (bng) EMPLHIST gm 2 thuc tnh: EmpNo v Seq.
-Cc thuc tnh FrJob, ToJob ca bng EMPLHIST l cc thuc tnh kha ngoi tham
chiu ti bng JOBS; FrDept, ToDept ca bng EMPLHIST l cc thuc tnh kha
ngoi tham chiu ti bng DEPARTMENT.

108/174

Cch khai bo cc RBTV trn nh th no, chng ta s ln lt c lm quen tng


bc qua cc mnh CONSTRAINT di y:
RBTV v min gi tr:
-C php:
[CONSTRAINT <tn RBTV>] CHECK (<iu kin>)
Rng buc ton vn v min gi tr ny c th nh ngha trn mt ct ca bng,
c th c vit ngay sau tn thuc tnh m khng cn phi vit tn RBTV trong cm
CONSTRAINT <tn RBTV>. Nu nh ngha trn nhiu ct ca bng th nn s dng
cm ny v c vit sau khi khai bo xong cc thuc tnh ca bng.
<iu kin> l mt biu thc lgic bt k nh trnh by trong phn cu lnh truy
vn thng tin, tuy nhin trong biu thc khng c cha cc cu hi con (SubQueries).
-V d 6.5.4:
Vit li cu lnh khai bo cu trc bng DEPARTMENT vi RBTV v min gi tr
cho ct DeptNo:
CREATE TABLE DEPARTMENT (
DeptNo NUMBER (2) PRIMARY KEY CHECK (DeptNo MOD 10 = 0),
DeptName CHAR (15) NOT NULL,
Loc CHAR (15) NOT NULL DEFAULT "Houston",
Mgr NUMBER (3),
Exp_Budg NUMBER (7) NOT NULL,
Rev_Budg NUMBER (7)
);
Php ton MOD dng ly phn d ca mt php chia hai s nguyn. Mnh
CHECK trn cho php ch nhn nhng bn ghi c gi tr ct DeptNo l bi ca 10:
10, 20, 30, ... v 90. Cu lnh trn c th c vit cch khc tng ng nh sau:
CREATE TABLE DEPARTMENT (

109/174

DeptNo NUMBER (2) PRIMARY KEY,


DeptName CHAR (15) NOT NULL,
Loc CHAR (15) NOT NULL DEFAULT Houston,
Mgr NUMBER (3),
Exp_Budg NUMBER (7) NOT NULL,
Rev_Budg NUMBER (7)
CONSTRAINT PK_VAL CHECK (DeptNo MOD 10 = 0)
);
RBTV v kha ngoi hay ph thuc tn ti:
-C php: nh ngha cho bng trn nhiu ct ca bng
,[CONSTRAINT <tn RBTV>]
FOREIGN KEY (<cc thuc tnh kha ngoi>)
REFERENCES <tn bng> (<cc ct kha chnh>)
V nh ngha cho mt ct kha ngoi ca bng:
[CONSTRAINT <tn RBTV>]
REFERENCES <tn bng> (<cc ct kha chnh>)
F Lu : trong c php nh ngha trn mt ct ca bng khng c cc t kha
FOREIGN KEY v khng c du phy trc CONSTRAINT. Cc RBTV nh ngha
trn ct c vit ngay trong dng m t ct.
-V d 6.5.5:
nh ngha cu trc cc bng EMPLOYEE v EMPLHIST:
CREATE TABLE EMPLOYEE (
EmpNo

110/174

EmpNo NUMBER(3) PRIMARY KEY,


Name CHAR (10) NOT NULL,
Job CHAR (5) REFERENCES JOBS (Job),
Salary NUMBER (5) NOT NULL,
Comm NUMBER (5),
DeptNo NUMBER (2) REFERENCES DEPARTMENT (DeptNo),
Sex CHAR (1) CHECK (Sex = F OR Sex = M)
);
V:
CREATE TABLE EMPLHIST (
EmpNo
EmpNo NUMBER(3),
Seq NUMBER(3) NOT NULL,
Date_Beg DATE NOT NULL,
Date_End DATE,
Salary NUMBER (5) NOT NULL,
FrJob CHAR (5) REFERENCES JOBS (Job),
Tojob CHAR (5),
Promo LOGICAL NOT NULL,
FrDept NUMBER (2),
ToDept NUMBER (2) REFERENCES DEPARTMENT (DeptNo),
CONSTRAINT P_KEY PRIMARY KEY (EmpNo, Seq)

111/174

);
Vi RBTV v kha ngoi cn c th s dng ty chn (Option) ON DELETE
CASCADE thc hin vic xa mt b ca bng cha kha chnh th s xa tt c
cc bn ghi ca bng cha kha ngoi. Chng hn, khi xa i mt phng ban khi bng
DEPARTMENT, th tt c cc nhn vin thuc phng cng s b xa b khi bng
EMPLOYEE. Mnh xa ON DELETE CASCADE mang tnh "lan ta" ny c t
sau mnh REFERENCES.
-V d 6.5.6:
nh ngha cu trc cc bng EMPLOYEE v EMPLHIST c vit li vi RBTV
v kha ngoi c s xa "lan ta" nh sau:
CREATE TABLE EMPLOYEE (
EmpNo
EmpNo NUMBER(3) PRIMARY KEY,
Name CHAR (10) NOT NULL,
Job CHAR (5) REFERENCES JOBS (Job),
Salary NUMBER (5) NOT NULL,
Comm NUMBER (5),
DeptNo NUMBER (2),
Sex CHAR (1) CHECK (Sex = F OR Sex = M),
CONSTRAINT DEPT_CASC REFERENCES DEPARTMENT (DeptNo)
ON DELETE CASCADE
);
V:
CREATE TABLE EMPLHIST (
EmpNo

112/174

EmpNo NUMBER(3),
Seq NUMBER(3) NOT NULL,
Date_Beg DATE NOT NULL,
Date_End DATE,
Salary NUMBER (5) NOT NULL,
FrJob CHAR (5) REFERENCES JOBS (Job),
ToJob CHAR (5),
Promo LOGICAL NOT NULL,
FrDept NUMBER (2),
ToDept NUMBER (2) REFERENCES DEPARTMENT (DeptNo),
CONSTRAINT PKEY PRIMARY KEY (EmpNo, Seq),
CONSTRAINT FKEY FOREIGN KEY (EmpNo)
REFERENCES EMPLOYEE (EmpNo, Seq)
ON DELETE CASCADE
);

Mt s ty chn khc:
-DISABLE : Nu b sung t kha ny vo sau RBTV, th h qun tr CSDL vn
ghi nhn RBTV nhng khng bt buc kim tra s vi phm RBTV khi cp nht d liu
cho bng. Ngi ch s hu hoc ngi qun tr CSDL c th bt u bt buc kim
tra RBTV bng cch kch hot vi t kha ENABLE khi thc hin lnh sa i cu trc
bng ALTER TABLE (trnh by trong mc 6.6 ca chng ny).
-EXCEPTIONS INTO <tn bng> : Nhng bn ghi vi phm RBTV khi cp nht
d liu (trong qu trnh cp nht theo l - Batch Updating) hoc khi kch hot kim tra
RBTV s khng c da vo bng chnh m s c lu li trong bng cc ngoi l
ch ra sau cc t kha EXCEPTIONS INTO.
113/174

Tm li, c php tng qut ca lnh to cu trc bng trong CSDL nh sau:
CREATE TABLE <tn bng> (
<Column 1> <Type 1> (<Size 1>) [ CONSTRAINT clause 1],
<Column 2> <Type 2> (<Size 2>) [ CONSTRAINT clause 2],
...
<Column n> <Type n> (<Size n>) [ CONSTRAINT clause n]
, [ CONSTRAINT clause 1],
, [ CONSTRAINT clause 2],

, [ CONSTRAINT clause m],


);
Trong c php ca cc khai bo RBTV l nh sau:
[ CONSTRAINT <tn RBTV> ] NULL NOT NULL
UNIQUE [ (<tn ct>, <tn ct>... ) ]

PRIMARY KEY [ (<tn ct>, <tn ct>... ) ]


[
[ FOREIGN KEY [ (<tn ct>, <tn ct>... ) ] ]
REFERENCES <tn bng> (<tn ct>, <tn ct>... )
CHECK (<iu kin>)

Cc lnh khai bo cu trc CSDL


Mc ny s trnh by cc kha cnh lgic v bng v ct ca bng, v cc lnh cn thit
to cc bng cng cc rng buc ton vn nh ngha trn cc bng. y l phn
114/174

u tin trong s cc lnh SQL trong ngn ng nh ngha d liu (Data Definition
Language - DDL).
Cch t tn i tng:
SQL chun ha (86, 89, 92, 96) u quy nh cch t tn cc i tng nh tn
bng, tn ct ca bng, tn View, tn RBTV v.v... (gi chung l nh danh - Identifier)
nh sau:
Tn gi gm ti a 32 k t ch ci Latinh, ch s Arp v du gch chn
(Underscore) v phi bt u bng mt ch ci Latinh hoc du gch chn. Tuyt i
khng cha khong trng hay k t ch ci khng phi Latinh nh ting Vit chng hn.
Ch in hoa hay ch thng u c xem l nh nhau. Tn bng phi l duy nht trong
CSDL v tn bng trung gian, v khng trng vi bt c t kha no trong ngn ng
qun tr CSDL.
Tn ct ca mt bng phi l khc nhau, nhng chng c th ging nhau nu chng
nm trong cc bng khc nhau. Ngi ta ngh rng nhng tn mang ng ngha ging
nhau v m t cng mt thc th thi nn t tn ging nhau. Chng hn, tn ct s hiu
phng ban nn t l DEPTNO trong c hai bng EMPLOYEE v DEPARTMENT,
hay tn ct m ngch cng chc vin chc (CCVC) nn t l MA_NGACH trong c 3
bng CCVC, danh mc ngch CCVC: NGACH_LG v bng ngch - bc - h s lng:
NGACH_BAC_HESO.
-V d 6.4.1:
EMP_85 : l tn hp l
85EMPL : khng hp l, v t u tin l ch s.
BNG_NV : khng hp l v c k t ting Vit
BANG-N/V : khng hp l v c du tr (-) v du chia (/)
DANH SACH : khng hp l v c khong trng
UPDATE : khng hp l v l t dnh ring ca ngn ng .

SQL To bng CSDL:


Mt trong nhng dng n gin nht ca cu lnh to bng CSDL quan h c c php
nh sau:
115/174

CREATE TABLE <tn bng> (


<tn ct 1> <kiu d liu 1>(<kch thc 1>),
<tn ct 2> <kiu d liu 2>(<kch thc 2>),
...
<tn ct n> <kiu d liu n>(<kch thc n>)
);
Kiu d liu c th l:
-CHAR (w) : Kiu k t vi kch thc c nh. Chiu di ca gi tr d liu lun lun
l w k t. Nu ct c gn gi tr l mt chui k t c chiu di nh hn w th cc k
t khong cch (space) s c in vo bn phi chui (Right Padded) cho w k
t. Kch thc ti thiu l 1 v ti a l 255 k t.
-VARCHAR(w) : Kiu k t vi kch thc thay i t 0 n w k t. Gi tr ln nht
ca w l 2000.
-NUMBER (w, s): Kiu d liu s c kch thc ti a w k t (k cha du chm thp
phn), trong c s ch s sau du chm th hin phn s l.
-DATE : Kiu d liu ngy thng nm
-LOGICAL : Kiu d liu lgic 1 byte c gi tr hoc ng (True), hoc sai (False).
-V d 6.4.2:
Lnh SQL to bng DEPARTMENT nh nu trong Chng V, mc 5.3, bi 7
nh sau:
CREATE TABLE DEPARTMENT (
Deptno NUMBER (2),
Deptname CHAR (15),
Loc CHAR (15),
Mgr NUMBER (3),

116/174

Exp_budg NUMBER (7),


Rev_budg NUMBER (7)
);
Trong bng ny chng ta xc nh DeptNo l thuc tnh kha; mt phng ban
phi c mt tn gi, a im, v kinh ph hot ng xc nh, ngha l DeptName, Loc,
Exp_Budg phi khc NULL; ng thi chng ta c th mun a im mc nh ca
cc phng ban l Houston. Cch khai bo cc RBTV kiu ny c h tr bi cc t
kha PRIMARY KEY, DEFAULT, UNIQUE v NOT NULL nh sau:
CREATE TABLE DEPARTMENT (
DeptNo NUMBER (2) PRIMARY KEY,
DeptName CHAR (15) NOT NULL,
Loc CHAR (15) NOT NULL DEFAULT Houston,
Mgr NUMBER (3),
Exp_Budg NUMBER (7) NOT NULL,
Rev_Budg NUMBER (7)
);
-V d 6.4.3:
To cu trc bng cc chc danh (cng vic) JOBS c th c ca cng ty:
CREATE TABLE JOBS (
Job CHAR (5) CONSTRAINT PK PRIMARY KEY,
Jobname CHAR(15) NOT NULL UNIQUE,
Minsalary NUMBER(4),
Maxsalary NUMBER(4),
Mgrflag CHAR(1)

117/174

);
Nhng ch vi cch khai bo nh trn th chng ta vn cn qu nhiu vic phi
lm trong vic nh ngha cc RBTV trn bng v cc bng: RBTV v min gi tr ca
mt thuc tnh, RBTV nh ngha trn nhiu thuc tnh ca mt bng, RBTV ph thuc
tn ti, RBTV lin thuc tnh, lin quan h v.v... Ngn ng qun tr CSDL cho php
khai bo cc RBTV ny trong khi to cu trc cc bng bi mnh CONSTRAINT m
chng ta s c lm quen trong mc 6.5 di y.

Khai bo cc RBTV
Nh trnh by trong Chng V, mc 5.3, cc v d t 5.3.1 n 5.3.12
v phn bi tp cui Chng V, c s d liu v qun l nhn vin vi cc bng
DEPARTMENT, EMPLOYEE, JOBS v EMPLHIST c cc RBTV nh ngha trn
chng nh:
-M s phng ban DeptNo trong bng DEPARTMENT, EMPLOYEE ch c th l 10,
20, 30, 40, 50, 60, 70, 80, 90; ng thi m phng ban trong bng EMPLOYEE l kha
ngoi.
-M s nhn vin Empno l mt s gm 3 ch s c gi tr t 100 n 999.
-M cng vic trong bng EMPLOYEE l kha ngoi tham chiu ti bng cc cng vic
JOBS.
-Trong bng cng vic JOBS, mc lng ti thiu (MinSalary) ca mi cng vic phi
nh hn mc lng ti a ca n.
-Kha ca quan h (bng) EMPLHIST gm 2 thuc tnh: EmpNo v Seq.
-Cc thuc tnh FrJob, ToJob ca bng EMPLHIST l cc thuc tnh kha ngoi tham
chiu ti bng JOBS; FrDept, ToDept ca bng EMPLHIST l cc thuc tnh kha
ngoi tham chiu ti bng DEPARTMENT.
Cch khai bo cc RBTV trn nh th no, chng ta s ln lt c lm quen tng
bc qua cc mnh CONSTRAINT di y:
RBTV v min gi tr:
-C php:
[CONSTRAINT <tn RBTV>] CHECK (<iu kin>)

118/174

Rng buc ton vn v min gi tr ny c th nh ngha trn mt ct ca bng,


c th c vit ngay sau tn thuc tnh m khng cn phi vit tn RBTV trong cm
CONSTRAINT <tn RBTV>. Nu nh ngha trn nhiu ct ca bng th nn s dng
cm ny v c vit sau khi khai bo xong cc thuc tnh ca bng.
<iu kin> l mt biu thc lgic bt k nh trnh by trong phn cu lnh truy
vn thng tin, tuy nhin trong biu thc khng c cha cc cu hi con (SubQueries).
-V d 6.5.4:
Vit li cu lnh khai bo cu trc bng DEPARTMENT vi RBTV v min gi tr
cho ct DeptNo:
CREATE TABLE DEPARTMENT (
DeptNo NUMBER (2) PRIMARY KEY CHECK (DeptNo MOD 10 = 0),
DeptName CHAR (15) NOT NULL,
Loc CHAR (15) NOT NULL DEFAULT "Houston",
Mgr NUMBER (3),
Exp_Budg NUMBER (7) NOT NULL,
Rev_Budg NUMBER (7)
);
Php ton MOD dng ly phn d ca mt php chia hai s nguyn. Mnh
CHECK trn cho php ch nhn nhng bn ghi c gi tr ct DeptNo l bi ca 10:
10, 20, 30, ... v 90. Cu lnh trn c th c vit cch khc tng ng nh sau:
CREATE TABLE DEPARTMENT (
DeptNo NUMBER (2) PRIMARY KEY,
DeptName CHAR (15) NOT NULL,
Loc CHAR (15) NOT NULL DEFAULT Houston,
Mgr NUMBER (3),
Exp_Budg NUMBER (7) NOT NULL,

119/174

Rev_Budg NUMBER (7)


CONSTRAINT PK_VAL CHECK (DeptNo MOD 10 = 0)
);
RBTV v kha ngoi hay ph thuc tn ti:
-C php: nh ngha cho bng trn nhiu ct ca bng
,[CONSTRAINT <tn RBTV>]
FOREIGN KEY (<cc thuc tnh kha ngoi>)
REFERENCES <tn bng> (<cc ct kha chnh>)
V nh ngha cho mt ct kha ngoi ca bng:
[CONSTRAINT <tn RBTV>]
REFERENCES <tn bng> (<cc ct kha chnh>)
F Lu : trong c php nh ngha trn mt ct ca bng khng c cc t kha
FOREIGN KEY v khng c du phy trc CONSTRAINT. Cc RBTV nh ngha
trn ct c vit ngay trong dng m t ct.
-V d 6.5.5:
nh ngha cu trc cc bng EMPLOYEE v EMPLHIST:
CREATE TABLE EMPLOYEE (
EmpNo
EmpNo NUMBER(3) PRIMARY KEY,
Name CHAR (10) NOT NULL,
Job CHAR (5) REFERENCES JOBS (Job),
Salary NUMBER (5) NOT NULL,
Comm NUMBER (5),

120/174

DeptNo NUMBER (2) REFERENCES DEPARTMENT (DeptNo),


Sex CHAR (1) CHECK (Sex = F OR Sex = M)
);
V:
CREATE TABLE EMPLHIST (
EmpNo
EmpNo NUMBER(3),
Seq NUMBER(3) NOT NULL,
Date_Beg DATE NOT NULL,
Date_End DATE,
Salary NUMBER (5) NOT NULL,
FrJob CHAR (5) REFERENCES JOBS (Job),
Tojob CHAR (5),
Promo LOGICAL NOT NULL,
FrDept NUMBER (2),
ToDept NUMBER (2) REFERENCES DEPARTMENT (DeptNo),
CONSTRAINT P_KEY PRIMARY KEY (EmpNo, Seq)
);
Vi RBTV v kha ngoi cn c th s dng ty chn (Option) ON DELETE
CASCADE thc hin vic xa mt b ca bng cha kha chnh th s xa tt c
cc bn ghi ca bng cha kha ngoi. Chng hn, khi xa i mt phng ban khi bng
DEPARTMENT, th tt c cc nhn vin thuc phng cng s b xa b khi bng
EMPLOYEE. Mnh xa ON DELETE CASCADE mang tnh "lan ta" ny c t
sau mnh REFERENCES.
-V d 6.5.6:

121/174

nh ngha cu trc cc bng EMPLOYEE v EMPLHIST c vit li vi RBTV


v kha ngoi c s xa "lan ta" nh sau:
CREATE TABLE EMPLOYEE (
EmpNo
EmpNo NUMBER(3) PRIMARY KEY,
Name CHAR (10) NOT NULL,
Job CHAR (5) REFERENCES JOBS (Job),
Salary NUMBER (5) NOT NULL,
Comm NUMBER (5),
DeptNo NUMBER (2),
Sex CHAR (1) CHECK (Sex = F OR Sex = M),
CONSTRAINT DEPT_CASC REFERENCES DEPARTMENT (DeptNo)
ON DELETE CASCADE
);
V:
CREATE TABLE EMPLHIST (
EmpNo
EmpNo NUMBER(3),
Seq NUMBER(3) NOT NULL,
Date_Beg DATE NOT NULL,
Date_End DATE,
Salary NUMBER (5) NOT NULL,
FrJob CHAR (5) REFERENCES JOBS (Job),

122/174

ToJob CHAR (5),


Promo LOGICAL NOT NULL,
FrDept NUMBER (2),
ToDept NUMBER (2) REFERENCES DEPARTMENT (DeptNo),
CONSTRAINT PKEY PRIMARY KEY (EmpNo, Seq),
CONSTRAINT FKEY FOREIGN KEY (EmpNo)
REFERENCES EMPLOYEE (EmpNo, Seq)
ON DELETE CASCADE
);
Mt s ty chn khc:

DISABLE : Nu b sung t kha ny vo sau RBTV, th h qun tr CSDL vn ghi


nhn RBTV nhng khng bt buc kim tra s vi phm RBTV khi cp nht d liu
cho bng. Ngi ch s hu hoc ngi qun tr CSDL c th bt u bt buc kim
tra RBTV bng cch kch hot vi t kha ENABLE khi thc hin lnh sa i cu
trc bng ALTER TABLE (trnh by trong mc 6.6 ca chng ny).
-EXCEPTIONS INTO <tn bng> : Nhng bn ghi vi phm RBTV khi cp nht
d liu (trong qu trnh cp nht theo l - Batch Updating) hoc khi kch hot kim tra
RBTV s khng c da vo bng chnh m s c lu li trong bng cc ngoi l
ch ra sau cc t kha EXCEPTIONS INTO.
Tm li, c php tng qut ca lnh to cu trc bng trong CSDL nh sau:
CREATE TABLE <tn bng> (
<Column 1> <Type 1> (<Size 1>) [ CONSTRAINT clause 1],
<Column 2> <Type 2> (<Size 2>) [ CONSTRAINT clause 2],
...

123/174

<Column n> <Type n> (<Size n>) [ CONSTRAINT clause n]


, [ CONSTRAINT clause 1],
, [ CONSTRAINT clause 2],

, [ CONSTRAINT clause m],


);
Trong c php ca cc khai bo RBTV l nh sau:
[ CONSTRAINT <tn RBTV> ] NULL NOT NULL
UNIQUE [ (<tn ct>, <tn ct>... ) ]

PRIMARY KEY [ (<tn ct>, <tn ct>... ) ]


[
[ FOREIGN KEY [ (<tn ct>, <tn ct>... ) ] ]
REFERENCES <tn bng> (<tn ct>, <tn ct>... )
CHECK (<iu kin>)

124/174

Ngn ng tn t
Lgic ton v ng dng ca n vo CSDL
nh ngha 7.1.1:
Biu thc lgic l mt pht biu (Statment) m gi tr ca n c th hoc l ng hoc
l sai. Biu thc lgic c gi tr lun lun ng (hoc lun lun sai) c gi l hng
ng (hoc hng sai - tng ng).
V d 7.1:
Hm nay tri s c ma.
2 > 1 l biu thc hng ng.
1 > 5 l biu thc hng sai.
Lgic tn t l mt mnh da trn tn t ca pht biu . N gm c 2 phn: Phn
c php v phn din gii.
Phn c php:
Trc ht chng ta cn phi thng nht v cc k hiu:
( ) - Biu thc trong ngoc.
Bin: Tn gi ca mt i lng bin thin trong mt min gi tr xc nh. Thng
dng cc ch ci nh cui bng mu t t tn cho bin: x, y, z, ...
Hng: L cc i lng khng i. Thng s dng cc ch ci u bng mu t nh
a, b, c, ... lm tn hng.
Hm: L mt nh x t mt min gi tr vo tp hp gm 2 gi tr hoc ng hoc sai.
Thng dng cc ch nh gia bng mu t nh f, g, h. ...
Tn t: L mt biu thc c xy dng da trn biu thc lgic. Thng dnhg cc
ch in hoa gia nh P, Q, R, ...
Cc php ton lgic: ph nh ( ), ko theo ( ), ni lin ( - conjuction) v ni ri ( disjunction).

125/174

Cc lng t: vi mi ( " ) v tn ti ($ )
nh ngha 7.1.2:
Tn t mt ngi c nh ngha trn 1 tp X v mt bin x c gi tr chy trn cc phn
t ca X.
Vi mi gi tr ca x, tn t P(x) l mt mnh lgic, tc l n c gi tr hoc l ng
(), hoc l sai (S).
V d 7.2:
P(x), x l bin chy trn X, l mt tn t.
P(gt), gt X l mt mnh .
V d 7.3: X l tp hp nhng ngi c tn nh sau:
X = { Nguyn Vn Nam, ng Th Thy, H thiu Hng ...}
Vi tn t N (x) c xc nh nh: "x l ngi n". Khi mnh :
N (Nguyn Vn Nam) - cho kt qu l sai.
N (ng Th Thy) - Cho kt qu l ng.
nh ngha 7.1.3:
Tn t n ngi c nh ngha trn cc tp X 1 , X 2 , X n v n bin x 1 , x 2 , x n
ly gi tr trn cc tp X i tng ng. Vi mi a i X i x i = a i . Tn t n ngi l mt
mnh .
K hiu: P(x 1 , x 2 , x n )
V d 7.4. CHA (x1, x2): "x1 l CHA ca x2".
Ch :
Cc Xi khng nht thit phi l ri nhau.
Vi xi = ai, P(x1, x2,, , ai, xn) l tn t n-1 ngi.
nh ngha 7.1.4:

126/174

T (Word) c nh ngha mt cch truy hi nh sau:


() T l mt hng hay mt bin.
(ii) f (t 1 , t 2 , , t n ) l mt hm n ngi th f l mt t.
nh ngha 7.1.5:
Cng thc (Formula):
(i) Cng thc nguyn t l mt tn t n ngi P(t1, t2, , tn);
y t1, t2, , tn l cc t.
Cng thc nguyn t l mt cng thc.
(ii) Nu F1, F2, , Fn l cc cng thc th cc biu thc sau cng l cc cng thc:
( ) F1 F2
( ) F1 F2
( ) F1 F2
( ) F1
(iii) Nu F1 l mt cng thc th " x: F1, $ x: F1 cng l cc cng thc.
(iv) Nu F1 l mt cng thc th ( F1 ) cng l mt cng thc.
** Lu : Chng ta bit cc php bin i tng ng sau:
( ) F1 F2 F1 F2
( ) ( F1 F2) F1 F2
( ) (" x F1) $ x F1
nh ngha 7.1.6:
() Mt cng thc c gi l "ng" nu mi bin ca n u c km vi lng t.
() Mt cng thc c gi l "m" nu tn ti mt bin khng c km vi lng t.Bin
ny cn c gi l bin t do.
127/174

nh ngha 7.1.7: Dng chun Prenexe:


F l mt cng thc c dng: Q1 x1, Q2 x2, , Qn xn M
Vi: Qi l cc lng t (i = 1, 2, , n).
xi l cc bin.
M l mt ma trn cng thc.
Nu M khng cha lng t th ta ni rng F c dng chun Prenexe.
V d 7.5:
" x $ t " y $ z ( P(x, y,a) Q(y, z, t) R (x, t))
Din gii v m hnh
Din gii ca 1 cng thc:
Mt din gii ca mt cng thc gm 4 phn:
Min gi tr ca cc bin ca cng thc (k hiu l tp M)
Vic s dng cng thc:
Hng l mt gi tr c th thuc M.
Hm n ngi ca Mn ln M l mt nh x f : Mn M
Tn t trn Mn l mt quan h n ngi trn tp Mn.
ngha ca cng thc v
Xc nh 1 quan h n ngi trn tp Mn
V d 7.6 :
Cho M = { Tr, Minh, Hng, Long, on, Tun }v mt cng thc C c dng nh
sau:
C: " x " y ( $ z (P(x,y) P(y,z) Q(x, z))
Tp din gii ca cng thc c th l:

128/174

M: l min gi tr ca cc bin x, y, z.
Cc tn t:
P: CHA
Q: NG
ngha:
CHA (x, y): x c cha l y (hoc: cha ca x l y).
NG (x, y): x c ng l y (hoc ng ca x l y)
Cc quan h 2 ngi trn M2:
CHA = {(Tr, Minh), (Long, on), (Minh, Huy), (on, Tun)}
NG = { (Tr, Huy), (Long, Tun) }
Mi khi xc nh c din gii phi nh gi
(i) Cng thc l ng hay l sai. y C l ng.
(ii) Vi cng thc m c m bin t do th n xc nh 1 quan h m ngi trn Mm.
Vi mt b ca quan h ny, nu ta thay thn m gi tr vo cho m bin th cng thc
tr thnh "ng" v n c gi tr hoc ng hoc sai.
Nu tp cc b m c cho bi cng thc "m" m rng (khng c b no cng
thc l ng, th ta ni rng "cng thc ny l sai", ngc li th cng thc l ng.
Cc quy tc lng gi cng thc.
(i). Lng gi Tn t:
Tn t bc n P(x1, x2, , xn) c lin kt vi 1 quan h n ngi trn R.
Lng gi P khi x1 ly gi tr ai, i = 1, 2, , n, v (a1, a2, ..., an) R:
P(x1, x2, , xn) : (a1, a2, ..., an) R
P(x1, x2, , xn) : S (a1, a2, ..., an) R.

129/174

(ii) Vi cc php ton , , v th s dng bng chn tr (hoc cn gi l bng s tht)


sau:
F1 F1

F1 F2 F1 F2 F1 F2 F1 F 2

(iii) x l bin ca cng thc F : Cng thc " x F(x) l ng vi mi tr a M m x ly


gi tr F(a) l ng.
Nu ngc li th " x F(x) l sai. Do " x F(x) ng nht vi cng thc: F(ai) trn tt
c cc ai M.
(iv) Cng thc $ x F(x) l ng khi c t nht mt ai M sao cho F(ai) l ng. Do
n ng nht vi F(ai) trn tt c cc ai M.

nh ngha 7.1.8
Mt din gii ca mt tp cc cng thc F c gi l mt m hnh nu v ch nu
" F F , F l ng trn din gii ny.
nh ngha 7.1.9
Mt cng thc E l h qu lgic ca F , k hiu l F |= E , nu v ch nu E l
ng trn mi m hnh ca F .

ng dng lgic ton trong CSDL.


Dn nhp
CSDL: m hnh ha thng tin gm cc cc s kin c lin kt hay biu din mt
tnh trng ca th gii thc.
V d 7.7: Cho tp c s v ngi:

130/174

M = { Tr, Minh, Huy, Long, on, Tun }


Ta c cc s kin:
Cha ca Tr l Minh.
Cha ca Long l on.
Cc s kin ny c tp hp li thnh CSDL.
Trong ngn ng tn t n l cng thc ng, khng c bin, ch c hng (tc l cc
mnh ).
Khi nim cha c lin kt vi ton t CHA:
CHA (Tr, Minh): thay cho pht biu "Cha ca Tr l Minh".
Ngoi ra, chng ta cn quan tm n cc tnh cht tng qut hn:
(T1) Nu cha ca x l y th y c con l x.
(T2) Mi ngi x u c cha l y.
(T3) Nu x c cha l y v y c cha l z, th ng ca x l z.
Cc tnh cht trn m bo tnh cht nht qun ca thng tin c s.
Chng ta c th cng thc ha cc tnh cht trn nh sau:
(T1) " x " y (CHA(x, y) CON(y, x))
(T2) " x ($ x (CHA(x, y))
(T3) " y ($ z (CHA (x, z) CHA(z, y) NG (x, y))
Tham kho CSDL:
(i) Cu hi ng tng ng vi cng thc ng. Cu tr li l c hiu lc, l ng
hoc sai.
V d 7.8:
Tr c cha l Minh ? CHA (Tr, Minh) ?

131/174

Con ca Minh l ai ? $ x CON (Minh, x) ?


ng ca Long l Tun ? NG (Long, Tun) ?
Cu tr li cho (1) v (3) l ng hoc sai c da trn thng tin c s. i vi cu
(2) vic tm cu tr li phi da vo suy lun:
p dng (T1) thay th bin y bng Minh, ta c:
" x CHA (x, Minh) CON (Minh, x)
S dng cng thc ny, da trn thng tin c s ta c:
CHA (Tr, Minh) CON (Minh, Tr)
Vy:
CON (Minh, Tr): l cu tr li ng.
(ii) Cu hi m tng ng vi mt cng thc m.
V d 7.9:
(c1) Cha ca Tr l ai? CHA (Tr, x) ?
(c2) Xc nh ng ca Tr ? NG (Tr, x) ?
Mt phn t l mt cu tr li ca cng thc m nu khi thay vo bin x th cng
thc ng thu c tr l ng.
Lgic monolypc: Cc bin ly tr t 1 tp gi tr duy nht.
Lgc multilypc: Mi bin ly gi tr t mt tp gi tr ring.
V d 7.10:
CI (NAM, N)
CI (x, y) x ly tr t min gi tr NAM
y l tr t min gi tr N

132/174

Ngn ng tn t c bin l b.
Mt cu hi trong ngn ng tn t c bin l b-n tha cc quy tc sau:
Bin l mt b ca quan h.
T: l hng, bin hay biu thc c dng s[c], c l bin; c l tp cc thuc tnh ca quan
h, cn c gi l t chiu.
Cc biu thc:
Rs : R: l mt quan h;
s : l bin b n.
c gi l t. Min gi tr s nh ngha min bin thin ca s.
t1q a, t1q t2.
y t1 v t2 l cc t chiu, cn a l mt hng. q l ton t so snh =, , <, <=, >,
>= c gi l cng thc nguyn t.
Mt cng thc nguyn t l mt cng thc.
Nu F1 v F2 l cc cng thc th F1 F2, F1 F2, F2 v F1 F2, cng l cc cng thc.
Nu F l mt cng thc v s l mt bin t do th " s F v $ sF cng l cc cng thc.
Nu F l cng thc th (F) cng l cng thc (cng thc t trong ngoc trn cng l
cng thc).
nh ngha 7.2.1:
Mt cu hi trong ngn ng tn t c bin l b-n c biu din nh sau:
{sF}
y s l bin b n, F l mt cng thc ch c mt bin t do l s.
V d 7.11:
Quan h BINGII (Nc, Tnh_TP): Danh sch cc nc c bin gii gip vi Vit
nam.

133/174

Php ton quan h BINGII [Nc] c chuyn thnh cu hi trong ngn ng tn t


c bin l b:
{ s [Nc] BINGII s }
Cng thc an ton:

Min gi tr ca cng thc:


nh ngha 7.2.2:
Cho cng thc F c s hin din ca cc quan h Q 1 , Q 2 , Q n v cc hng
a 1 , a 2 , a p . Min gi tr ca cng thc F, k hiu l DOM(F) hay MGT(F), c
nh ngha l:
DOM (F) = { (a 1 , a 2 , a p } : l tp gi tr ca cc thnh phn ca cc b thuc Q
1,Q2,Qn.
V d 7.12: Cho 2 quan h R v S nh sau:
R A B S A B
1 2

3 4

3 4

2 2

2 5
Cng thc F(s): Rs Ss.
Min gi tr ca cng thc F l DOM(F) = { 1, 2, 3, 4, 5 }
Nhn xt: DOM(F) = DOM ( F). Tht vy:
F = Rs Rs. S vn bin thin trn R v S.
Cng thc an ton:
nh ngha 7.2.3 :
Mt cng thc F c gi l an ton nu n tha mn 3 iu kin sau y:
Nu s l b-n tha: F(s) l ng th mi thnh phn ca s l phn t ca DOM(F).
134/174

(F(s) : ng s i DOM (F); " i, s = (s 1 , s 2 , , s n )


Vi mi cng thc con F ca F c dng $ s F (s), nu s tha F(s): ng, th s
DOM(F).
Vi mi cng thc con F ca F c dng " s F(s), nu c mt thnh phn no ca s
khng nm trong DOM(F) th F(s) l ng. Ngha l $ s DOM(F) F(s): ng, hay
F(s): Sai s DOM (F).

V d 7.13: Nh v d trong im (a): 2 quan h R v S nh sau:


R A B S A B
1 2

3 4

3 4

2 2

2 5
Cc cu hi:
c1: { s Rs Ss }
c2: { s Rs Ss }
F1: Rs Ss khng an ton v cho s = { 3,7 }, si DOM(F) m khng tha S s tha F1.
(s : F1 (s): l ng v s DOM(F1))
F2 = Rs Ss : l an ton, nu s tha F2 Rs : l ng s R do mi thnh phn ca
s DOM(F2).
Chng ta c:
() F = Rs F(s) l an ton, vi F l 1 cng thc (khng c cng thc con c dng " u
F(u) v $ u F(u)).
() $ s ( F(s) G(s)) vi F l an ton.
() " s ( F(s) G(s)) vi G l mt cng thc.
(2).

135/174

: $ u F (u), nu u tha F (u) : ng u DOM(F , nu u tha F (u) : ng u


DOM(F ).
$ u F (u) $ u F $ u F (u)),
" u F ),
" u F (u)).
Theo (1):
" u ( F (u) : ng u Dom(F ).
Theo (1):
" u ( F (u) : ng u Dom(F ).
" u( u Dom( F ) F (u) : ng ),
m
DOM (F ) = DOM ( F ),
nn ta c:
" u( u DOM( F ) F (u) : ng )

136/174

Ngn ng tn t (tip theo)


Ngn ng tn t c bin l min gi tr
x l bin ly gi tr trn min thuc tnh ca cc quan h.
Quy tc nh ngha cng thc:
T: l hng hoc bin
Cng thc nguyn t:
(i) Q (t1, t2, tn ) ti l cc t, Q l mt quan h.
(ii) t1 q a1, t2 q a2, y ti l cc t v q l php ton.
Cng thc nguyn t l mt cng thc.
F1, F2 l cc cng thc th F1 F2 v F1 F2 cng l cc cng thc.
F l mt cng thc v t l mt bin t do th " t F v $ t F cng l cc cng thc.
F l cng thc thi ( F ) cng l mt cng thc.
Trong mt CSDL, cu hi bng ngn ng tn t c dng: { ( x1, x2, xk ) | F ( x1,
x2, xk ) }
y xi (i = 1, 2, k) l cc bin t do ca F, v F khng c bin t do no khc.
Cu tr li l tp cc b gi tr (x1, x2, xk ) m khi thay vo F th F l ng.
Cng thc F l an ton nu n tha cc iu kin sau:
F ( x1, x2, xn ) l ng xi DOM (F) vi i = 1, 2, , n.
Cng thc con $ u F (u) nu u tha F (u) l Sai
th u DOM (F ).
V d 7.3.1:
Cho mt CSDL gm cc quan h sau:
137/174

VN_CHUYN (Khch_Hng, Gi_Tr, Ga_n, #Toa, Mt_Hng, Khi_Lng,


N_D_Hng)
TU (#Tu, #Toa )
TOA (#Toa, Loi_Toa, TL_Rng, Kh_Nng_Cha, Tnh_Trng, Ga)
HNG (Ga_Gc, Ga_ch, GA_TT, #T_ng)
TUYN_NG ( #T_ng, Hng, Ga)
LCH_TRNH (#Tu, #T_ng, Ngy)
Cu hi 1: Cho danh sch cc loi toa "Frigo" ang sn sng ga "Tour" v c kh
nng cha trn 10 toa ?
Cu hi trn c th c biu din bng ngn ng i s quan h nh sau:
(TOA : (Loi_Toa = "Frigo" Kh_Nng_Cha > 10 Ga = "Tour" Tnh_Trng = "Td"
) [#Toa],
Din t bng ngn ng tn t c bin l b nh sau:
{ r [#Toa] | TOA r r[Loi_Toa] = "Frigo" r[Kh_Nng_Cha] > 10 r[Ga] = "Tour"
r[Tnh_Trng] = "Td" }
V bng ngn ng tn t c bin l min gi tr nh sau:
{ n | $ x $ c ( TOA (n, "Frigo", x, c, "Td", "Tour") c > 10) }
Cu hi 2: Cho danh sch cc loi toa ca tu s 4002 ?
Cu hi c biu din bng ngn ng i s quan h:
(((TU : #Tu = 4002) [ #Toa] ) * TOA) [ Loi_Toa]
Bng ngn ng tn t c bin l b gi tr :
{ r [Loi_Toa] | $ p (TOA r TU p r [#Toa] = p[ #Toa] p[ #Tu] = 4002 }
Bng ngn ng tn t c bin l min gi tr chng ta c cng thc sau:
{ t | $ u $ p $ c $ e $ g (TU (w, 4002) TOA (w, t, p, c, e, g)) }

138/174

Cu hi 3: Cho danh sch cc con ng i qua ga "Tour" ?


Cu hi c biu din bng ngn ng i s quan h:
R1 TUYN_NG * ( #Tuyn_ng1 = #Tuyn_ng2)
Tuyn_ng2:
R2 (R1 : (Ga = "Tour" Hng1 < Hng2) [ #Tuyn_ng1]
Bng ngn ng tn t c bin l b gi tr :
{ r [ #Tuyn_ng] | TUYN_NG r $ p (TUYN_NG p r
[#Tuyn_ng] = p[ #Tuyn_ng] r[ Hng] < p[ Hng] r[Ga] = "Tour" }
Bng ngn ng tn t c bin l min gi tr chng ta c cng thc sau:
{ l | $ r1 $ r2 $ g (TUYN_NG (l, r1, "Tour") TUYN_NG (l, r2, g) (r2 >
r1)) }
Cu hi 4: Cho danh sch cc ga m toa tu i t "Anger" n "Bezier" ?
Chng ta cn mt lc cng thc sau:
x := { g | $ lHNG ("Anger", "Bezier", g, l) }
Output (x)
While x "Bezier"
X := { g | $ lHNG ("Anger", "Bezier", g, l) }
Output (x)
End.

S tng ng ca cc ngn ng thao tc CSDL:


Tnh tng ng: Mt cu hi c biu din bng mt trong 3 ngn ng thao
tc CSDL: ngn ng i s quan h, ngn ng tn t c bin l b, ngn ng tn t c
bin l min gi tr l tng ng nhau:

139/174

Quy trnh chng minh nh trn.


Mt s nh l:
nh l 7.1:
Nu B l mt biu thc trong ngn ng i s quan h th tn ti 1 biu thc an
ton trong ngn ng tn t c bin l n-b tng ng vi biu thc B.
Chng minh: (Bng phng php quy np theo s php ton hin din trong B).
Trng hp B khng c php ton:
B l mt bng cc hng { t1, t2, , tn } hoc B l mt quan h.
Nu B l mt quan h Q, th chng ta c biu thc an ton c dng { t | Q }.
Nu B l mt bng hng { t1, t2, , tn }, th chng ta c cng thc : B = { t | t = t1 t =
t2 t = t3 t = tn }.
Trong ti l dng vit tt ca t1 = ti1, t2 = ti2, , tk = tik; y tj l thnh phn th
j ca b t.
V t1, t2, , tn l cc b hoc cc hng nn min gi tr MGT(B) = { t1, t2, , tn }
v DOM (B) = { t1, t2, , tn }; hay cng thc : { t | t = t1 t = t2 t = t3 t = tn } l
tng ng vi biu thc B cho.
Trng hp B c cha php ton.
Gi s B c dng B = B1 q B2.

140/174

B1, B2 l cc biu thc quan h v q l php ton quan h c s php ton t hn B.


Chng ta cn tm C, biu thc an ton tng ng vi B.
Cc php ton quan h c xt l: Hp ( - Union), Hiu ( -Minus), Chiu ([ ] - Project),
Tch cc (x - Cartesian) v Chn ( :() - Selection).
Phn tch php ton:
Trng hp 1: Php Hp ( - Union). Nu B = B1 B2 th ta c:
B1 { t | C1(t) }
B2 { t | C2(t) }
C1(t) v C2(t) l cc cng thc an ton.
Xt cng thc C(t) = C1(t) C2(t). Chng ta cn chng minh C(t) l cng thc an
ton. Xt cng thc trong ngn ng tn t B = { t | C(t) } vi C(t) l cng thc an ton,
tc l vi mi t l n-b t DOM(B) C(t) l ng. Khi B tng ng vi B, k
hiu: B B.
Nhn xt: DOM(C1) DOM(C2) DOM(C).
Xt iu kin 1 ca nh ngha cng thc an ton:
Nu t0 tha C(t) = C1(t) C2(t) th:
Hoc t0 tha C1(t) t0 DOM(C1), bi v C1 l cng thc an ton;
Hoc t0 tha C2(t) t0 DOM(C2), bi v C2 l cng thc an ton.
Nh vy iu kin 1 l tha.
Xt iu kin 2 & 3:
Nu c cng thc $ u F(u) hoc " u F(u) l cc cng thc con ca C th chng nm
gn trong C1 hoc C2.
Do C1 v C2 l cc cng thc an ton nn cc cng thc con cng tha cc iu
kin an ton.
Do u0 tha $ u F(u) u0 DOM(F).
Do u0 tha " u F(u) u0 DOM(F).
141/174

Bi v C(t) = C1(t) C2(t), do B B theo nh ngha ca php hp ( ).


Trng hp 2: Php Hiu (-Minus). Nu B = B1 - B2 th ta c:
B { t | C1(t) C2(t) }
C(t) = C1(t) C2(t).
Xt iu kin 1 ca nh ngha cng thc an ton:
(** Lu : DOM(C) = DOM(C1) DOM(C2)).
Nu t0 tha C(t) t0 DOM(C1) DOM(C)
Ngha l vi t l mt n-b tha C(t) th t thuc vo min gi tr ca cng thc C(t).
iu kin 1 tha.
iu kin 2:
Nu c cng thc $ u F(u) l cng thc con ca C th :
$ u F(u) l cng thc con C1. C1 l an ton nn u0 tha F(u0) l ng u0 DOM(F).
V
$ u F(u) l cng thc con C2. C2 l an ton nn u0 tha F(u0) l sai u0 DOM( F).
Hay u0 tha F(u0) l ng u0 DOM(F).
Vy iu kin 2 tha mn.
iu kin 3: (hon ton tng t nh trn)
Nu c cng thc " u F(u) l cng thc con ca C th :
" u F(u) l cng thc con C1. C1 l an ton nn u0 tha F(u0) l ng u0 DOM(F).
V
" u F(u) l cng thc con C2. C2 l an ton nn u0 tha F(u0) l sai u0 DOM( F).
Hay u0 tha F(u0) l ng u0 DOM(F).
Vy iu kin 3 tha mn.
Trng hp 3: Php chiu ([ ] - Project)
Biu thc quan h c dng: B = B1[X]. y, X l tp cc thuc tnh.
142/174

B1 c biu thc tng ng l B = { t | C1(t) } v C1(t) l mt cng thc an ton.


Xt B = { u | $ t (C(t) u = t[X] }
A l tp cc hng v cc gi tr ca thuc tnh X ca cc quan h c mt trong biu
thc i s quan h B1. Khi :
DOM (C1) = MGT(X) A.
t E = MGT(X) - A.
DOM(C) = DOM(C1) - E.
V iu kin 1:
u0 tha C, $ t0 (C1(t0) u = t0[X] l ng. C1(t0) : l ng.
C1 l an ton t0 DOM(C1).
t0j = u0j, thnh phn th j ca t0 v u0.
u0j X u0j DOM(C1) - E, hay u0 DOM(C1)
Nh vy C l cng thc an ton.
iu kin 2 & 3:
$ u F(u) hoc " u F(u) l cc cng thc con ca C. Suy ra chng l cc cng thc con
ca C1.
Nh vy C(t) l cng thc an ton v chng ta c: B B.
Trng hp 4: Php tch cc ( x - Cartesian).
Biu thc B c dng B = B1 x B2.
B1 c cng thc an ton C1 tng ng v
B2 c cng thc an ton C2 tng ng.
Chng ta xy dng biu thc trong ngn ng tn t c bin b-n nh sau:
B = { u | $ t $ v (C1(t) C2(v) u[X] = tu[Y] = v }

143/174

y X v Y l tp cc thuc tnh ca B1 v B2. Chng ta cn chng minh cng thc


l an ton
B B.
Xt iu kin 1:
u0 tha C.
u0 [X] = t0 tha C1, C1 l cng thc an ton t0 DOM(C1).
u0 [Y] = v0 tha C2, C2 l cng thc an ton v0 DOM(C2).
u0 DOM(C1) DOM(C2) DOM (C) iu kin 1 tha.

iu kin 2& 3: (khng c)


Trng hp 5: i vi php chn ( :() - Selection)
Biu thc trong ngn ng i s quan h c dng:
B = B1 : (E)
(php chn theo iu kin E). B1 c biu thc an ton l C1. Biu thc trong ngn
ng tn t c bin b-n l:
B = { t | C1(t) E }
y E c suy t E bng cch ly cc ton hng biu din bi thuc tnh X l
t[X].
C(t) = C1(t) E. Cn chng minh C l mt cng thc an ton.
DOM(C) = DOM(C1) Tp hng (E).
t0 tha C1 l ng t0 DOM(C1).
iu kin 1 ltha.
iu kin 2 &3 (khng c) Nh vy C(t) = C1(t) E l mt cng thc an ton. Ta c
B B.

144/174

Kt lun: Mt cu hi c biu din bng ngn ng i s quan h lun lun tm


c biu thc tng ng vi n biu din bng ngn ng tn t c bin l b-n.
V d 7.3.1:
Cho 2 quan h R(A,B) v S(C,D).
Biu thc trong ngn ng i s quan h l:
((R x S) : (B = C)) [A,B,D].
Biu din trong ngn ng tn t c bin l b-n:
Vi R x S:
{ t | $ u $ v (R u S v (t[A] = u[A]) (t[B] = u[B]) t[C] = v[C]) t[D] = v[D] }
Su hn na ti php chn (: (B=C)), v ri php chiu :
{ w | $ t ( $ u $ v (R u S v (t[A] = u[A]) (t[B] = u[B]) t[C] = v[C]) t[D] = v[D] ) (t[B] =
t[C]) (w[A] = t[A]) (w[C] = t[C]) (w[D] = t[D]) }
n gin biu thc chng ta thu c :
{ w | $ u $ v (R u S v (w[A] = u[A]) (w[C] = v[C]) w[D] = v[D] ) (u[B] = v[C]) }
l biu thc tng ng c biu din bng ngn ng tn t c bin l b-n ca
biu thc trong ngn ng i s quan h nu trn.

nh l 7.2:
ng vi mi biu thc an ton trong ngn ng tn t c bin l b-n ta c mt biu
thc an ton tng ng trong ngn ng tn t c bin l min gi tr.
Qu trnh bin i cu hi tron ngn ng tn t c bin l b-n sang cu hi tron ngn
ng tn t c bin l min gi tr:
Cho cu hi dng { t | C(t) }, y t l mt b-n c k bc t do. t0 pht sinh ra k bin
min gi tr t do l x1, x2, x3, ..., xk.
Trong cng thc C(t), mi biu thc Q t m Q l mt quan h, th c i thnh Q (x1,
x2, x3, ..., xk).
145/174

vMi biu thc c s hin din ca t[xi] th c i thnh xi.


Trong cc biu thc con c dng $ u G(u) hay " u G(u) c bin i nh sau:
Bin u c i thnh y1, y2, , ym, y m l bc ca u.
R(u) c i thnh R (y1, y2, , ym).
u[yi] c i thnh yi.
$ u c i thnh $ y1, $ y2, $ y3 , , $ ym,
" u c i thnh " y1, " y2, " y3 , , " ym,

146/174

Ti u ha cu hi
t vn
Cc ngn ng bc cao ni chung v ngn ng con d liu ni ring khi thc hin
trong my u mt rt nhiu thi gian. Do , trc khi thc hin cc cu lnh thuc
cc ngn ng cn thit phi bin i hp l v dng tng ng, tc l dng cho
cng mt kt qu, gim thi gian tnh ton. Vic lm c gi l "ti u ha"
(Optimiztation). Vic ti u ha khng nht thit phi c ti u trn mi kh nng c
th c ca cc cch ci t cc cu hi. C th tha hip gia thut gii phc tp, hoc
/ v tn km khng gian lu tr vi vic tit kim thi gian x l. Chng ta bit rng,
CSDL c th l rt ln, hng chc ngn (nh h qun l cn b - cng chc) hay hng
trm ngn (nh vic qun l cc i tng chnh sch - c cng Cch mng), hoc hng
triu bn ghi (nh CSDL qun l dn c thnh ph H Ch Minh) v.v... Nhng bi ton
ny, nu mi thao tc trn mt bn ghi chng ta tit kim c q thi gian th mt cu
truy vn trn 1 bng c th tit kim c 10n * q thi gian, y n l s bn ghi
ca bng. Chng ta hy th tng tng, vi bng lu tr cc bn ghi c di c nh
v nhn khu, trong vng 1 giy my c th x l cc nhanh 1000 bn ghi, th x l
4.850.000 nhn khu ca bng, my phi tn 4.850 giy! Qu l mt thi gian kh c
th chp nhn cho vic ch i nhn kt qu ca mt cu lnh truy vn !
Ni chung, trong vic ti u ha x l thng tin, ngi ta u tin vic ti u ha v
thi gian hn so vi vic ti u ha lu tr d liu. Trong mt s trng hp, ngi ta
cn phi "hy sinh" c dng chun (Normal Form) t tc x l nhanh hn. Trong
v d v h CSDL qun l CBVC nu ti mc 5.3 trong chng V, (v d 5.3.4), mi
khi cn xem xt n h s lng ca mt CBVC ngi ta u phi tham kho qua bng
NGCH-BC-LNG thng qua php kt t nhin vi bng CBVC trn cc thuc
tnh Ngch v Bc. Nu trong danh sch CBVC chng ta b sung ct H-s-lng na
th dn ti vic trng lp (v d tha) thng tin - nguy c dn n vic mt tnh nht
qun d liu - ng thi khng m bo dng chun tt cho bng ny v buc phi b
sung RBTV :
CBVC [Ngch,Bc, H-s-lng] NGCH-BC-LNG [Ngch,Bc, H-slng].
B nh th cp (bng t, a t ...) ca my tnh gi y khng cn l vn lm
mi ngi phi bn tm khi xy dng cc h CSDL ln. Dung lng mt a cng
t ti hng chc Giga bytes. Tuy nhin vn c th tn ti nguy c thiu khng gian tnh
ton cho my nu khng lu tm n vic ti u ha cc cu hi trc khi a vo my
v yu cu my thi hnh. Mt nguyn nhn dn ti iu ny l vic thc hin cc php
kt ni v php tch -cc ca cc quan h. Chng ta bit, tch -cc ( trnh by
147/174

ti im 5.2.4, mc 5.2,) v cc php kt (q -Join, Natural Join, Equi Join, Outer Join trnh by ti im 5.3.3 mc 5.3 v mc 5.4 ca Chng V) i hi kh nhiu khng
gian lu tr v thi gian x l.
Cho R (A1, A2, ..., An) v S (B1, B2, ..., Bm) l hai quan h nh ngha trn 2 tp
thuc tnh { A1, A2, ..., An } v { B1, B2, ..., Bm }. Nu R c N1b gi tr v S c N2
b gi tr th tch -cc s cho kt qu l mt bng mi gm m + n thuc tnh vi N1 *
N2 b gi tr. Ch cn mi quan h c 10 thuc tnh cha s lng b gi tr kh khim
tn, 1000 b, th tch -cc to ra bng trung gian c s thuc tnh l 20 v s lng
b gi tr l 1.000.000. Nu mi field ch rng 5 bytes thi (m trn thc t th rt t c
nhng quan h nh nh vy) th quan h trung gian ny "ngn" mt 1/10 Giga bytes !
ng nhin l, thi gian truy nhp CSDL v truy xut a t to ra ngn y bn ghi
cng khng phi l t. S bng n s lng v "bnh trng" kch thc (chiu di) bn
ghi ny t chng ta vo vic phi nghin cu ti u cu hi trc khi a vo my
tnh ton.
Chng ny ch yu trnh by mt vi phng php ti u ha cc biu thc quan
h, c bit l x l biu thc c lin quan ti php kt ni v tch -cc. Sau s
trnh by chi tit mt phng php ti u ha cho mt lp ph cp cc biu thc quan
h. Ngun ti liu tham kho ch yu da trn cc l thuyt v v d minh ha trong
chng VI ca PGS.PTS.L Tin Vng [8].

Cc nguyn tc tng qut ti u ha mt cu hi.


Chng ta hy xt mt v d n gin sau y :
Cho hai quan h R(A,B) vi n bn ghi v S (C,D) vi m bn ghi. Tch -cc ca R v S
l mt quan h Q (A,B,C,D) c n * m bn ghi (Xem 5.2.4. Php tch -cc ca 2 quan
h, mc 5,2, Chng V). Chng ta c cu hi "Ly gi tr ca thuc tnh A sao cho B=C
v D=50". Cu hi c vit li di dng ngn ng i s quan h nh sau:
( ( R(A,B) x S(C,D) ) : (B=C D=50) ) [A]
Nu a php chn D=50 vo bn trong php tch -cc s c:
(( R (A,B) x ( S(C,D) : (D = 50) ) ) : (B=C) ) [A]
v sau chuyn php chn B=C ca tch -cc thnh php "kt ni bng" chng ta
thu c:
R rng, php tnh cui cng s tn km thi gian hn rt nhiu.

148/174

-C th l: Ch chn trn quan h S nhng b c gi tr D=50 th s b ly ra s t hn


ton b s b ca c quan h trn S. S b c chn ra xong t S mi em kt ni vi
quan h R. Php kt ni ny ch chn ra b no thuc R m c gi tr ti B l bng b c
gi tr ti C thuc S mi c ly ra kt li vi nhau. iu hon ton nhanh hn l
ly tch -cc ca R x S ri mi chn trong kt qu nhng b c gi tr ti B bng gi
tr ti C.
Vic bin i cu hi thnh cu hi tng ng nh v d nu trn l mt minh
ha cho vic gim bt thi gian tr li cu hi bng cch gim bt s ln cn truy nhp
ti b nh th cp da trn nguyn tc thc hin php chn cng sm cng tt. Trnh t
thc hin cc php tnh s ng mt vai tr quan trng qu trnh t chc cu hi.
J. D. Ullman [5] trong cc kt qu nghin cu cng b ln u tin ca mnh
trnh by 6 chin lc tng quan cho vic ti u ha cu hi nh sau:
-. Thc hin php chn cng sm cng tt.
Bin i cu hi a php chn vo thc hin trc nhm lm gim bt kch c
ca kt qu trung gian v do vy chi ph phi tr cho vic truy nhp b nh th cp cng
nh lu tr ca b nh chnh s nh i.
-T hp nhng php chn xc nh vi php tch -cc thnh php kt ni.
Nh bit, php kt ni, c bit l php kt ni bng (Equi Join) c th c
thc hin t tn km hn nhiu so vi php tch -cc trn cng cc quan h. Nu kt
qu ca tch -cc RxS l i s ca php chn v php chn lin quan ti cc php so
snh gia cc thuc tnh ca R v S th r rng php tch -cc l php kt ni.
-T hp dy cc php ton quan h mt ngi nh cc php chn v php chiu.
Mt dy cc php mt ngi nh php chn hoc php chiu m kt qu ca chng
ph thuc vo cc b ca mt quan h c lp th c th nhm cc php li.
-Tm cc biu thc con chung trong mt biu thc.
Nu kt qu ca mt biu thc con chung (tc l biu thc xut hin nhiu hn mt
ln) l mt quan h khng ln v n c th c c t b nh th cp vi t thi gian
th nn tnh ton trc biu thc ch mt ln. Nu biu thc con chung c lin quan
ti mt php kt ni th trong trng hp tng qut khng th thay i c n bng
cch "y" php chn vo trong.
iu ng quan tm l, cc biu thc con chung c tn s xut hin ln thng
c biu din trong cc VIEW (khung nhn) ca ngi s dng, bi v, thc hin
cc cu hi cn phi thay th n bng mt biu thc c nh cho VIEW.
149/174

- Tin x l cc quan h / bng (Table Preprocessing).


C hai vn quan trng cn x l trc cho cc quan h l sp xp trc cc b
gi tr theo th t vt l v sp xp lgc - tc l thit lp cc bng ch mc (Index) cho
cc bn ghi. Khi vic thc hin cc php ton c lin quan ti hai quan h (cc php
ton hai ngi) s nhanh hn rt nhiu.
- nh gi trc khi thc hin tnh ton.
Mi khi cn chn trnh t thc hin cc php ton trong biu thc, hoc chn mt trong
hai i s ca mt php hai ngi, th cn tnh ton xem ch ph (Cost) thc hin cc php
tnh (thng tnh theo s php ton, thi gian, hoc/v dung lng b nh cn thit
so vi kch thc ca cc quan h, t xc nh c chi ph tng th phi tr cho cc
cch khc nhau khi thc hin cc cu hi.
Da vo cc nguyn tc nu trn, chng ta s bin i cu truy vn thnh cu hi
tng ng ti u hn, vic thc hin c chi ph x l t hn. Nhng trc khi c
th "ti u ha" cc biu thc, cn lm r khi nim khi no th hai biu thc c gi
l tng ng. Trong phn sau s cho bit mt cch hnh thc khi nim tng ng.
Biu thc tng ng.
Trc ht, xem xt li khi nim v nh ngha quan h c s dng trong cc
chng 2 v 3 thy s tng ng ca cc quan h da theo nh ngha. Vi cc
nh ngha khc nhau chng cho cc tnh cht ton hc cng khc nhau. Nu quan nim
quan h l mt tp hp cc b (k - b) vi k c nh, khi hai quan h l tng ng
khi v ch khi chng c cng mt tp cc b. Vi quan nim quan h l tp cc nh x
t tp tn thuc tnh vo tp gi tr, th khi hai quan h l bng nhau nu chng c
cng mt tp nh x. nh ngha th nht c th bin i sang nh ngha th hai bng
cch thay i tn thuc tnh thnh tn cc ct trong bng v, ngc li i t nh ngha
th hai sang nh ngha th nht bng cch c nh th t cho cc thuc tnh. Sau y s
s dng nh ngha th hai, ngha l, quan h l mt tp nh x t tp thuc tnh vo tp
cc gi tr. Mt ngn ng truy vn hin hu lun lun i hi phi bit tn ca cc ct
trong mt quan h. Do , tn cc thuc tnh trong mt quan h phi l mt bin trong
mt biu thc v cng th hin kt qu ca biu thc.
+ Biu thc trong ngn ng i s quan h c cc hng thc l bin quan h (relation
variables) R1,...., Rn; cc quan h hng (constant relation), c xc nh nh l mt
nh x t cc k-b ca cc quan h (r1, ..., rk) trong ri l quan h trn lc ri
v thay th ri vo Ri khi nh gi biu thc. Hai biu thc E1 v E2 c gi l tng
ng (Equivalent), vit tt l E1 E2, nu chng biu din cng mt nh x, ngha l,
nu chng ta thay th cng cc quan h cho tn cc lc tng ng hai biu thc
E1 v E2, th chng s cho ra cng mt kt qu.
150/174

Vi nh ngha tng ng ny chng ta c mt php chuyn dch i s thng thng


sau y:
Cc quy tc lin quan ti php kt v tch -cc.
Quy tc giao hon ca php kt ni v tch -cc
Nu E1 v E2 l hai biu thc quan h v F l iu kin trn cc thuc tnh ca E1 v
E2 th:

// Tnh giao hon ca kt


E1 * E2 E1 * E2 // Tnh giao hon ca kt bng
E1 x E2 E1 x E2 // Tnh giao hon ca tch -cc.
Chng ta chng minh quy tc giao hon ca php kt ni. Gi s E1 c cc thuc tnh
A1, ..., An; E2 c cc thuc tnh B1, ..., Bm v cc thuc tnh A, B khng nht thit phi
l phn bit. Gi r1 v r2 l hai quan h tng ng ca E1v E2. Gi tr ca E1 E2 l tp
cc nh x a t A1 ... An, B1 ... Bm vo tp gi tr sao cho cc nh x m 1 r1 v m 2
r2 tha mn iu kin:
a [Ai] = m 1[Ai], i = 1,2,...,n
a [Bi] = m 1[Bi], i = 1,2,...,m
v iu kin F l ng khi thay a [C] cho mi thuc tnh C trong F.
Nu biu din E2 E1 cng nh trn, chng ta d dng nhn thy hai php kt trn cho
chnh xc cng mt tp kt qu. Do vy hai biu thc l tng ng.
Ch : Nu quan nim quan h l tp cc b (c th t thuc tnh c nh) th php q
-kt, kt t nhin v tch -cc khng th giao hon c v th t cc thuc tnh trong
quan h kt qu b thay i.
- Quy tc kt hp ca php kt ni v tch -cc.
Nu E1, E2 v E3 l cc biu thc quan h: F1, F2 l iu kin th:

151/174

(E1 * E2) * E3 E1 * (E2 * E3)


(E1 * E2) x E3 E1 x (E2 x E3)
Vic kim tra tnh tng ng ca cc quy tc trn kh d dng.
Cc quy tc lin quan ti php chn v php chiu
Dy cc php chiu c th t hp li thnh mt php chiu, biu din theo cc trng
hp sau:
Dy cc php chiu
(E [B1B2 ... Bm]) [A1A2 ... An] E [A1 ... An]
y, cc thuc tnh A1, ..., An phi nm trong tp cc thuc tnh B1, ..., Bm. Ng
ngha ca vic bin i tng ng ny l: Nu thc hin mt php chiu biu thc
quan h E trn tp cc thuc tnh B, ri sau thc hin tip php chiu trn tp con
cc thuc tnh A B ca quan h va tm c, th kt qu ca dy php chiu ny hon
ton tng ng vi mt php chiu biu thc quan h E trn tp thuc tnh A.
Tng t, dy cc php chn c th t hp thnh mt php chn kim tra tt c
cc iu kin cng mt lc v c biu din nh sau:
- Dy cc php chn:
( ((E : (f1)) : f2) : ... ) : fn E : (f1 f2 ... fn)
Ng ngha: Vic ln lt thc hin cc php chn trn quan h kt qu ca mt php
chn trc i vi biu thc quan h E l tng ng vi vic chn trn E cc b
gi tr tha mn ng thi tt c cc iu kin chn f1, f2 ... fn.
- Giao hon php chn v php chiu:
(E [A1... An] : (f))(E : (f)) [A1 ... An]
Mt cch tng qut hn, nu iu kin chn f lin quan ti cc thuc tnh B1, ... Bm
m khng nm trong tp thuc tnh A1, ... An th:
(E [A1 ... An]) : (f) (E [A1 ... An B1 ... Bm ]) : (f)) [A1 ... An]
-Giao hon php chn v tch -cc:

152/174

Nu tt c cc thuc tnh ca F l thuc tnh ca E1 th:


(E1 x E2) : (f) (E1 : (f)) x E2
T d dng suy ra rng, nu F c dng f = f1 L f2 trong f1 ch lin quan ti cc
thuc tnh ca E1; f2 ch lin quan ti cc thuc tnh ca E2 , th c th s dng cc lut
v c:
(E1 x E2) : (f) (E1 : (f1)) x (E2 : (f2))
Hn na nu f1 ch lin quan ti cc thuc tnh ca E1, nhng f2 lin quan ti cc
thuc tnh ca c E1 v E2 th:
(E1 x E2) : (f) ((E1 : (f1)) x E2) : (f2)
-Giao hon php chn v mt php hp:
Nu c biu thc E = E1 E2; c th gi thit thm rng, cc thuc tnh ca E1 v E2
c cng tn nh ca E hoc t nht mi thuc tnh ca E l ph hp vi mt thuc tnh
duy nht ca E1 v mt thuc tnh duy nht ca E2 . Khi :
(E1 E2) : (f) (E1 : (f))(E2 : (f))
Nu tn cc thuc tnh ca E1 v hoc E2 khc vi tn thuc tnh ca E th trong f
v phi ca cng thc trn cn thay i s dng tn cho ph hp.
-Giao hon php chn v mt php hiu tp hp
(E1 - E2) : (f) (E1 : (f)) - (E2 : (f))
Nh nu trong lut , nu tn cc thuc tnh ca E1 vE2 l khc nhau th cn thay
th cc thuc tnh trong f v phi biu thc tng ng tng ng vi E1. Ch
rng, php chn (E2 : (f)) c th l khng cn thit. Trong nhiu trng hp, vic thc
hin php chn (E2 : (f)) trc s c hiu qu hn l tnh ton trc tip vi E2 v kch c
quan h lc s b i rt nhiu.
Cc quy tc nu trn ni chung l y php chn xung trc php kt ni v php
kt ni thng thc hin lu nh php tch Cc. Quy tc y php chn xung trc
php kt ni suy ra t quy tc v . Quy tc y php chiu xung trc php tch cc hoc php hp cng tng t nh quy tc v . Ch l khng c phng php
tng qut cho vic y php chiu xung trc php hiu cc tp hp.
-Giao hon mt php chiu vi mt php tch -cc:
153/174

Gi E1, E2 l hai biu thc quan h, A1 ... An l tp cc thuc tnh trong B1, ... Bm
l cc thuc tnh ca E1, cc thuc tnh cn li C1, ..., Ck thuc E2. Khi :
(E1 x E2) [A1 ... An] E1 [B1 ... Bm] x E2 [C1 ... Ck]
-Giao hon mt php chiu vi mt php hp:
(E1 E2) [A1 ... An] E1[A1 ... An] E2[A1 ... An]
Nh nu trong lut , nu tn cc thuc tnh ca E1 v / hoc E2 l khc vi cc
thuc tnh trong E1 E2 th cn thay A1 ... An bn v phi bng cc tn ph hp.
V d v mt thut ton ti u ha biu thc quan h.
Ti y c th p dng cc quy tc nu trong mc 8.2 c th ti u ha cc biu
thc quan h. Biu thc "ti u" kt qu phi tun theo cc nguyn tc nu phn
8.1 mc d rng cc nguyn tc khng c ngha l bo m ti u cho mi trng
hp tng ng.
Lu rng, lun lun y php chn v php chiu xung mc cng su cng tt
trong cy biu din biu thc quan h nhm to nn mt dy cc php chn cng nh
php chiu t c th t chc thnh mt php chn theo sau mt php chiu. Nhm
cc php chn v php chiu li trong mt nhm thc hin trc cc php tnh hai
ngi nh php hp, tch -cc, hiu tp hp v.v...
C mt s trng hp c bit xy ra khi mt php tnh hai ngi c cc hng thc
cha php chn v / hoc php chiu c p dng i vi l ca cy biu din biu
thc. Khi cn xem xt cn thn tc ng ca php tnh hai ngi v mt s trng hp
cn phi lin kt php chn hoc php chiu vi php hai ngi .
Kt qu u ra (Output) ca thut ton l mt chng trnh bao gm cc bc nh
sau:
-p dng ca mt php chn hoc mt php chiu n gin.
-p dng ca mt php chn v mt php chiu hoc
- p dng ca mt tch -cc, php hp hoc php hiu tp hp cho hai hng thc m
trc cc php chn hoc cc php chiu c p dng cho mt hoc c hai hng
thc.
Hy xt mt CSDL qun l th vin bao gm cc quan h sau y:

154/174

-. SCH (Tn-sch, Tc-gi, Nh_XB, M-sch): l quan h v cc loi sch trong th


vin.
-NH-XUT-BN (Nh_XB, a-ch, Thnh-ph): quan h v nh xut bn.
-C-GI (Tn-G, ch-G, Tph-G, S-th) : quan h v c gi
- MN-SCH (S-th, M-sch, Ngy-mn): quan h s theo di mn.
lu tr thng tin v sch c th gi thit thm rng c mt khung nhn (VIEW)
theo di cc sch c mn, TD-MN, bao gm mt s thng tin b sung v sch
c mn, l kt qu ca kt ni t nhin ca quan h SCH, C-GI v MNSCH, chng hn c xc nh qua biu thc quan h:
((SCH x C-GI x MN-SCH) : (f)) [{S}]
y:
f ::= (C-GI.S-th = MN-SCH.S-th) (SCH.M-sch = MNSCH.M-sch).
v S l tp cc thuc tnh:
S = { Tn-sch, Tc-gi, Nh_XB, SCH.M-sch, Tn_G, ch-G, Tph-G,
C-GI.S-th, Ngy-mn }.
-Cu hi: Cho danh sch nhng cun sch cho mn trc ngy 27/03/1999. Biu
thc quan h c vit nh sau:
(TD-MN : (Ngy-mn < 27/03/1999) ) [ Tn-sch ]
Hnh cy ca biu thc trn c biu din bng hnh 8.1. Xin lu l, cc php ton
nm phi di l cc php ton c thc hin trc cc php ton phi trn ca
cy.

155/174

Hnh 8.1: Biu din cy ca biu thc hi


Thay th cc gi tr f v S vo biu thc hi c c cy biu din ca biu thc quan
h nh trong hnh 8.1
-Bc th nht ca ti u l tch php chn f thnh hai php chn vi iu kin:
SCH.M-sch = MN-SCH.M-sch
v
MN-SCH.S-th = C-GI.S-th
By gi chng ta c 3 php chn. Cn "y" chng xung mc thp hn chng no
cn c th c.
Php chn vi iu kin Ngy-mn < 27/03/1999 c y xung di php
chiu v hai php chn kia bng cch p dng cc quy tc (hoc lut) v . Php chn u
c p dng cho tch -cc ((MN-SCH x C-GI) x SCH). V thuc tnh
Ngy-mn trong php chn ch c quan h MN-SCH nn c th thay th:
((MN-SCH x C-GI) x SCH) : (Ngy-mn < 27/03/1999)
bng biu thc:

156/174

((MN-SCH x C-GI) : (Ngy-mn < 27/03/1999)) x SCH)


v tip tc y xung na, cui cng ta c biu thc:
(((MN-SCH : (Ngy-mn < 27/03/1999)) x C-GI) x SCH)
Nh vy y c php chn theo ngy mn sch ny xung su nh c th.
By gi tip tc y php chn vi iu kin
Nh vy y c php chn theo ngy mn sch ny xung su nh c th.
By gi tip tc y php chn vi iu kin SCH.M-sch = MN-SCH.Msch. xung mc thp nht nu c th. Khng th y php chn ny xung di tch
-cc v n lin quan ti mt thuc tnh ca quan h SCH v mt thuc tnh thuc
quan h MN-SCH. Do vy php chn:
: MN-SCH.S-th = C-GI.S-th
S-th
c th y xung p dng cho tch -cc:
(MN-SCH x C-GI) : ( : (Ngy-mn < 27/03/1999)
Ch rng MN-SCH.S-th l tn mt thuc tnh ca php chn:
MN-SCH : (Ngy-mn < 27/03/1999).
-Bc tip theo: T hp hai php chiu thnh mt php chiu l [Tn-sch] nh lut
. Kt qu c cho nh trong hnh 8.2. Sau p dng quy tc m rng thay th:
:(MN-SCH.S-th = C-GI.S-thS-th) v chiu [Tn_sch]
nh dy php ton:
[Tn-sch, SCH.M_sch, MN-SCH.m-sch ] (1)
:(SCH.M_sch = MN-SCH.M-sch) (2)
ri chiu ly tn sch:
[Tn-sch] (3)

157/174

p dng quy tc thay th biu thc u tin, biu thc s (1), ca php chiu nh
php chiu:
[Tn-schTn-sch, SCH.M_sch]
p dng cho quan h SCHv [MN-SCH.m-sch] p dng cho hng thc phi
tri ca tch -cc trong hnh 8.2.
Php chiu cui v php chn c th p dng quy tc m rng ? c dy:
[ p dng cho hng thc phi tri ca tch -cc trong hnh 8.2.
Php chiu cui v php chn c th p dng quy tc m rng ? c dy:
[MN-SCH.M_schM_sch, MN-SCH.S-thS-th, C-GI.S-th]
(5)
: (MN-SCH.S-th = C-GI.S-th) (6)
[MN-SCH.M_sch]M_sch] (7)
Php chiu u, s (5), c phn tch chuyn xung tch -cc nh quy tc .
Mt phn php chiu C-GI.S-th xung hng thc C-GI v l thuc tnh ca
quan h ny.

158/174

Hnh 8.2 Cy vi t hp php chn v php chiu


Phn cn li l php chiu ly 3 thuc tnh:
[ MN-SCH.M_sch, MN-SCH.S-thS-th, Ngy-mn ]
c y xung hng thc th MN-SCH. Cc thuc tnh khng ph hp s b loi
b. Biu din cy cui cng ca biu thc nh trong hnh 8.3.
Nhm cc php tnh bng ng mi tn gin on. Mi tch -cc c t hp vi
php chn to thnh mt php kt ni bng nhau (Equi Join) rt c hiu qu. c bit
php chn trn quan h MN-SCH v php chiu ca C-GI ly thuc tnh
S-th pha di l t hp vi tch -cc. Th t thc hin ca cy biu thc
trong cc hnh 8.3, 8.2 v 8.3 l t di ln: Nhm cc php ton nm pha di c
thc hin trc cc php ton phi trn.

159/174

Hnh 8.3 Cy kt qu biu din vic phn nhm cc biu thc.

Mt thut ton ti u ha cu hi trong ngn ng SQH


V d trn cho ta mt minh ha v vic chuyn i mt cu hi bng ngn ng i
s quan h v dng tng ng tt hn (hay ti u hn). Phng php trn tp trung
ch yu vo cc php chiu, php chn v tch -cc, vi mc ch lm sao "y" c
php chn v php chiu xung mc thp nht, tc l thi hnh cc php ton ny cng
sm cng tt, nu c th. Tip theo, kt hp cc php chn vi tch -cc thnh php
kt t nhin lm gim cc kt qu trung gian. Ct li ca vn ti u ha chnh l
vic lm gim thiu lu tr trung gian v t lm tng nhanh tc x l cu hi.
Tuy nhin, thc hin c cc qu trnh ti u ha nh trn, chng ta cn lu
ti th t thc hin cc php ton c th "y" cc php ton xung cc mc
hp l cn thit. Bng di y cho php chng ta cch thc hin cc php bin i
tng ng i vi cc php Hi (Union), Tr (Minus), Giao (Intersect), Tch -cc
(Cartesian), Chia (Division), Chiu (Projection) v Chn (Selection).
-(B1). Kt t nhin tng ng v dy php tch -cc, php chn v php chiu:
Q1 (A,B) * Q2 (B,C) (Q1 x Q2 : (Q1[B]=Q2[B])) [A,B,C]
160/174

-(B2). Php theta kt tng ng vi dy php tch -cc v php chn vi iu


kin theta:
Q1(A,B) Q2(C,D) (Q1 x Q2) : (Bq D)
-(B3). Php giao (Intersect) tng ng vi phn b (Complement) ca hi hai phn
b ca 2 quan h:
Q1 Q2(( Q1) ( Q2)) v (B4)
-(B4). Php b ca mt quan h tng ng vi tch -cc ca cc php chiu trn
tng thuc tnh ca quan h tr i cc b gi tr c trong th hin ca quan h:
Q(X1, X2, Xn) (Q[X1] x Q[X2] x x Q[Xn]) - Q(X1, Xn)
-(B5). Thng ca 2 quan h tng ng vi hiu ca cc quan h trung gian sau:
Q1(A,B) Q2(A) = Q1[B] - ((Q1[B] x Q2[A] - Q1(A,B)) [B]
p dng cc cch bin i tng ng trn, kt hp vi cc quy tc "y" v kt
hp nh trnh by trong mc 8.2, chng ta a ra thut ton tng qut ti u ha
cc cu hi trong ngn ng i s quan h.
-Thut ton:
u vo (Input): S c php cu hi bng ngn ng i s quan h.
u ra (Output): S c php ti u.
-Bc 1. p dng cc php bin i tng ng nu trong bng (B1) n (B5) trn.
-Bc 2. p dng lut bin i dy cc php chn tng ng: tch php chn thnh
cc php chn con.
-Bc 3. i vi mi php chn, p dng cc lut , , v nhm y cc php ton
chn xung cng su cng tt.
-Bc 4. i vi mi php chiu, p dng cc quy tc , v nhm y cc php ton
chiu xung cng su cng tt.
-Bc 5.
-Tp trung cc php chn nhm p dng lut

161/174

-p dng lut loi b bt cc php chiu v ch.


-Tp trung cc php chn vi tch -cc, nu c, chuyn thnh phep kt t nhin
hay theta kt bng cch p dng cc lut v .
+Nhn xt:
- Thut gii nu trn ch yu nhm gim khi lng d liu trung gian ch khng ch
ra th t thc hin cc php kt. V d:
(Q1 (A,B) * Q2 (B,C)) * Q3(A,C)
(Q1 (A,B) * Q3 (A,C)) * Q2(B,C)
-Thut gii ny khng cho chng ta mt kt qu ti u m n ch a ra mt gii php
tt.
- Cc php bin i ch da trn cc php ton c bn l Hi (Union), Tr (Minus),
Giao (Intersect), Tch -cc (Cartesian), Chia (Division), Chiu (Projection) v Chn
(Selection) m chng ta cn c th thc hin cc php bin i da trn cc php ton
khc na.

162/174

Ti u ha cu hi (tip theo)
Mt s k thut ti u cp thp.
Trong mc 8.2 trnh by cc t tng c bn thc hin ti u mt biu thc
quan h. Trong phn ny s trnh by mt lp cc cu truy vn rt ph dng v c
nhiu h thng ci t c hiu qu. Vn t ra l khi cu hi c bin i v ti
u c tng ng vi cu hi ban u hay khng? Lp cu hi s quan st bao gm
php chiu (Projection), php chn (Selection) v php kt t nhin (Natural Join) c
ngha l cc biu thc truy vn ch bao gm ba php tnh . Kt qu ci t ca nhiu
h thng (nh trong System R) l hiu qu nhng khng phi l tng qut cho tt c.
Nh phn trn trnh by, trong cc php ton quan h th php tch cc, php
kt (Join) lm mt rt nhiu thi gian x l v tn nhiu b nh. V vy, nguyn tc c
bn ca phn ny l lm th no biu thc ti u cui cng (tng ng vi biu
thc ban u) c s php kt l ti thiu. Do vy, trong qu trnh bin i tng ng,
iu quan trng l loi b c cc php kt khng cn thit.
tin li cho qu trnh bin i, cn lm quen vi khi nim "quan h v tr"
(universal relation), c th hiu mt cch n gin l php kt t nhin ca tt c cc
quan h trong CSDL thnh mt quan h chung.

Cu hi hi v bng
Mt cu hi hi (conjunctive query) l cu hi c dng:
{a1 ... an ($ b1) ... ($ bm) ( p1 ... pk) }
trong pi, i =1, ..., k l mt trong cc dng:
R(c1, c2, ..., cr), ngha l cc b c1, c2, ..., cr thuc quan h R; cj hoc l cc gi tr a,
hoc cc gi tr b hoc l mt trc hng (literal);
c q d trong c v d l cc gi tr a hoc b hoc l trc hng; q l mt trong cc php so
snh <, , >, . Ch rng cc php = v l khng c tnh trong danh sch.
Thng thng, cu hi c biu din i dng bng (tableau). m t khi lng
bng, trc ht cn gi thit rng tp cc thuc tnh ca cc quan h ang quan st l
nh nhau. Cc thuc tnh c cng tn cc quan h khc nhau u c cng mt ngha
v cc thuc tnh c ngha khc nhau th phi mang tn khc nhau.
163/174

nh ngha bng
Bng c th c xem nh mt mng hai chiu v thm mt s iu kin rng buc.
Hng th nht ca bng l danh sch tt c cc thuc tnh. Mi thuc tnh tng ng
vi mt ct ca bng. Hng th hai gi l hng ch (summary) bao gm cc gi tr
rng (blank), cc k hiu phn bit (distinguished symbols) v hng. K hiu phn bit
thng c k hiu bng ch ci a (thng) biu din trong cu hi hi. Cc hng cn
li nhn cc k hiu a hoc trng hoc b, vi b l bin khng phn bit (nondistinguished
variable) hoc k hiu khng phn bit (nondisguished symbols). Cc hng ny biu
din cc hng thc ca cu hi hi di dng R(c1, c2, ..., ck) tc l xc nh cc b
trong tng quan h. Ti v tr ci trong ct l tng ng vi thuc tnh th i ca quan h,
v s l gi tr trng trong ct ca bng nu khng tng ng vi thuc tnh no ca
lc quan h R. Cc tn t c q d ca cu hi hi c xem l cc rng buc ca bng.
Ch bng i hi rng cng mt bin khng c php xut hin ng thi trn hai
ct khc nhau ca bng, cn bin phn bit khng xut hin hng ch ca ct .
Nh vy bng c th c din gii nh mt cu hi hi, tc l mt nh x t cc gi
tr ca cc bin quan h ln quan h. Quan h kt qu l quan h trn tp thuc tnh vi
cc k hiu phn bit v hng trn hng ch.
Gi T l mt bng v S l tp tt c cc k hiu xut hin trong T (tc l cc bin v
hng). Mt nh gi r cho T lin quan vi mi k hiu ca S l mt hng, sao cho nu
mt hng c S th r (c) = c.r i vi hng ch v cc hng khc ca T c th m rng
nh sau:
Gi w0 l hng ch ca T, w1...wn l cc hng cn li th r (wi) l b nhn c nh
thay th r (v) cho mi bin v xut hin trong wi. Bng c nh ngha l nh x t cc
trng thi vo cc quan h trn mt tp cc thuc tnh. Vy, nu T l mt bng, I l mt
trng thi th T(I) l mt quan h trn tp cc thuc tnh m cc thuc tnh l nhng
ct c gi tr khc trng trn hng ch, sao cho
T(I) = {r (w0) vi nh gi r (wi) I, 1 i n }.
Ch : Quy nh rng l bng rng. Bng ny biu din nh x mi trng thi vo quan
h rng.
Tnh tng ng ca bng
Hai bng T1 v T2 l tng ng, k hiu T1 T2 nu vi mi tnh trng I, T1(I)
= T2(I). Ni rng T1 cha trong T2, vit tt l T1 T2 nu vi mi I, T1(I) T2(I). Lu

164/174

rng iu kin cn nhng khng cho T1 T2 v T1 T2 l cc quan h c xc


nh bi T1 v T2 phi c cng lc ch (lc ch l tp hp cc thuc tnh biu
din hng u tin ca bng).
Biu din mt biu thc nh bng

Trong phn ny trnh by cch thc cu trc mt bng biu din mt biu thc
quan h bng cc php Chiu, Chn v Kt t nhin. Vic cu trc bng trc ht tin
hnh cho tng hng thc ca biu thc, sau t hp cc bng li thnh mt bng
chung. Cc quy tc thit lp bng T cho biu thc E c th hin quy nh sau:
(1) Nu E l lc quan h R th bng T i vi E ch c mt hng v hng ch, trong
:
(i) Nu A R th ti ct cho thuc tnh A ca T s c cng gi tr bin phn bit cho c
hng ch v hng :
(ii) Nu A R th gi tr ca ct ti hng ch l trng v ti hng l bin khng phn bit.
(2a) Gi s biu thc chn E c dng E1 : (A = C) v cu trc bng T1 cho biu thc
E1.
(i) Nu hng ch ca T1 c k hiu trng ti ct A th T =
(ii) Nu c mt hng c c ti A ca hng ch, th T = n c = c th T = T1.
(iii) Nu T1 c bin phn bit a ct A ca hng ch th bng T i vi E c cu trc
nh vic thay a bng c ti mi ch m a xut hin trong T1 (tc l cc gi tr a xut hin
trong ct a ca bng T1).
(2b) Gi s E l php chiu c dng E1 [X] v T1 l bng ca E1. Cu trc bng T cho
E bng cch xa tt c cc k hiu xut hin ti hng ch ca tt c cc ct khng xut
hin trong T. Cc bin phn bit trong nhng ct ny c thay bng bin khng phn
bit.
(2c) Gi s E l biu thc i s quan h cha php kt t nhin c dng E1 * E2 v T1,
T2 l cc bng tng ng ca E1 v E2. Gi S1 v S2 l cc k hiu ca T1 v T2. S1 v
S2 c cc tp hp ca bin khng phn bit ri nhau nhng cc bin phn bit l trng
nhau trn cc ct tng ng ca php kt ni.

165/174

(i) Nu T1 v T2 c mt s ct trng nhau nhng gi tr ca chng ti hng ch l nhng


hng s khc nhau T =
(ii) Nu cc v tr tng ng trong cc hng ch khng c cc hng phn bit th cc
hng ca bng T cho E c bao gm t hp ca cc hng thuc bng T1 v T2.
Hng ch ca T c cc ct ca hai bng, cc ct chung nhn cc gi tr:
(a) l hng c nu mt trong hai bng T1, T2 c hng c ti ct tng ng ca hng ch.
Trong trng hp ny chng ta s thay th mi gi tr ca cc bin phn bit trong ct
bng gi tr hng c.
(b) l bin phn bit a nu khng p dng c quy tc (a) nhng mt trong hai gi tr
ca T1 v T2 ti ct tng ng c gi tr l a hng ch.
(c) l k hiu trng trong nhng trng hp cn li.
Ch : Trong trng hp biu thc E cha php chn c dng E1 : (A = B) vi A v B
tn hai thuc tnh, khi ng nht cc gi tr bin phn bit trong hng ch ca T cho
c hai ct A v B. Trong ti liu ny ch trnh by trng hp php chn E1 : (A = c) vi
c l mt hng s.
Xt v d: Cho A, B v C l cc thuc tnh v gi s rng c biu thc quan h:
( ( R(AB) * S(BC) ) : (B = 0) ) [AC]
Theo quy tc (1) thit b lp bng cho lc R(AB) v lc S(BC) nh sau:
R A B

S B C

a1 a2 V

a2 a3

a1 a2

a2 a3

Theo quy tc (2c) bng cho php kt t nhin R(AB) * S(BC) t hai bng trn:
A B C
a1 a2 a3
a1 a2 b1
b2 a2 a3

166/174

V cui cng, theo quy tc (2b), bng cho php chn ri chiu ((R(AB) * S(BC)) :
(B=0)) [AC] l:
A B C
a1

a3

a1 0 b1
b2 0 a3
Kim tra tnh tng ng ca bng
Vn t ra lm th no ti thiu ha s hng ca mt bng m vn tng ng
vi bng xut pht. Nh trn nu, cn thit phi nh x cc hng ca bng xut pht
ln mt bng khc c s hng t hn (v d T1 T2) sao cho T2 T1 vi iu kin:
Cc bng phi c cng lc ch (xc nh trn cng mt tp thuc tnh) v c
cng bin phnbit trn cng mt v tr ca bng.
Vi mi php gn quan h cho bin quan h ti cc hng ca bng, quan h sinh ra
nh T1 phi l tp con ca quan h sinh ra nh T2.
kim tra cc bng trong qu trnh bin i liu c tng ng vi nhau khng,
trc ht cn thm khi nim nh x hng - hng (Row - Row Mapping) c gi l nh
x cun (Contaiment Mapping).
Gi T1 v T2 l hai bng vi cc tp k hiu tng ng l S1 v S2. Mt ng cu
(Homomorphism) l mt nh x y : S1 S2 sao cho:
(i) Nu c l mt hng s th y (c) = c.
(ii) Nu a l mt bin phn bit th y (a) hoc l bin phnbit hoc l mt hng s xut
hin trong ct tng ng ca hng ch ca T2.
(iii) Nu w l mt hng ca T1 th y (W) l mt hng ca T2.
Nh vy c th nh x cc hng ca T2 ln cc phn t ca mt trng thi I v v th
ng cu y s cho mt nh x t cc hng ca T1 ln I. Do T2 (I) T1(I) vi mi I, t
c T2 T1.
Ngc li cng hon ton ng, nu T2 T1 suy ra c:
T2(I) T1(I).
167/174

C th hnh thc ha di nh l sau y:


nh l 8.1:
Gi T 1 v T 2 l hai bng vi tp cc k hiu tng ng l S 1 v S 2 . T 2 T 1 khi
v ch khi chng c cng lc ch v c mt ng cu y : S 1 S 2 .
nh x cun
nh x cun l nh x t cc hng ca bng ny ln cc hng ca bng khc m bo
ton bin phn bit v cc hng s nhng khng nh x mt k hiu ln hai k hiu phn
bit. Mt cch hnh thc c th ni rng, nu T1, T2 l hai bng, q l nh x t cc hng
ca T1 ln cc hng ca T2, q c gi l nh x cun nu:
(a) Vi mi hng i ca T1, nu hng i c bin phn bit ct A th hng q (i) ca T2
cng c bin phn bit hoc hng s ct A.
(b) Nu hng i ca T1 c hng s c ct A th hng q (i) c c ct A.
(c) Nu hng i v j ca T1 c cng mt bin khng phn bit ct A th hng q (i) v
q (j) c cng mt k hiu ct . K hiu c th l hng s, bin phn bit hoc bin
khng phn bit. ( Ch rng, vn c th q (i) = q (j)). T c nh l sau:
nh l 8.2 :
T2 T1 nu v ch nu chng xc nh trn cng mt lc ch v tn ti mt nh x
cun q t T1 ln T2.
Chng minh: (Nu) Gi y : S1 S2 l nh x k hiu - k hiu sao cho nu k hiu d
xut hin ct A ca hng r ca T1 v k hiu d xut hin ct A ca hng q (r) ca
hng T2 th y (d) = d. nh x y l ph hp nh iu kin (c). iu kin (i) - (iii) cho y
d dng suy trc tip. Tht vy, (a) ko theo (ii), (b) ko theo (i) v (iii) c suy ra t
nh ngha ca y v q . Do vy y l mt ng cu. Theo nh l 8.1 th T2 T1.
(Ch nu): T nh l 8.1, c mt ng cu y : S1 S2 tha (i) - (iii). Tn ti nh x
t cc hng ca T2 tha (c) suy ra t (iii), (i) v (ii). T ko theo (a) v (b).
V d: Cho biu thc (AB * BC)[AB], c bng:
A B C
a1 a2

168/174

T1 = w1 a1 a2 b1
w2 b2 a2 a3
Biu thc AB trn cc thuc tnh A, B v C c bng:
A B C
T2=

a1 a2
w3 a1 a2 b1

Theo chiu xui, nh x c hai hng w1 v w2 ln w3 l nh x cun. ng cu l:


Trong T1 Trong T2
a1

a1

a2

a2

b1

b1

b2

a1

b3

b1

Theo chiu ngc li, nh x w3 ln w1 v chnh ta nhn thy r rng rng nh x l


ng.
Do vy AB v (AB*AB) [ AB ] l tng ng.
V d:
E1 = AB * BC v E2 = (ABC) * ((BC) : (C=0 ))
Bng tng ng ca E1, E2 l:
A B C

A B C

a1 a2 a3

a1 a2 0

T1 = w1 a1 a2 b1 T2 = w4 a1 a2 0
w2

a1 b2 a3 W5

w3

b3 a2 a3

b1 a2 0

169/174

Do vy T2 T1 v c th to mt nh x cun chuyn w1, w2 v w3 ln w4. C th


chn nh x w3 ln w5 nu mun. Chiu ngc li khng tn ti nh x cun v hng s
0 khng th nh x ln bin. Do T1 T2.
T c nh l sau y.
nh l 8.3:
Nu T 1 v T 2 l hai bng tng ng v khng bng no trong hai bng l
tng ng vi mt bng khc c s dng t hn th tn ti mt tng ng 1-1 ca cc
hng thuc T 1 i vi cc hng thuc T2 . l nh x cun c hai chiu.
Ti thiu ha bng
Cho T0 l bng xut pht. Tm l bng tng ng vi s hng ti thiu nh c th.
Cc hng ca bng tng ng Tm phi l mt tp con ca cc hng thuc T0 (k c
vic t tn li cc k hiu). C nh l sau y:
nh l 8.4 :
Nu T 0 l mt bng, lun c th thit lp c mt bng khc tng ng v c s
hng l ti thiu c bin i t T 0 nh xa i khng hoc mt s hng.
H qu :
Mi bng vi s hng ti thiu tng ng vi bng cho trc u l mt (k c
vic t tn li cc k hiu)
T nh l 8.4 gi mt th tc tng qut tm bng ti thiu. Trc ht tm nh x
c th nh x tt c cc hng ln mt tp con ca cc hng. Cn ch xc nh cc
nh x hng ch ln hng ch (tc l ng nht trn cc bin phn bit) v bo ton
cc rng buc.
Vn tm nh x c s hng t nht l mt bi ton NP - y nhng s lng
hng mt bng trong thc t l nh cho nn khng phi lun lun l vn tht kh
khn.

170/174

Tham gia ng gp
Ti liu: Gio trnh c s d liu
Bin tp bi: Ng Trn Thanh Tho
URL: http://voer.edu.vn/c/3eaa132c
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Cc khi nim c bn
Cc tc gi: Ng Trn Thanh Tho
URL: http://www.voer.edu.vn/m/0bc507c9
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Nhng khi nim c bn
Cc tc gi: Ng Trn Thanh Tho
URL: http://www.voer.edu.vn/m/17d2f805
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Nhng cch tip cn mt c s d liu
Cc tc gi: Ng Trn Thanh Tho
URL: http://www.voer.edu.vn/m/aafc3b70
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: M hnh d liu quan h ca e.f.codd
Cc tc gi: Ng Trn Thanh Tho
URL: http://www.voer.edu.vn/m/1783ba73
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Rng buc ton vn
Cc tc gi: Ng Trn Thanh Tho
URL: http://www.voer.edu.vn/m/5d5ea197
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Rng buc ton vn cc loi
Cc tc gi: Ng Trn Thanh Tho
URL: http://www.voer.edu.vn/m/f50fe2aa

171/174

Giy php: http://creativecommons.org/licenses/by/3.0/


Module: Ngn ng i s quan h
Cc tc gi: Ng Trn Thanh Tho
URL: http://www.voer.edu.vn/m/5b211420
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Ngn ng i s quan h (tip theo)
Cc tc gi: Ng Trn Thanh Tho
URL: http://www.voer.edu.vn/m/caee7f61
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Ngn ng truy vn c s d liu SQL
Cc tc gi: Ng Trn Thanh Tho
URL: http://www.voer.edu.vn/m/dd774834
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Ngn ng truy vn CSDL SQL (tip theo)
Cc tc gi: Ng Trn Thanh Tho
URL: http://www.voer.edu.vn/m/f024e7e6
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Ngn ng tn t
Cc tc gi: Ng Trn Thanh Tho
URL: http://www.voer.edu.vn/m/44860fdb
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Ngn ng tn t (tip theo)
Cc tc gi: Ng Trn Thanh Tho
URL: http://www.voer.edu.vn/m/557735f3
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Ti u ha cu hi
Cc tc gi: Ng Trn Thanh Tho
URL: http://www.voer.edu.vn/m/102467c8
Giy php: http://creativecommons.org/licenses/by/3.0/

172/174

Module: Ti u ha cu hi (tip theo)


Cc tc gi: Ng Trn Thanh Tho
URL: http://www.voer.edu.vn/m/14063540
Giy php: http://creativecommons.org/licenses/by/3.0/

173/174

Chng trnh Th vin Hc liu M Vit Nam


Chng trnh Th vin Hc liu M Vit Nam (Vietnam Open Educational Resources
VOER) c h tr bi Qu Vit Nam. Mc tiu ca chng trnh l xy dng kho
Ti nguyn gio dc M min ph ca ngi Vit v cho ngi Vit, c ni dung phong
ph. Cc ni dung u tun th Giy php Creative Commons Attribution (CC-by) 4.0
do cc ni dung u c th c s dng, ti s dng v truy nhp min ph trc
ht trong trong mi trng ging dy, hc tp v nghin cu sau cho ton x hi.
Vi s h tr ca Qu Vit Nam, Th vin Hc liu M Vit Nam (VOER) tr thnh
mt cng thng tin chnh cho cc sinh vin v ging vin trong v ngoi Vit Nam. Mi
ngy c hng chc nghn lt truy cp VOER (www.voer.edu.vn) nghin cu, hc
tp v ti ti liu ging dy v. Vi hng chc nghn module kin thc t hng nghn
tc gi khc nhau ng gp, Th Vin Hc liu M Vit Nam l mt kho tng ti liu
khng l, ni dung phong ph phc v cho tt c cc nhu cu hc tp, nghin cu ca
c gi.
Ngun ti liu m phong ph c trn VOER c c l do s chia s t nguyn ca cc
tc gi trong v ngoi nc. Qu trnh chia s ti liu trn VOER tr ln d dng nh
m 1, 2, 3 nh vo sc mnh ca nn tng Hanoi Spring.
Hanoi Spring l mt nn tng cng ngh tin tin c thit k cho php cng chng d
dng chia s ti liu ging dy, hc tp cng nh ch ng pht trin chng trnh ging
dy da trn khi nim v hc liu m (OCW) v ti nguyn gio dc m (OER) . Khi
nim chia s tri thc c tnh cch mng c khi xng v pht trin tin phong
bi i hc MIT v i hc Rice Hoa K trong vng mt thp k qua. K t , phong
tro Ti nguyn Gio dc M pht trin nhanh chng, c UNESCO h tr v c
chp nhn nh mt chng trnh chnh thc nhiu nc trn th gii.

174/174

You might also like