You are on page 1of 61

Chng 7

Rng buc ton vn


C s d liu - Khoa CNTT - H KHTN TPHCM 2
Ni dung chi tit
Khi nim
Cc c trng ca RBTV
Phn loi
Cai t

C s d liu - Khoa CNTT - H KHTN TPHCM 3
Khi nim
RBTV (Integrety Constraints) xut pht t nhng qui
nh hay iu kin
- Trong thc t
- Trong m hnh d liu
Cc thao tc lm thay i d liu khng nn c thc hin
mt cch ty tin v c th a CSDL n mt tnh trng xu

RBTV l mt iu kin c nh ngha trn mt
hay nhiu quan h khc nhau
Cc RBTV l nhng iu kin bt bin m mi th
hin ca quan h u phi tha bt k thi im
no
C s d liu - Khoa CNTT - H KHTN TPHCM 4
Khi nim (tt)
Ti sao cn phi c RBTV?
- Bo m tnh kt dnh ca cc thnh phn cu to nn
CSDL
- Bo m tnh nht qun ca d liu
- Bo m CSDL lun biu din ng ng ngha thc t

V d
- Mc lng ca mt ngi nhn vin khng c vt
qu trng phng (R1)
- Ngi qun l trc tip (ca mt nhn vin) phi l mt
nhn vin trong cng ty (R2)
C s d liu - Khoa CNTT - H KHTN TPHCM 5
Ni dung chi tit
Khi nim
Cc c trng ca RBTV
- Bi cnh
- Ni dung
- Bng tm nh hng
Phn loi
Ci t
C s d liu - Khoa CNTT - H KHTN TPHCM 6
Bi cnh
Bi cnh ca mt RBTV
- L nhng quan h c kh nng b vi phm RBTV khi
thc hin cc php cp nht

V d (R1)
- Mc lng ca mt ngi nhn vin khng c vt
qu trng phng
Cc php cp nht
- Cp nht lng cho nhn vin
- Thm mi mt nhn vin vo mt phng ban
- B nhim trng phng cho mt phng ban
Bi cnh: NHANVIEN, PHONGBAN
C s d liu - Khoa CNTT - H KHTN TPHCM 7
Bi cnh (tt)
V d (R2)
- Ngi qun l trc tip phi l mt nhn vin trong cng
ty
Cc php cp nht
- Cp nht ngi qun l trc tip ca mt nhn vin
- Thm mi mt nhn vin
Bi cnh: NHANVIEN
C s d liu - Khoa CNTT - H KHTN TPHCM 8
Ni dung
Ni dung ca mt RBTV c pht biu bng
- Ngn ng t nhin
D hiu nhng thiu tnh cht ch

- Ngn ng hnh thc
C ng, cht ch nhng i lc kh hiu
Biu din thng qua
- i s quan h
- Php tnh quan h
- M gi (pseudo code)
C s d liu - Khoa CNTT - H KHTN TPHCM 9
Ni dung (tt)
V d (R1)
- Ngn ng t nhin
Mc lng ca mt ngi nhn vin khng c vt qu
trng phng

- Ngn ng hnh thc

t e NHANVIEN (
-u e PHONGBAN ( -v e NHANVIEN (
u.TRPHG = v.MANV .
u.MAPHG = t.PHG .
t.LUONG s v.LUONG )))
C s d liu - Khoa CNTT - H KHTN TPHCM 10
Ni dung (tt)
V d (R2)
- Ngn ng t nhin
Ngi qun l trc tip phi l mt nhn vin trong cng ty

- Ngn ng hnh thc
t e NHANVIEN ( t.MA_NQL = null .
-s e NHANVIEN (t.MA_NQL = s.MANV ))
C s d liu - Khoa CNTT - H KHTN TPHCM 11
Bng tm nh hng
Bng tm nh hng
- Xc nh thao tc cp nht no cn phi kim tra RBTV
khi c thc hin trn quan h bi cnh

C 2 loi
- Bng tm nh hng cho mt RBTV
- Bng tm nh hng tng hp
C s d liu - Khoa CNTT - H KHTN TPHCM 12
Bng tm nh hng mt RBTV
Tn_RB
Quan h n
Quan h 1
Quan h 2

Thm Xa Sa
+ + (Thuc tnh)
+
+
(+) Vi phm RBTV
() Khng vi phm RBTV
C s d liu - Khoa CNTT - H KHTN TPHCM 13
Bng tm nh hng tng hp
Quan h 1
Quan h 2
Quan h 3
Quan h n

