11
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
SQL Server
22
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các ràng buộc toàn vẹn dữ liệu
3
33
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Ràng buộc toàn vẹn dữ liệu -
Constraint
44
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các quy định của công việc trong thực tế
Các quy định của công việc trong thực tế
•
Trong thực tế mỗi công việc đều có những quy định phải tuân theo
−
Mỗi quy định trở thành một hay nhiều ràng buộc trong CSDL
−
Một số quy định đơn giản, mặc nhiên thấy cũng phải mô tả trong CSDL
•
Ví dụ quản lý đơn đặt hàng
−
Số lượng đặt hàng phải lớn hơn 0
−
Các số hoá đơn giao hàng không được trùng nhau
NOT NULL
−
Kiểm tra tồn tại
•
FOREIGN KEY
−
Kiểm tra miền giá trị
•
CHECK, DEFAULT
66
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Nguyên tắc chung
•
Một constraint luôn gắn với một bảng
•
Nếu không đặt tên thì hệ thống sẽ tự động phát
sinh tên cho constraint.
•
Có thể tạo constraint :
−
Cùng với thời điểm tạo bảng hoặc
−
Sau khi đã tạo bảng xong
•
Có thể khai báo constraint ở mức cột hoặc mức
bảng.
•
Có thể xem các constraint hiện có trong
Database.
TRUNG TÂM TIN HỌC
Constraint NOT NULL
Đảm bảo rằng giá trị NULL sẽ không tồn tại trong cột
NOT NULL constraint
(Không dòng nào
được phép chứa giá
trị NULL cột này.)
Không tồn tại NOT
NULL constraint
(Dòng bất kỳ có thể
chứa giá trị null.)
NOT NULL
constraint
…
1010
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
CREATE TABLE nhanvien(
manhanvien NUMERIC(6),
tennv NVARCHAR(25) NOT NULL,
mucluong NUMERIC(10),
phucap NUMERIC(10),
ngayvaolam DATE
CONSTRAINT nv_ngayvaolam_nn
NOT NULL,
Constraint NOT NULL
Được khai báo ở mức cột
Tên của hệ
thống
email NVARCHAR(25) UNIQUE,
mucluong NUMERIC(8,2),
hoặc
1313
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Constraint PRIMARY KEY
DEPARTMENTS
PRIMARY KEY
Thêm vào bảng
Không cho phép
(giá trị Null)
Không cho phép
(50 đã tồn tại)
…
1414
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
CREATE TABLE phong(
maphong NUMERIC(4) PRIMARY KEY,
tenphong NVARCHAR(30)
CONSTRAINT phong_ten_nn NOT NULL,
manguoiquanly NUMERIC(6),
makhuvuc NUMERIC(4))
Constraint PRIMARY KEY
Khai báo ở mức cột hoặc mức bảng:
CREATE TABLE phong(
maphong NUMERIC(4),
tenphong NVARCHAR(30)
mucluong NUMERIC(10,
phucap NUMERIC(10),
ngayvaolame DATE NOT NULL,
maphong NUMERIC(4),
CONSTRAINT nv_phong_fk FOREIGN KEY (maphong)
REFERENCES phong(maphong),
CONSTRAINT nv_email_uk UNIQUE(email))
Khai báo ở mức bảng hoặc mức cột:
1717
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cú pháp constraint FOREIGN KEY
FOREIGN KEY [( cot [ , n ] ) ]
REFERENCES Ten_bang_tham_chieu [ ( cot [ , n ] ) ]
[ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT }]
[ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT }]
1818
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Constraint CHECK
•
Khai báo những qui định mà mỗi dòng đều phải
thỏa mãn
•
Dùng để kiểm tra miền giá trị của dữ liệu
, mucluong NUMERIC(10)
CONSTRAINT nv_luong_min
CHECK (mucluong >= 0),
[CONSTRAINT ten_constraint]
Cú pháp
•
Ví dụ
ALTER TABLE nhanvien
DROP CONSTRAINT nv_luong_min
ALTER TABLE ten_bang
DROP CONSTRAINT ten_constraint [,…]
2222
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Tắt kiểm tra Constraints
ALTER TABLE ten_bang
NOCHECK CONSTRAINT ALL | ten_constraint[, ]
Bật lại kiểm tra Constraints
ALTER TABLE ten_bang
CHECK CONSTRAINT ALL | ten_constraint[, ]
2323
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Xem các constraint trong một bảng
•
Xem bằng SSMS.
•
Xem bằng câu lệnh
•
Xem từ view hệ thống sys.objects
sp_helpconstraint ‘ten_bang’
Hoặc sp_help ‘ten_bang’
SELECT * FROM sys.objects
WHERE parent_object_id IN