10 Topic14 IntegrityConstraint

Embed Size (px)

DESCRIPTION

10 Topic14 IntegrityConstraint Tec

Citation preview

PHP

Rng buc ton vn11H thng c s d liu dng cc quy tc (rule) m bo d liu thc t c lu tr trong n.V d :H thng c s d liu ch m bo d liu c th ng.D liu cn phi c bin dch vi cc Rng buc ton vn.Ton Vn D LiuRBTV l cc quy lut m bo d liu chnh xc v nht qun.

Ton vn d liu c trin khai nhiu mc khc nhau : rng buc(RB) min, RB chuyn tip, RB thc th, RBTV tham chiu, RBTV c s d liu, RBTV giao tc.Rng buc ton vnThc hin tan vn d liu mc vt l.

C s d liu quan h h tr :Tan vn khai bo (Declarative Integrity)Ton vn th tc (Procedural Integrity)Trin Khai Ton Vn D LiuMin : tp gi tr c th c ca 1 thuc tnh.RB min : quy tc xc nh cc gi tr hp l ca thuc tnh.Min Kiu d liu.Gi tr unknown v nonexistent.Xc nh tp gi tr biu din cho 1 min gi tr.Rng Buc MinSQL Server h tr trin khai RB min thng qua kiu d liu do ngi dng nh ngha (user define data types = UDDTs).UDDT c to ra thng qua SQL SEM, hay sp_addtype.UDDT gm : quy tc v gi tr mc nh.S dng bng tra cu v kha ngoiTrin khai RB minnh ngha cc trng thi 1 b duyt qua 1 cch hp l.Trng thi c nh ngha thng qua 1 thuc tnh n.Trng thi c nh ngha thng qua nhiu thuc tnh hay nhiu quan h.Rng Buc Chuyn TipThc thi triggerTrin khai RB chuyn tipRng buc CSDLL hnh thc ph bin nht ca rng buc tan vn.

Tham chiu n nhiu hn 1 quan h

Quy trnh cng vic Rng buc csdlRng buc giao tcGiao tc l nhm cc hnh ng thao tc c s d liu.

Quy trnh cng vic rng buc giao tc.Trin khai RB giao tc v RB CSDLTriggerm bo ton vn cho cc thc th c m hnh bi h thng.

V d, mc n gin nht, kha chnh l mt Rng buc thc th, m bo mi thc th l duy nht

Rng buc thc th nh hng n mt thuc tnh, nhiu thuc tnh, hoc ton b quan h.Ton vn thc th - Entity Integrity1212Ton vn cho mt thuc tnh n:Vic xc nh thuc tnh l da vo mt min gi tr ca nThuc tnh k tha RBTV c xc nh cho min gi tr ny

V d: OrderDate c min l min ca TransactionDate: tt c nhng ngy trong khong ngy thnh lp doanh nghip n ngy hin hnh.Nhng c th xc nh thm l: mt ngy OrderDate phi nm trong nm hin hnh.Tuy nhin, OrderDate khng c php cha nhng ngy thuc tng lai v chng khng thuc min thuc tnh.

Ton vn thc th - Entity Integrity1313Ton vn a thuc tnh:Ton vn thc th cng c th nh hng n nhiu thuc tnh.

V d: Yu cu: ShippingDate >= OrderDateThuc tnh Status khng cho php gi tr preferred nu dng d liu Customer khng c ghi t nht l 1 nm.Ton vn thc th - Entity Integrity1414Vi mi trng n:Hu ht RBTV l v kiu d liu.Jet database engine v SQL server cung cp rt nhiu kiu d liuSQL server cng cho php khai bo cc trng da trn UDDTsSQL server cho php gi tr null, c xc nh bng cch click chn Null/ Not Null khi to mt trng, Jet database engine xc nh bng trng RequiredSQL server s dng RB CHECK xc nh chui rng c c cho php trong cc trng text hay khng, Jet database engine th s dng c AllowZeroLength.SQL server thit lp thuc tnh Default khi to ra mt trng hoc kt ni gi tr mc nh ca h thng vi trng c m t theo UDDTsThc thi ton vn thc th1515Vi mi trng n: Jet database engine cung cp 2 thuc tnh trng l ValidationRule v ValidationText, SQL server cho php khai bo RB CHECK thc hin RB thc th ln mi trng.C th c nhiu RB CHECK cho mt trng trong SQL server.Nhng mt trng trong Jet database engine ch c 1 thuc tnh ValidationRule.Thc thi ton vn thc th1616Vi nhiu trng, v ton b bng:Vic thc hin RB thc th tng t nh vi mt trng n.Hu ht RBTV thc th u yu cu mi th hin ca thc th l duy nht (qui tc ton vn thc th). C Jet v SQL u cung cp RB duy nht thng qua index.C th nh ngha tp cc trng l unique (c th cha gi tr Null) hoc l kha chnh. Nhng ch c 1 kha chnh cho 1 bng, v c th c nhiu unique.Jet database engine cung cp thuc tnh IgnoreNull ngn nhng dng d liu cha gi tr Null ct index c insert vo. SQL khng c tnh nng ny.Thc thi ton vn thc th1717Vi nhiu trng, v ton b bng:C Jet database engine v SQL server u khng bt buc phi nh ngha kha chnh cho mt bng.SQL server cung cp mt k thut cho ton vn thc th l Trigger (c thc thi khi mt thao tc no xy ra). C th nh ngha nhiu trigger cho mi thao tc insert, delete, update. V mt trigger cng c th c nh ngha cho nhiu thao tc.Thc thi ton vn thc th1818Rng buc ton vn tham chiu m bo cho cc lin kt gia cc quan h