T X S T X S T X S
Rng buc 1 Rng buc 2 Rng buc m
+
-
-
-
+
-
+
-
+
+
-
-
+
+
-
+
-
-
-
+
-
+
-
+
C s d liu - Khoa CNTT - H KHTN TPHCM 14
Ni dung chi tit
Khi nim
Cc c trng ca RBTV
Phn loi
- Mt quan h
Min gi tr
Lin b
Lin thuc tnh
- Nhiu quan h
Tham chiu
Lin b, lin quan h
Lin thuc tnh, lin quan h
Thuc tnh tng hp
Chu trnh
Ci t
C s d liu - Khoa CNTT - H KHTN TPHCM 15
RBTV - Min gi tr
Rng buc qui nh cc gi tr cho mt thuc tnh





Min gi tr
- Lin tc
- Ri rc
A B
o
R
o
|
C
1
5
12
| 23
D
1
7
3
9
o
|
|
|
| e {o, |, } 9 e {1..10}
C s d liu - Khoa CNTT - H KHTN TPHCM 16
V d 3
Thi gian tham gia n ca mt nhn vin khng
qu 60 gi

- Bi cnh:

- Biu din:


- Bng tm nh hng:
C s d liu - Khoa CNTT - H KHTN TPHCM 17
V d 4
Gii tnh ca nhn vin l Nam hoc Nu

- Bi cnh:

- Biu din:



- Bng tm nh hng:
C s d liu - Khoa CNTT - H KHTN TPHCM 18
RBTV - Lin b
S tn ti ca mt hay nhiu b ph thuc vo s
tn ti ca mt hay nhiu b khc trong cng quan
h





Trng hp c bit
- RB kha chnh
- RB duy nht (unique)
A B
o
R
o
|
C
1
5
12
| 23
D
1
7
3
9
o
|
|
|
C s d liu - Khoa CNTT - H KHTN TPHCM 19
V d 5
Tn phng l duy nht

- Bi cnh:

- Biu din:



- Bng tm nh hng:
C s d liu - Khoa CNTT - H KHTN TPHCM 20
V d 6
Mt nhn vin c tham gia ti a 5 n

- Bi cnh:

- Biu din:



- Bng tm nh hng:
C s d liu - Khoa CNTT - H KHTN TPHCM 21
V d 7
THIDAU(NGAY, GIO, DOI, SOBAN)
Mi trn u l cuc thi u ca ng 2 i

- Bi cnh:

- Biu din:



- Bng tm nh hng
C s d liu - Khoa CNTT - H KHTN TPHCM 22
RBTV - Lin thuc tnh
L rng buc gia cc thuc tnh trong cng quan
h
A B
o
R
o
|
C
1
5
12
| 23
D
1
7
3
9
o
|
|
|
C s d liu - Khoa CNTT - H KHTN TPHCM 23
V d 8
Mt nhn vin khng qun l trc tip chnh mnh

- Bi cnh:

- Biu din:


- Bng tm nh hng:
C s d liu - Khoa CNTT - H KHTN TPHCM 24
V d 9
KHOAHOC(MAKH, TENKH, BDAU, KTHUC)
Mi kha hc ko di t nht 3 thng

- Bi cnh:

- Biu din:


- Bng tm nh hng:
C s d liu - Khoa CNTT - H KHTN TPHCM 25
RBTV - Tham chiu
Gi tr xut hin ti cc thuc tnh trong mt quan h
no phi tham chiu n gi tr kha chnh ca
mt quan h khc cho trc






Trng hp c bit
- RB kha ngoi
A B
o
R
o
|
C
1
5
12
| 23
D
1
7
3
9
o
|
|
|
E F
7
S
3
1
2
Bt buc phi tn ti trc
C s d liu - Khoa CNTT - H KHTN TPHCM 26
V d 10
Mi thn nhn phi c mi quan h gia nh vi mt
nhn vin trong cng ty

- Bi cnh:
- Biu din:



- Bng tm nh hng:
C s d liu - Khoa CNTT - H KHTN TPHCM 27
RBTV - Tham chiu (tt)
Cn gi l ph thuc tn ti
Thng c bi cnh l hai quan h
- Nhng c trng hp suy bin thnh mt quan h
- V d (R2)
Ngi qun l trc tip phi l mt nhn vin trong cng ty
Bi cnh:
Biu din:



Bng tm nh hng
C s d liu - Khoa CNTT - H KHTN TPHCM 28
RBTV - Lin b, lin quan h
L rng buc xy ra gia cc b trn nhiu quan h
khc nhau
A B
o
R
o
|
C
1
5
12
| 23
D
1
7
3
9
o
|
|
|
A B
o
S
o
2
4
|

2
2
C
7
7
3
10
C s d liu - Khoa CNTT - H KHTN TPHCM 29
V d 11
HOADON(SOHD, MAKH, NGAYHD)
CTHD(SOHD, MAHH, DGIA, SLG)
Mi ha n phi c t nht mt chi tit ha n

- Bi cnh:
- Biu din:


