- 1 -
Tính toàn v n d li u trong c s d li u - Ph n 1 ơ
Toàn v n d li u là vi c đ t ra các quy t c trong m t c s ơ
d li u nh m ki m tra các giá tr c a d li u tr c khi đ c ướ ượ
l u tr ph i đ m b o tính chính xác h p bên trong m tư
c s d li u.ơ
N u các giá tr d li u nào vi ph m các quy t c đ t ra thì cácế
d li u đó s không đ c l u vào b ng. Các quy t c này ph n l n đ c xây d ng d a ượ ư ượ
vào các quy t c hi n h u đang t n t i trong công vi c kinh doanh.
Ví d :
Trong c s d li u QLBanHang (qu n bán hàng) b n có th đ a ra m t s quy t cơ ư
nh sau :ư
• S l ng đ t hàng ph i d ng (mi n giá tr ). ượ ươ
• Ngày nh p hàng ph i sau ngày đ t hàng.
• S hóa đ n giao hàng không b c p trùng s (khóa chính). ơ
Đ n đ t hàng ph i g i cho m t nhà cung c p trong danh sách nhà cung c p (khóaơ
ngo i).
• S l ng bán hàng ph i d ng và còn đ s l ng hi n có trong kho hàng. ượ ươ ượ
Đi u x y ra n u d li u bên trong các b ng vi ph m các quy t c trên v n ế
đ c l u tr vào bên trong c s d li u ? Do đó, trong các h c s d li u quan hượ ư ơ ơ
l n ngày nay, h th ng s giúp cho ng i s d ng th đ nh nghĩa ra các quy t c ườ
thông qua các t khóa ho c thu c tính liên quan đ n c s d li u nh m đ m b o ế ơ
d li u khi l u tr vào c s d li u ph i chính xác và h p lý. ư ơ
Bên trong c s d li u c a Microsoft SQL Server vi c ki m tra tính toàn v n d li uơ
s thông qua hai đ i t ng qu n lý, đó các ượ constraint trigger. C hai đ i t ng ượ
này đ u đ c liên k t tr c ti p vào b ng d li u. ượ ế ế
Các lo i quy t c ki m tra tính toàn v n d li u bao g m :
1/- Ki m tra duy nh t d li u :
Lo i ràng bu c toàn v n này cho phép b n th ki m tra tính duy nh t c a d li u
bên trong b ng. Đi u này ngăn c n vi c ng i s d ng tình c nh p trùng l i các giá ườ
tr d li u bên trong b ng. B n th s d ng hai thành ph n PRIMARY KEY ho c
Thu c tính b ng
- 2 -
UNIQUE trong câu l nh CREATE TABLE đ th c hi n vi c ki m tra tính duy nh t
c a d li u.
Đi m khác bi t chính gi a PRIMARY KEY UNIQUE s xu t hi n c a các
thành ph n trong câu l nh CREATE TABLE. Thành ph n PRIMARY KEY cho phép
b n t o ra c u trúc b ng ch a khóa chính. Do m t b ng ch có m t khóa chính, tuy
nhiên khóa chính đ c phép đ nh nghĩa có nhi u c t tham gia. th thành ph nượ ế
PRIMARY KEY ch xu t hi n m t l n duy nh t khi t o c u trúc b ng.
Thành ph n UNIQUE cho phép b n ki m tra tính duy nh t c a các c t không tham gia
làm khóa chính c a b ng. Thành ph n UNIQUE đ c phép xu t hi n nhi u l n khiượ
t o c u trúc b ng n u c n ki m tra tính duy nh t c a các c t không làm khóa chính. ế
Cú pháp :
Trong đó :
Tên constraint : ph i duy nh t trong c s d li u. Thông th ng quy đ nh tên ơ ườ
constraint g m 3 ph n. B t đ u b ng các ch PRK, k ti p tên b ng cu i ế ế
cùng là tên c t áp d ng quy t c ki m tra duy nh t d li u c a các c t khóa chính.
• Danh sách c t khóa chính : là danh sách tên các c t tham gia làm khóa chính, tên các
c t đ c ngăn cách nhau b i d u ph y (,). ượ
Cú pháp :
Trong đó :
Tên constraint : ph i duy nh t trong c s d li u. Thông th ng quy đ nh tên ơ ườ
constraint g m 3 ph n. B t đ u b ng các ch UNQ, k ti p tên b ng cu i ế ế
cùng tên c t áp d ng quy t c ki m tra duy nh t d li u c a các c t không tham gia
làm khóa chính.
Danh sách c t : danh sách tên các c t c n ki m tra duy nh t, tên các c t đ c ượ
ngăn cách nhau b i d u ph y (,).
L u ý :ư
- 3 -
M c đ nh tên các constraint s do h th ng Microsoft SQL Server t o ra nh m đ m
b o tính duy nh t bên trong c s d li u. Tuy nhiên b n th ch đ ng đ t tên cho ơ
các constraint khi t o ra chúng b ng cách đ a thêm t khóa ư CONSTRAINT trong các
thành ph n đ nh nghĩa các ki m tra ràng bu c toàn v n d li u.
Ví d :
T o b ng VATTU ki m tra d li u c a c t v t t ph i duy nh t. Tr ng h p ư ườ
ch đ nh c t mã v t t làm khóa chính c a b ng. B n th c hi n câu l nh ư CREATE
TABLE nh sau :ư
V i pháp nh trên b ng VATTU s d ng m t constraint lo i ư PRIMARY KEY
dùng đ nh nghĩa khóa chính c a b ng c t Mavtu. Tuy nhiên tên c a constraint s do
h th ng Microsoft SQL Server t o ra.
Trong tr ng h p n u b n mu n ch đ nh tên c a constraint do b n đ nh nghĩa thì b nườ ế
th c hi n câu l nh CREATE TABLE có s d ng t khóa CONSTRAINT nh sau :ư
Khi các thành ph n c a đ i t ng constraint xu t hi n ngay phía sau tên c t nh ượ ư
hai d trên thì ràng bu c toàn v n d li u s đ c ki m tra trên c t d li u. B n ượ
nên ch n cách này khi th c hi n vi c ki m tra các ràng bu c toàn v n d li u ch trên
m t c t bên trong b ng d li u.
Trong tr ng h p n u b n đ t các thành ph n c a đ i t ng constraint bên d i t tườ ế ượ ướ
c các c t d li u bên trong b ng thì ràng bu c toàn v n d li u s đ c ki m tra trên ượ
- 4 -
b ng. B n nên ch n cách này khi th c hi n vi c ki m tra các ràng bu c toàn v n d
li u trên nhi u c t có liên quan bên trong b ng d li u.
Ví d :
Đ t o b ng có tên CTDONDH (chi ti t đ n đ t hàng) g m có nh ng c t nh : s đ t ế ơ ư
hàng ki u d li u chu i chi u dài 4 t , v t t ki u d li u chu i ư
chi u dài 4 t , s l ng đ t ki u s nguyên. D li u t i các c t không đ c ượ ượ
phép tr ng. Khóa chính g m 2 c t s đ t hàng v t t . B n th c hi n câu ư
l nh CREATE TABLE nh sau :ư
Ho c mu n đ t tên c a constraint là PRK_CTDONDH_SodhID
L u ý :ư
Khi s d ng các lo i ràng bu c toàn v n d li u đ c ki m tra trên c t d li u thì ượ
c n nh r ng d u ph y (,) luôn đ c đ t v trí sau cùng c a thành ph n constraint ượ
ch không đ c đ t v trí phía sau tên ki u d li u c a c t. ượ
Ng c l i khi s d ng các lo i ràng bu c toàn v n d li u đ c ki m tra trên b ngượ ượ
thì không c n thêm d u ph y (,) v trí phía sau c a c t d li u cu i cùng bên
trong b ng.
Đôi khi nh ng đi u l u ý này s làm cho b n c m th y khó nh . Do v y đ đ n gi n ư ơ
khi t o c u trúc b ng, b n th c hi n hai b c : ướ
- 5 -
B c 1 :ướ T o c u trúc b ng đ n gi n b ng l nh ơ CREATE TABLE g m có tên b ng,
tên các c t và các ki u d li u mong mu n.
B c 2 :ướ Thêm các lo i constraint t ng ng b ng l nh ươ ALTER TABLE ADD
CONSTRAINT đ áp d ng các ki m tra ràng bu c toàn v n d li u cho b ng d
li u.
2/- Ki m tra t n t i d li u :
Lo i ràng bu c toàn v n này cho phép b n th ki m tra tính t n t i c a d li u
(khóa ngo i), b t bu c ph i bên m t b ng khác, còn g i b ng tham chi u. Đi u ế
này ngăn c n vi c ng i s d ng nh p m t giá tr d li u không trong m t b ng ườ
d li u khác. B n th s d ng thành ph n FOREIGN KEY trong câu l nh
CREATE TABLE đ th c hi n vi c ki m tra tính t n t i c a d li u.
Trong m t b ng đ c phép nhi u khóa ngo i, tuy nhiên các c t tham chi u ph i ượ ế
đ c đ nh nghĩa khóa chính trong các b ng tham chi u tr c đó. th thành ph nượ ế ướ ế
FOREIGN KEY đ c phép xu t hi n nhi u l n khi t o c u trúc b ng n u b n c nư ế
ki m tra tính t n t i c a nhi u c t khác nhau trong các b ng khác nhau.
Cú pháp :
Trong đó :
Tên constraint : ph i duy nh t trong c s d li u. Thông th ng quy đ nh tên ơ ườ
constraint g m 3 ph n. B t đ u b ng các ch : FRK, k ti p tên b ng cu i ế ế
cùng là tên c t áp d ng quy t c ki m tra t n t i d li u.
• Danh sách c t khóa ngo i : là danh sách tên các c t tham gia làm khóa ngo i, tên các
c t đ c ngăn cách nhau b i d u ph y (,). ượ
Tên b ng tham chi u : ế tên c a b ng tham chi u đ ki m tra tính t n t i d li u ế
bên b ng tham chi u. ế
Danh sách c t tham chi u : ế danh sách tên các c t tham chi u trong b ng tham ế
chi u, tên các c t ngăn cách nhau b i d u ph y (,). L u ý r ng danh sách các c t khóaế ư
ngo i và danh sách các c t tham chi u ph i t ng x ng nhau. ế ươ
Ví d :