Ch c mt RBTV tham chiu: Cc kha ngoi khng c tr thnh m ci.

3 trng hp gy ra thc th m ci:Thm vo mt dng d liu bng kha ngoi vi kha khng lin kt vi kha ng vin trong bng chnh.Kha ng vin trong bng chnh b thay i.Dng d liu kha ngoi trong bng chnh b xa.

Ton vn tham chiu Referential Integrity1919Cch gii quyt cc trng hp gy ra thc th m ci:Trng hp 1: Ngn cm thm vo dng d liu khng ph hp bng kha ngoi. Ch : dng d liu gi tr unknown v unexistant vn c th c thm vo m khng gy hi g n RB tham chiuTrng hp 2: Ngn chn s thay i kha ng vin hoc nu cho php kha ng vin thay i th phi thc hin thay i bng kha ngoi, gi l cascading update.Trng hp 3: tng t trng hp 2, cascading delete

Ton vn tham chiu Referential Integrity2020SQL server v Jet database engine cung cp nhng c ch khc nhau cho ton vn tham chiu.

SQL server:Khai bo RB kha ngoi nh mt phn ca vic nh ngha bng.RB kha ngoi thit lp tham chiu n mt kha ng vin trong bng chnh.Ngn cm thao tc insert m khng c dng d liu tng ng trong bng chnh.Ngn cm thao tc delete mt dng d liu ang c tham chiu n trong bng chnh.D dng thc hin cascading update v cascading delete bng cch s dng trigger.

Thc thi ton vn tham chiu2121Jet database engine:Cung cp ton vn tham chiu thng qua i tng Relation.i tng Relation l mt th hin vt l cho mi quan h gia 2 bng.Cc thuc tnh Table v ForeignTable trong i tng Relation nh ngha 2 bng tham gia vo mi quan h.Thuc tnh Fields xc nh cc trng lin kt trong mi bng.

Thc thi ton vn tham chiu2222Jet database engine:Duy tr ton vn tham chiu cho quan h bng thuc tnh Attributes ca mi quan h.Trong , c 2 thuc tnh quan trng l dbRelationUpdateCascade, v dbRelationDeleteCascade thc hin vic cascading update v cascading delete.

Thc thi ton vn tham chiu2323Dng null cho gi tr unknown v nonexistent Cc vn :Khng xc nh c gi tr null c th c biu din cho unknown hay nonexistent Kiu chui hay text, dng null cho unknown v chui rng cho nonexistent.Kiu s hc, dng null cho unknown v 0 cho nonexistentVn xy ra vi cc kiu d liu phi text, nhng khng thng xy ra trong thc t -> gii php : cch tip cn gi tr quy c.Lm phc tp thao tc d liuVd : so snh lun l

Unknown v Nonexistent24"Vn mt mt thng tin" c bit n t khi m hnh quan h c xut ln u tinLm sao bit c thng tin b mt (khch hng c h nhng ta khng bit) hoc khng tn ti (khch hng khng c tn lt) ? Hu ht cc CSDL quan h dng gi tr null nh mt cch qun l cc gi tr b mt v cc gi tr khng tn ti.

Vn ny khng xy ra vi kiu chui hay text v c th dng chui rng i din cho gi tr rng, dng null i din cho gi tr unknown.

24Cch tip cn quy cQuy c gi tr biu din unknown v nonexistentCc vn :C th gy nhm lnVd : dng 9/9/1900 biu din gi tr unknown -> nhm vi ngy 9/9/1900 c thcTc ng n ton vn tham chiuVd :Unknown v Nonexistent25"Vn mt mt thng tin" c bit n t khi m hnh quan h c xut ln u tinLm sao bit c thng tin b mt (khch hng c h nhng ta khng bit) hoc khng tn ti (khch hng khng c tn lt) ? Hu ht cc CSDL quan h dng gi tr null nh mt cch qun l cc gi tr b mt v cc gi tr khng tn ti.

