M t ti u h th ng ki m soỏt toàn v n ng ngh a cú hai thành ph n chớnh: m t ngụn ng cho phộp di n t và thao tỏc cỏc phỏn đoỏn toàn v n, và m t đnh ch ch u trỏch nhi m th c hi n cỏc hành đ ng c th nh m ộp bu c tớnh toàn ven khi cú c p nh t.
a) Cỏc lo i ràng bu c:B ng m t ngụn ng c p cao, ng i qu n tr c s d li u cú th thi t l p đ c cỏc ràng bu c toàn v n, khi t o quan h ho c khi quan h đó cú d li u, cú chung m t cỳ phỏp. Ngụn ng này cho phộp mụ t , ghi nh n ho c lo i b ràng bu c toàn v n. Trong cỏc h CSDL quan h , ràng bu c toàn v n đ c đnh ngh a nh là cỏc phỏn đoỏn. M t phỏn đoỏn (Assertion) là m t bi u th c đ c bi t đ c mụ t b ng phộp tớnh quan h b , trong đú m i bi n đ c l ng t húa v i m i (∀) ho c t n t i (∃). Vỡ v y, m t phỏn đoỏn cú th đ c xem nh là m t l ng t húa cõu truy v n, mang giỏ tr đỳng ho c sai cho m i b trong tớch cỏc c a cỏc quan h đ c xỏc đnh b i cỏc bi n b . Cú ba lo i ràng bu c toàn v n: ràng bu c ti n đnh, ràng bu c ti n d ch ho c ràng bu c t ng quỏt.
Xột cỏc qun h :
EMP(ENO, ENAME, TITLE)
PROJ(PNO, PNAME, BUDGET)
ASG(ENO, PNO, RESP, DUR)
Ràng bu c ti n đnh (Predefined Constraint): Ràng bu c ti n đnh đnh ngh a d a trờn cỏc t khúa đ n gi n đ di n t chớnh xỏc cỏc ràng bu c trong mụ hỡnh quan h , ch ng h n nh
72
ràng bu c giỏ tr c a thu c tớnh khụng nh n giỏ tr null, ho c khúa duy nh t, khúa ngo i ho c ph thu c hàm....
Vớ d 2.4: Ràng bu c ti n đnh
• Thu c tớnh khụng nh n giỏ tr null: Mó s nhõn viờn trong quan h EMP khụng đ c nh n giỏ tr null.
ENO NOT NULL IN EMP
• Khúa duy nh t: C p (ENO, PNO) là khúa duy nh t c a quan h ASG.
(ENO, PNO) UNIQUE IN ASG
• Khúa ngo i: Mó d ỏn PNO trong quan h ASG là khúa ngo i t ng ng v i khúa chớnh PNO c a quan h PROJ. Núi cỏch khỏc, m t d ỏn đ c tham chi u trong quan h ASG ph i t n t i trong quan h PROJ.
PNO IN ASG REFERENCES PNO IN PROJ
• Ph thu c hàm: Tờn nhõn viờn ph thu c hàm Mó nhõn viờn trong quan h EMP
ENO IN EMP DETERMINES ENAME
Ràng bu c ti n d ch (Precompiled Constraint): Ràng bu c ti n d ch mụ t cỏc đi u ki n mà cỏc b trong m t quan h ph i đ c th a b i m t ki u c p nh t đó chọ Ki u c p nh t cú th là INSERT, DELETE ho c MODIFY cho phộp gi i h n ki m soỏt ràng bu c. xỏc đnh cỏc b c n c p nh t trong đnh ngh a ràng bu c, ng i ta đ a ra hai bi n NEW và OLD, t ng ng bi n thiờn trờn cỏc b m i (đ c chốn vào) và cỏc b c (đ c xúa b ). Cỳ phỏp ràng bu c ti n d ch đ c bi u di n b i cõu l nh sau:
CHECK ON <quan h > WHEN <ki u c p nh t> (<l ng t húa trờn quan h >)
• Ràng bu c mi n: Ngõn sỏch c a m t d ỏn trong kho ng t 500000 đ n 1000000. CHECK ON PROJ (BUDGET ≥ 500000 AND BUDGET ≤ 1000000)
• Ràng bu c mi n khi xúa: Xoỏ cỏc b cú ngõn sỏch khụng: CHECK ON PROJ WHEN DELETE (BUDGET = 0)
• Ràng bu c thay đ i: Ngõn sỏch c a d ỏn ch đ c t ng khi: CHECK ON PROJ (NEW. BUDGET > OLD. BUDGET
AND NEW. PNO = OLD. PNO)
Ràng bu c t ng quỏt (General Constraint): Ràng bu c t ng quỏt là cỏc cụng th c c a
phộp tớnh quan h b trong đú t t c cỏc bi n đ u đ c l ng t húạ H th ng CSDL ph i đ m b o r ng nh ng cụng th c này ph i luụn đỳng. Ràng bu c t ng quỏt chu n xỏc h n ràng bu c ti n d ch vỡ cú th liờn quan đ n nhi u quan h . Cú th s d ng ớt nh t ba ràng bu c ti n d ch đ di n t m t ràng bu c t ng quỏt trờn ba quan h . M t ràng bu c t ng quỏt cú th đ c di n t v i cỳ phỏp nh sau:
CHECK ON danh sỏch <tờn bi n> : <tờn quan h >, (<l ng t húa>)
Vớ d 2.5: Ràng bu c t ng quỏt.
• Ph thu c hàm: Tờn nhõn viờn ph thu c hàm Mó nhõn viờn trong quan h EMP:
CHECK ON e1:EMP, e2:EMP
(e1.ENAME = e2.ENAME IF e1.ENO = e2.ENO)
• Ràng bu c cú kốm hàm g p nhúm: T ng th i gian c a cỏc nhõn viờn trong d ỏn CAD/CAM ph i nh h n 100
73
IF j.PNAME = “CAD/CAM”).
b) ẫp bu c th c thi ràng bu c:ẫp bu c th c thi ràng bu c toàn v n ngh a là th c hi n vi c
lo i b nh ng ch ng trỡnh c p nh t vi ph m m t s ràng bu c nào đú. M t ràng bu c b vi ph m do cỏc hành đ ng c p nh t ho c do cỏc phỏn đoỏn ràng bu c b saị Cú hai ph ng phỏp c b n cho phộp lo i b cỏc trỡnh c p nh t phỏt sinh mõu thu n.
Ph ng phỏp phỏt hi n mõu thu n (khụng nh t quỏn): M t thao tỏc c p nh t u đ c thi hành s bi n đ i CSDL t tr ng thỏi D sang tr ng thỏi Du..Thu t toỏn ộp bu c ph i kh ng đnh r ng m i ràng bu c liờn quan v n đỳng trong Du b ng cỏch ỏp d ng cỏc ràng bu c này đ ki m trạ N u tr ng thỏi Du khụng nh t quỏn, h qu n tr CSDL s chuy n sang m t tr ng thỏi Du’ khỏc b ng cỏch hi u ch nh l i Du ho c ph i khụi ph c l i tr ng thỏi D. Vỡ nh ng ki m tra này đ c ỏp d ng sau khi tr ng thỏi c a CSDL đó thay đ i nờn đ c g i là ki m tra sau (Posttest). Ph ng phỏp này s khụng hi u qu n u h th ng ph n h i l i r t nhi u thao tỏc khi ràng bu c b vi ph m.
Ph ng phỏp ng n ch n mõu thu n: M t thao tỏc ch đ c th c hi n n u nú chuy n CSDL sang m t tr ng thỏi nh t quỏn khỏc. Cỏc b c n c p nh t đó cú s n (trong tr ng h p chốn) ho c ph i truy nh p trong CSDL (tr ng h p xúa ho c hi u ch nh). Thu t toỏn ộp bu c xỏc nh n r ng t t c cỏc ràng bu c cú liờn đ i đ u đỳng sau khi c p nh t cỏc b . Núi chung, nú đ c th c hi n b ng cỏch ỏp d ng cỏc ki m tra cú đ c t cỏc ràng bu c cho cỏc b . Nh v y, cỏc ki m tra đ c ỏp d ng tr c khi tr ng thỏi c a CSDL b thay đ i, nờn g i là cỏc ki m tra tr c (Pretest). Ph ng phỏp ng n ch n này hi u qu h n ph ng phỏp phỏt hi n vỡ khụng bao gi ph i h i l i cỏc thao tỏc c p nh t do ràng bu c b vi ph m.
Thu t toỏn hi u ch nh truy v n là m t vớ d v ph ng phỏp ng n ch n, cú hi u qu đ c bi t trong vi c ộp bu c cỏc ràng bu c mi n bi n thiờn. Nú đ a thờm l ng t húa phỏn đoỏn vào l ng t húa truy v n b ng toỏn t AND, vỡ th cõu truy v n đ c hi u ch nh cú th đ c ộp bu c toàn v n.
Vớ d 2.6: T ng ngõn sỏch d ỏn CAD/CAM lờn 10%:
UPDATE PROJ
SET BUDGET = BUDGET * 1.1
WHERE PNAME = “CAD/CAM”
Cõu truy v n trờn s đ c bi n đ i thành cõu truy v n sau, cú thờm đi u ki n nh m ộp bu c mi n giỏ tr
UPDATE PROJ
SET BUDGET = BUDGET * 1.1
WHERE PNAME = “CAD/CAM”
AND NEW. BUDGET ≥ 500000
AND NEW. BUDGET ≤ 1000000
Thu t toỏn hi u ch nh truy v n đ n gi n, t o ra cỏc ki m tra tr c vào th i đi m thi hành b ng cỏch l y h i cỏc v t phỏn đoỏn v i cỏc v t c p nh t c a m i ch th c a giao d ch. Tuy nhiờn, thu t toỏn ch đ c ỏp d ng cho cỏc cụng th c phộp tớnh b và cú th mụ t nh sau: Xột phỏn đoỏn (∀x ∈ R) F(x) trong đú R là quan h , x là bi n b c a R. Thao tỏc c p nh t c a R cú th vi t nh sau: (∀x ∈ R) Q(x) ⇒ Update(x), Trong đú Q(x) là bi u th c phộp tớnh b cú bi n là x.. Núi ng n g n hi u ch nh truy v n c n sinh ra thao tỏc c p nh t (∀x
74
Vớ d 2.7: Phỏn đoỏn cho khoỏ ngo i
∀r ∈ ASG, ∃j ∈ PROJ: g.PNO = j.PNO
Khụng th đ c x lý b i phộp hi u ch nh truy v n vỡ bi n j khụng đ c l ng t hoỏ ph d ng.
cú th x lý cỏc phỏn đoỏn t ng quỏt, s ki m tra tr c c n ph i đ q c xõy d ng khi đnh ngh a phỏn đoỏn và nú đ c th c hi n khi c p nh t. Ph ng phỏp này cú th đnh ngh a phỏn đoỏn đa quan h , đ n bi n và cú th g p nhúm b ng cỏch thay th cỏc bi n b trong phỏn đoỏn b ng cỏc t m t b đ c c p nh t. Tuy nhiờn ph ng phỏp này khú đ c s d ng trong th c t , vỡ .cú nhi u h n ch khi th c hi n cỏc c p nh t.
nh ngh a cỏc phỏn đoỏn biờn d ch d a trờn khỏi ni m quan h vi phõn (Differential Relation). Goi u là m t c p nh t trờn quan h R. R+ và R- là cỏc quan h vi phõn c a R do u, v i R+ ch a cỏc b đ c chốn vào R và R- là quan h ch a cỏc b b xoỏ kh i R. N u u là thao tỏc chốn, khi đú R- s r ng. N u u là thao tỏc xoỏ thỡ quan h R+ c ng là r ng. N u u là thao tỏc s a đ i, quan h R sau khi s a đ i s là R+∪ ( R – R-). M t phỏn đoỏn biờn d ch là b ba (R, T, C). Trong đú R là m t quan h , T là ki u c p nh t và C là m t phỏn đoỏn bi n thiờn trờn cỏc quan h vi phõn cú m t trong ki u c p nh t T. Khi m t ràng bu c I đ c đnh ngh a, m t t p phỏn đoỏn biờn d ch cú th đ c sinh ra cho cỏc quan h đ c I tỏc đ ng. M i khi m t quan h cú trong I đ c c p nh t b i m t ch ng trỡnh u, cỏc phỏn đoỏn biờn d ch đ c đnh ngh a trờn I cho ki u c p nh t u c n ph i đ c th m trạ Cú hai u đi m v hi u n ng. M t là s l ng cỏc phỏn đoỏn c n c ng ch th p t i đa, vỡ ch cú cỏc phỏn đoỏn thu c ki u u m i đ c ki m trạ u đi m th hai là chi phớ c ng ch thi hành m t phỏn đoỏn biờn d ch nh h n chi phớ c ng ch I, vỡ cỏc quan h vi phõn nh h n nhi u so v i cỏc quan h c s .
Phỏn đoỏn biờn d ch cú th thu đ c b ng cỏch ỏp d ng cỏc quy t c bi n đ i cho phỏn đoỏn g c. Cỏc quy t c này d a trờn phõn tớch ng ngh a c a ph n đoỏn và cỏc hoỏn v l ng t . Cho phỏp thay th cỏc quan h c s b ng cỏc quan h vi phõn, vỡ cỏc phỏn đoỏn biờn d ch đ n gi n h n phỏn đoỏn g c. Quỏ trỡnh t o ra phỏn đoỏn biờn d ch g i là quỏ trỡnh đ n gi n hoỏ (Simplỡtication).
Vớ d 2.8: Xột bi u th c ràng bu c khoỏ ngo i:
∀r ∈ ASG, ∃j ∈ PROJ: g.PNO = j.PNO
Phỏn đoỏn biờn d ch đi kốm v i ràng bu c này s là:
(ASG, INSERT, C1), (PROJ, DELETE, C2) và (PROJ, MODIFY, C3). Trong đú: C1 là: ∀NEW ∈ ASG, ∃j ∈ PROJ: NEW.PNO = j.PNO C2 là: ∀g ∈ ASG, ∀OLD ∈ PROJ- : NEW.PNO ≠ j.PNO C3 là: ∀g ∈ ASG, ∀OLD ∈ PROJ, ∃NEW ∈ PROJ+.:
g.PNO ≠ OLD.PNO OR OLD = NEW.PNỌ
Thao tỏc xoỏ trờn quan h ASG khụng gõy ra b t k m t k ờm tra nàọ
Cú 3 lo i phỏn đoỏn: phỏn đoỏn đ n quan h , phỏn đoỏn đa quan h và phỏn đoỏn cú cỏc hàm g p nhúm. Thu t toỏn c ng ch s d ng cỏc phỏn đoỏn biờn d ch và đ c chuyờn bi t hoỏ theo t ng lo i phỏn đoỏn. M t ch ng trỡnh c p nh t s hi u ch nh t t c cỏc b c a quan
75 h R, tho m t l ng t hoỏ nào đú. Thu t toỏn c ng ch đ c th c hi n trong hai b c nh sau:
• B c 1: T o cỏc quan h vi phõn R+ và R-. t quan h R.
• B c 2: Truy xu t cỏc b trong R+ và R- , l y cỏc b khụng tho cỏc ph n đoỏn biờn d ch. N u khụng truy xu t đ c b nào, phỏn đoỏn s cú giỏ tr .
Vớ d 2.9: Gi s cú thao tỏc xoỏ trờn PROJ. C ng ch (PR , DELETE, C2) t o ra cỏc cõu l nh sau:
Result ← Truy xu t t t c cỏc b c a PROJ trong đú ơ (C2) đỳng. N u Result r ng, phỏn đoỏn đó đ c xỏc nh n b i phộp c p nh t khỏc..