
- 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 và h p lý 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 lý 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 có 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 gì x y ra n u d li u bên trong các b ng có vi ph m các quy t c trên mà 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 có th đ nh nghĩa ra các quy t cớ ệ ố ẽ ườ ử ụ ể ị ắ
thông qua các t khóa ho c thu c tính có 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ý, đó là các ẽ ố ượ ả constraint và 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 có 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 có 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 và UNIQUE là 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 có 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. Vì 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 là duy nh t trong c s d li u. Thông th ng quy đ nh tênả ấ ơ ở ữ ệ ườ ị
constraint g m có 3 ph n. B t đ u b ng các ch PRK, k ti p là tên b ng và 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 là duy nh t trong c s d li u. Thông th ng quy đ nh tênả ấ ơ ở ữ ệ ườ ị
constraint g m có 3 ph n. B t đ u b ng các ch UNQ, k ti p là tên b ng và 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ông tham giaộ ụ ắ ể ấ ữ ệ ủ ộ
làm khóa chính.
• Danh sách c t :ộ là 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 có 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 mã v t t ph i là 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 cú pháp nh trên b ng VATTU có s d ng m t constraint lo i ớ ư ả ử ụ ộ ạ PRIMARY KEY
dùng đ nh nghĩa khóa chính c a b ng là 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 mà 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 ví 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 có ki u d li u là chu i và chi u dài 4 ký t , mã v t t có ki u d li u là chu iể ữ ệ ỗ ề ự ậ ư ể ữ ệ ỗ
và chi u dài 4 ký t , s l ng đ t có 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 có 2 c t là s đ t hàng và mã 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 có 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 có 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 có bên m t b ng khác, còn g i là 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 có trong m t b ngả ệ ườ ử ụ ậ ộ ị ữ ệ ộ ả
d li u khác. B n có 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 có nhi u khóa ngo i, tuy nhiên các c t tham chi u ph iộ ả ượ ề ạ ộ ế ả
đ c đ nh nghĩa là khóa chính trong các b ng tham chi u tr c đó. Vì 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 là duy nh t trong c s d li u. Thông th ng quy đ nh tênả ấ ơ ở ữ ệ ườ ị
constraint g m có 3 ph n. B t đ u b ng các ch : FRK, k ti p là tên b ng và 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 :ả ế là 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 :ộ ế là 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 :ụ