Professional Documents
Culture Documents
Bin tp bi:
Ng Trn Thanh Tho
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
nh ngha mt CSDL.
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
5/174
6/174
Cp quyn u tin cho tng ngi s dng (ngi qun tr CSDL thc hin).
7/174
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 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
Cp quyn u tin cho tng ngi s dng (ngi qun tr CSDL thc hin).
9/174
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
11/174
12/174
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:
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
15/174
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.
17/174
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.
19/174
20/174
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
23/174
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
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 :
-
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
29/174
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)
CNTK4)
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,
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,
CNTK4)
32/174
33/174
34/174
36/174
Xc nh tm nh hng ca RBTV:
Thm
Sa Xa
Thm Sa
HAN
CHITIT_H +
Xa
+ (S-chng-loi-mt-hng) +
-
Thm Sa
HAN
CHITIT_H +
Xa
+ (Tng-tr-gi) +
+ (Tr-gi)
Thm
Sa Xa
- (*) +
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
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.
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
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
42/174
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
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) -
- (*) +
- (*) -
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
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.
47/174
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.
49/174
50/174
51/174
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
53/174
54/174
55/174
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
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.
Phi Chc-danh
Lng
MV
2.500.000 10
59/174
101
Hong Th Xun
103
ng Ngc Chin N
105
Phan K Nhn
Nam Li xe
1.000.000 10
700.000
10
Phi Chc-danh
Lng
MV
210
Nguyn Th Cao N
101
Hong Th Xun N
221
Hu Ngc
Nam Ph phng
1.000.000 30
233
Hong Thao
1.000.000 30
Phi Chc-danh
Lng
MV
100
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
1.000.000 30
2.500.000 10
1.000.000 10
700.000
10
MV
100
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
Phi Chc-danh
Hong Th Xun N
Lng
MV
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
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
S2
Vt
S3
S3
inh
64/174
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
(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
Loi
10002
10003
10022
10070
10071
Hnh chnh
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
H-lt
Tn
10002
1000028 Trn T
Hi
Nam 05/09/40
01003 08
01/12/96
10002
Sn
Nam 04/08/57
01003 05
01/12/97
10002
Nam 20/04/61
01004 10
01/01/97
10002
01004 10
01/01/97
10002
1000065 Hunh Th
10003
Hoa
06/04/61
01004 07
01/01/97
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
Tm
Nam 18/11/66
01010 08
01/02/96
10022
Nam 19/11/47
01010 11
01/10/96
10022
01003 05
01/12/95
10022
01004 12
01/12/95
22/07/55
Loi Tn-loi-hnh
10002
10003
Hnh chnh
10022
Hnh chnh
10070
Hch ton c lp
10071
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.
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
10002
SN hon ton
10003
Hnh chnh
70/174
10022
Hnh chnh
10070
10071
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
10002
SN hon ton
10003
Hnh chnh
10022
Hnh chnh
10070
10071
10090
Null Null
72/174
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
10002
SN hon ton
10003
Hnh chnh
10022
Hnh chnh
10070
10071
10090
Null Null
Null
Null
Null 6
C quan ng
74/174
75/174
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
Loc
10
Accounting
Dallas
200 10.000
30
Research
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
40
Sales
Boston
50
Manufacturing Houston
130.000
60
Shipping
90.000
Houston
280.000
a im
Kinh ph
10
Accounting
Dallas
10.000
30
Research
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
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
Job
101
Smith
40
109
Allen
40
220
40
Job
100
Wilson
Clrk
1.700
10
103
Reed
Anlt
3.500
30
105
30
110
Turner
Clrk
1.800
50
200
Chen
Mngr 2.900
10
210
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
Job
103
Reed
Anlt
3.500
105
Watson
109
Allen
210
220
30
Mngr 4.500 0
30
40
50
40
Job
100
Wilson Clrk
1.700
105
10
30
84/174
85/174
Job
200
Chen
Mngr 2.900
10
100
Wilson
Clrk
10
105
30
103
Reed
3.500
30
210
50
110
Turner
50
Anlt
Clrk
1.700
1.800
Job
86/174
200
Chen
105
210
Mngr 2.900
10
30
50
4.500
40
4.200
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
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
89/174
Kt qu l bng:
EmpNo Name
Job
103
Reed
Anlt
3.500
105
30
30
Allen 3.800
90/174
Job
103
Reed
Anlt
3.500
105
Watson
Mngr 4.500 0
30
30
91/174
109
Allen
40
200
Chen
Mngr 2.900
10
210
50
215
60
220
40
3650
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
200
Chen
Mngr 2.900
10
105
Watson
Mngr 4.500 0
30
220
40
210
50
215
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
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:
95/174
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
97/174
Loc
10
Accounting
Dallas
200 10.000
20
Marketing
San Diego
30
Research
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
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.
101/174
EmpN o Name
Job
200
Chen
Mngr 2.900
105
10
30
109
Allen
40
210
50
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
200
Chen
Mngr 3.190
105
10
30
109
Allen
40
210
50
103/174
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
100
Wilson
Clrk 1.700
10
101
Smith
40
103
Reed
Anlt 3.500
30
110
Turner
Clrk 1.800
50
213
60
214
Simpson
60
Drvr 825
104/174
215
Di Salvo
Spvr 2.700
220
Schwartz
60
105/174
107/174
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
109/174
110/174
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],
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 .
116/174
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
119/174
120/174
121/174
122/174
123/174
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
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
F1 F2 F1 F2 F1 F2 F1 F 2
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 .
130/174
131/174
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
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
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
136/174
138/174
139/174
140/174
143/174
144/174
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
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].
148/174
151/174
152/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
155/174
156/174
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
159/174
161/174
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
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
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
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
a1
a2
a2
b1
b1
b2
a1
b3
b1
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
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
172/174
173/174
174/174