- Bng tm nh hng:
C s d liu - Khoa CNTT - H KHTN TPHCM 30
RBTV - Lin thuc tnh, lin quan h
L rng buc xy ra gia cc thuc tnh trn nhiu
quan h khc nhau
A B
o
R
o
|
C
1
5
12
| 23
D
1
7
3
9
o
|
|
|
A B
o
S
o
2
4
|

2
2
C
7
7
3
10
C s d liu - Khoa CNTT - H KHTN TPHCM 31
V d 12
Ngy sinh ca trng phng phi nh hn ngy
nhn chc

- Bi cnh:
- Biu din:




- Bng tm nh hng:
C s d liu - Khoa CNTT - H KHTN TPHCM 32
RBTV - Thuc tnh tng hp
Thuc tnh tng hp
- L thuc tnh c gi tr c tnh ton t cc thuc tnh
khc

Khi CSDL c thuc tnh tng hp
- RBTV bo m quan h gia thuc tnh tng hp v cc
thuc tnh ngun
C s d liu - Khoa CNTT - H KHTN TPHCM 33
V d 13
PHONGBAN(TENPHG, MAPHG, TRPHG,
NG_NHANCHUC, SO_NV)
S nhn vin ca mt phng ban phi bng tng s
lng nhn vin thuc phng
- Bi cnh:
- Biu din:


- Bng tm nh hng:
C s d liu - Khoa CNTT - H KHTN TPHCM 34
RBTV Chu trnh
Lc CSDL c th c biu din bng th
- nh
Quan h
Thuc tnh
- Cnh
ng ni mt nh quan h vi mt nh thuc tnh trong
lc CSDL


Chu trnh
- th xut hin ng i khp kn ~ Lc CSDL c
chu trnh
Tn quan h
Tn thuc tnh
Tn quan h
Tn thuc tnh
C s d liu - Khoa CNTT - H KHTN TPHCM 35
NHANVIEN
DEAN
PHG=PHONG
V d 14
Nhn vin ch c phn cng vao cc n do
phng ban ca mnh ph trch

PHANCONG
NHANVIEN
DEAN
PHG=PHONG
PHANCONG
SODA=MADA MANV=MA_NVIEN
MANV, MADA
MA_NVIEN, SODA
C s d liu - Khoa CNTT - H KHTN TPHCM 36
V d 14 (tt)
Nhn vin ch c phn cng vao cc n do
phng ban ca mnh ph trch
- Bi cnh:
- Biu din:




- Bng tm nh hng:
C s d liu - Khoa CNTT - H KHTN TPHCM 37
Ni dung chi tit
Khi nim
Cc c trng ca RBTV
Phn loi
Ci t
- Assertion
- Trigger
- Transaction (giao tc)
- Stored Procedure (th tc lu tr ni)
C s d liu - Khoa CNTT - H KHTN TPHCM 38
Ci t
Cc RBTV c ci t bi
- Primary key
- Foreign key
- Check contraint

- Assertion
- Trigger
- Transaction
C s d liu - Khoa CNTT - H KHTN TPHCM 39
Assertion
L mt biu thc SQL lun mang gi tr TRUE ti
mi thi im
- Ngi s dng cn cho bit ci g phi ng

C php






CREATE ASSERTION <Tn_assertion> CHECK (<iu_kin>)
DROP ASSERTION <Tn_assertion>
C s d liu - Khoa CNTT - H KHTN TPHCM 40
V d 12
Ngy sinh ca trng phng phi nh hn ngy
nhn chc
C s d liu - Khoa CNTT - H KHTN TPHCM 41
V d 15
Lng ca trng phng phi ln hn 50000
C s d liu - Khoa CNTT - H KHTN TPHCM 42
V d 15 (tt)
Lng ca trng phng phi ln hn 50000
Check Constraint
C s d liu - Khoa CNTT - H KHTN TPHCM 43
V d 16
S lng nhn vin ca mi phng ban khng qu
20 ngi
C s d liu - Khoa CNTT - H KHTN TPHCM 44
V d 16 (tt)
S lng nhn vin ca mi phng ban khng qu
20 ngi
Check Constraint
C s d liu - Khoa CNTT - H KHTN TPHCM 45
Assertion hay Check Constraint ?
C s d liu - Khoa CNTT - H KHTN TPHCM 46
Trigger
L tp hp cc lnh c thc hin t ng khi
xut hin mt bin c no
row-level
statement-level
trc
sau
gi tr mi
gi tr c
thm
xa
sa
iu kin
Tp hp cc lnh
Thng bo li
Tha
Khng tha
Bin
c
C s d liu - Khoa CNTT - H KHTN TPHCM 47
Trigger (tt)
C php
CREATE TRIGGER <Tn_trigger>
AFTER|BEFORE INSERT|UPDATE|DELETE ON <Tn_bng>
REFERENCING
NEW ROW|TABLE AS <Tn_1>
OLD ROW|TABLE AS <Tn_2>
FOR EACH ROW | FOR EACH STATEMENT
WHEN (<iu kin>)
<Tp_lnh_SQL>
DROP TRIGGER <Tn_trigger>
C s d liu - Khoa CNTT - H KHTN TPHCM 48
V d 15
Lng ca trng phng phi ln hn 50000
C s d liu - Khoa CNTT - H KHTN TPHCM 49
V d 15 (tt)
Lng ca trng phng phi ln hn 50000
C s d liu - Khoa CNTT - H KHTN TPHCM 50
V d 15 (tt)
Lng ca trng phng phi ln hn 50000
C s d liu - Khoa CNTT - H KHTN TPHCM 51
Transaction
L tp cc lnh thc hin mt x l no trong
mt ng dng CSDL, sao cho
- Hoc l tt c cc lnh u c thc hin thnh cng
- Hoc l khng c lnh no c thc hin