25Unknown v Nonexistent26

-> gy tr ngi cho thao tc d liuTrong hnh trn, cc gi tr quy c yu cu thm vo mt record "b nhn" duy tr ton vn tham chiu. "C bao nhiu CSR c cng ty tuyn dng ? Cu tr li l c t hn mt ca s lng CSR c lit k trong bng CSR v trong c mt record b nhn. S lng trung bnh khch hng ca mt CSR ? L s lng record trong bng Customer tr i s lng record c gi tr CSR l "UNASSIGNED", chia cho t hn mt ca s lng record trong bng CSR [(27 - 6)/9].

26Cc tip cn gi tr quy cLi ch :Hin th d liu trn bo coVd : dng "Unknown" thay th cho null, v "No Applicable" thay th cho gi tr rng -> bo co p

=> Cn nhc cn thn khi quyt nh dng null hay cch tip cn gi tr quy c

Unknown v Nonexistent27Tuy nhin vic lu tr cc gi tr quy c trong CSDL c th gy tr ngi cho thao tc d liu, nh ta xem xt pha trn27Phn hi :Bc b cu lnh vi phm, xut thng bo liSa liDng gi tr mc nh hay cho gi tr rngCp nht hoc xa dy chuyn bo m ton vn tham chiuPhn hi vi phm28Khi nh ngha lc quan h, ta cha quyt nh c vic mt rng buc ton vn nn c thc thi nh th no cho hiu qu nht. Ta cng cn quyt nh nhng hnh ng m HQTCSDL nn thc hin khi c vi phm rng buc xy ra. Trong hu ht cc trng hp, CSDL n gin l bc b cc cu lnh vi phm v a ra thng bo li. Tuy nhin, CSDL cng c th thc hin mt s hnh ng sa li v lm cho nhng thay i c th chp nhn c. V d nh cung cp mt gi tr mc nh cho thuc tnh nu n khng chp nhn gi tr rng hoc thc hin cp nht dy chuyn hoc xa dy chuyn bo m ton vn tham chiu

28Rng buc bn chtRng buc bn cht chi phi cu trc vt l ca d liu v c dn xut t m hnh quan h

Rng buc nghip v Rng buc nghip v c dn xut t khng gian vn - quy tc nghip vPhn hi vi phm29Khi nh ngha lc quan h, ta cha quyt nh c vic mt rng buc ton vn nn c thc thi nh th no cho hiu qu nht. Ta cng cn quyt nh nhng hnh ng m HQTCSDL nn thc hin khi c vi phm rng buc xy ra. Trong hu ht cc trng hp, CSDL n gin l bc b cc cu lnh vi phm v a ra thng bo li. Tuy nhin, CSDL cng c th thc hin mt s hnh ng sa li v lm cho nhng thay i c th chp nhn c. V d nh cung cp mt gi tr mc nh cho thuc tnh nu n khng chp nhn gi tr rng hoc thc hin cp nht dy chuyn hoc xa dy chuyn bo m ton vn tham chiu

29Rng buc bn cht Kiu d liu :Chn kiu control thch hp tng ng vi kiu d liunh dng d liunh dng li d liu nhp ca ngi dng Cung cp d liu mu hng dn nhp liuChiu di d liuKhai bo chiu di chui ti a (255 k t)Dng variable-length (VARCHAR)Thng nht quy c rt ngn d liu (b, vit tt)Phn hi vi phm30Varchar :_ Tuy nhin, khai bo variable - length khng ng cho mi tnh hung. Th nht, c nhng d liu i hi chiu di c nh. V d, s CMND lun c 9 k t. Nhng ngi dng li c 1 s CMND vi 10 k t th vi kiu khai bo ny, chiu di d liu khng b vi phm nhng d liu l khng chnh xc. _ hiu xut thc thi ca h thngChiu di ti a :_nh dng ca mn hnh hin th v report s b xu_ vic tm kim record theo mt thng tin c th no c th rt kh khn

30Rng buc bn cht Gi tr nullThay th bng UNKNOWN, NOT APPLICABLE, YET TO COMERng buc phm viThay th bng kiu d liu c phm vi ln hn trong lc quan hPhn hi vi phm31Rng buc bn chtVn y l trng hp m record mi thm vo c nhiu trng thiu d liu. Trc khi 1 tc v han thnh th mt s thng tin lin quan s c yu cu cho vic thc hin tc v. Nhng khng tt c cc d liu trong record u c yu cu khi record c to u tin. V d, ta cn bit chi tit ti khon ngn hng ca nhn vin mi trc khi tr lng cho h. Nn thng tin ti khon ny khng th l null. Nhng nhn vin mi ny c th khng c y thng tin cn thit in vo khi record v nhn vin ny c to ra ln u tin cho nn h thng khng nn ngn cn vic sau ny ngi dng b sung nhng thng tin cn li hoc cho cc tc v khc thc hin vic b sung thng tin.

Rng buc phm viKhi 1 kiu d liu c quyt nh rng buc phm vi th ta khng th lm g khc hn l vic gii thch cho ngi dng. Nu gi tr ln hn c yu cu th ta phi xc nh mt kiu d liu c phm vi ln hn trong lc quan h. iu ny kh c c thc hin mt cch linh ng bi ng dng.

31Rng buc bn cht Rng buc ton vn thc th v tham chiuD liu trngXut thng bo v cung cp cc la chn

Phn hi vi phm32

Ch rng, khi hin th d liu tn ti cho ngi dng so snh vi d liu va nhp, h thng s hin th 1 form mi khng ghi ln d liu ngi dng va nhp v cho php ngi dng quyt nh c ghi record mi ln record c hay khng. Ngoi ra, ngi dng c th tip tc nhp liu m khng quan tm ti d liu trng, tc l mun c c 2 record trong database.32Rng buc bn cht Rng buc ton vn thc th v tham chiuQun nhp kha chnhDng AutoNumber cho kha chnhXut thng bo nhc nh

Phn hi vi phm33Ch rng, khi hin th d liu tn ti cho ngi dng so snh vi d liu va nhp, h thng s hin th 1 form mi khng ghi ln d liu ngi dng va nhp v cho php ngi dng quyt nh c ghi record mi ln record c hay khng. Ngoi ra, ngi dng c th tip tc nhp liu m khng quan tm ti d liu trng, tc l mun c c 2 record trong database.33Rng buc bn cht Rng buc ton vn thc th v tham chiuTham chiu n gi tr khng tn tiXut thng bo v cung cp cc la chnPhn hi vi phm34

Trong v d di y, khi ngi dng nhp thng tin khch hng cho ha n, nhng thng tin cha c trong h thng th h thng s hin th thng bo cho ngi dng cc la chn gii quyt vn nh : ngi dng yu cu h thng thm 1 record khch hng mi v hin th mn hnh nhp liu chi tit ngay lc ; ngi dng yu cu thm 1 record khch hng mi v s cp nht li thng tin chi tit sau; ngi dng quay li mn hnh lp ha n thay i li gi tr tham chiu b vi phm; hay vn thm thng tin ha n va nhp vo, nhng nh du l cha hon chnh v s quay li cp nht sau.34Rng buc nghip vLi nhp liuPhn hi vi phm35

ngi dng nhp vo d liu ngy v thng ngc th t35Rng buc nghip vD liu thc t khng hp vi m hnh h thngPhn hi vi phm36

V d, ngi dng c th nhp vo mt trng hp ng trong mt n t hng c deliverd nhng v mt l do no d liu khng c nhp vo h thng. Ngy phn phi cho n t hng ny s sm hn ngy t hng, iu vi phm qui tc nghip v. Nu bn khng a ra cc hng dn cho ngi dng th h s nhp vo bt k mt ngy phn phi no m h thng chp nhn, v s ton vn d liu s b ph v.

Hnh 16-5 th hin mt cch tr li ca h thng khi ngi dng nhp ngy phn phi sm hn ngy t hng. V d ny gi s rng ngy t hng c ci mc nh l ngy hin hnh ca h thng v ngi dng khng c php sa n.36Rng buc nghip vVi phm quy tc nghip vPhn hi vi phm37

Hnh 16-6, mt ngi dng nhp vo thng tin v bo co nhn vin th 6 cho gim c, s vi phm qui tc l mt gim c khng c php c nhiu hn 5 nhn vin.

Ngi dng hin ti khng c quyn hn ghi (override) cc quy tc. Nhng h thng hin th hp thoi th 2 cho php 1 password v 1 on m c quyn hn(authorization code) 1 ngi c quyn c th ng nhp vo c th l ngi qun l hay thanh tra(supervisor). Bi v, nhng c nhn trong nhm ngi c quyn hn ny khng lun lun sn sng yu cu, hp thoi u tin cng cho php ngi dng lu li nhng record hin ti v cung cp cc hng dn nhp m quyn(authorization code) ti 1 ngy sau .

Vic cho php ghi cc quy tc nghip v s tng thm tnh tin li 1 cch ng k cho h thng, nhng lm nh th s lm tng thm s phc tp cho m hnh d liu. 37