V d: x l chuyn tin trong ngn hng
Giao tc Chuyn_tin
Gim tin trong ti khon ngi gi
Tng tin trong ti khon ngi nhn
Nu tt c u thnh cng th hon tt giao tc
Ngc li quay lui giao tc
Cui giao tc
C s d liu - Khoa CNTT - H KHTN TPHCM 52
Transaction (tt)
Giao tc phi m bo
- Tnh nguyn t (atomicity)
- Tnh nht qun ca CSDL (consistency)
Cc RBTV khng b vi phm
- Trong khi thc hin giao tc
- Trc v sau khi thc hin giao tc
C s d liu - Khoa CNTT - H KHTN TPHCM 53
V d 7
Giao tc Thm_trn_u(t, s)
Thm t vo THIDAU
Thm s vo THIDAU
Nu c mt thao tc tht bi th
Quay lui giao tc
Ngc li
Hon tt giao tc
Cui nu
Cui giao tc
Mi trn u l cuc thi u ca ng 2 i
C s d liu - Khoa CNTT - H KHTN TPHCM 54
V d 7 (tt)
Giao tc Xa_trn_u(ngay, gio)
Vi mi seTHIDAU (s.NGAY=ngay . s.GIO=gio)
Xa s khi THIDAU
Cui vi mi
Nu c mt thao tc tht bi th
Quay lui giao tc
Ngc li
Hon tt giao tc
Cui nu
Cui giao tc
C s d liu - Khoa CNTT - H KHTN TPHCM 55
V d 11
Giao tc Thm_ha_n
Thm HOADON
Thm chi tit th 1 vo CTHD
Thm chi tit th 2 vo CTHD

Nu c mt thao tc thm tht bi th
Quay lui giao tc
Ngc li
Hon tt giao tc
Cui nu
Cui giao tc
Mi ha n phi c t nht mt chi tit ha n
C s d liu - Khoa CNTT - H KHTN TPHCM 56
V d 11 (tt)
Giao tc Thm_ha_n
Thm HOADON
Thm chi tit th 1 vo CTHD
Thm chi tit th 2 vo CTHD

Nu c mt thao tc thm tht bi th
Quay lui giao tc
Ngc li
Hon tt giao tc
Cui nu
Cui giao tc
C s d liu - Khoa CNTT - H KHTN TPHCM 57
Stored Procedure
Cc DBMS thng mi cung cp cch thc lu tr
cc hm hay th tc
- c lu tr trong lc CSDL
- c s dng trong cc cu lnh SQL

C php
CREATE PROCEDURE <Tn_th_tc> <DS_tham_s>
AS
Khai bo bin cc b
Thn chng trnh
GO
EXEC <Tn_th_tc> <DS_ tham_s>
C s d liu - Khoa CNTT - H KHTN TPHCM 58
V d 7
Mi trn u l cuc thi u ca ng 2 i
CREATE PROCEDURE Thm_trn_u
t THIDAU , s THIDAU
AS
begin tran
Thm t vo THIDAU
If @@error<>0 rollback tran

Thm s vo THIDAU
If @@error<>0 rollback tran
commit tran
GO

EXEC Thm_trn_u x, y
C s d liu - Khoa CNTT - H KHTN TPHCM 59
Nhn xt
DBMS s kim tra RBTV
- Sau khi mt thao tc cp nht din ra trn CSDL
- Cui mi giao tc

Nn ci t RBTV u ???
- DBMS
- Application

- Trigger qu nhiu h thng chm chm
- Stored Procedure hiu qu cao
C s d liu - Khoa CNTT - H KHTN TPHCM 60
Bi tp v nh
Bi tp
- 7.2 / 331-333
- 7.3 / 335-336
- 7.4 / 345-347

c
- Procedures stored in schema / 365-378



C s d liu - Khoa CNTT - H KHTN TPHCM 61

You might also like