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
Trang 1SQL Server
Trang 2Các ràng buộc toàn vẹn dữ liệu
3
Trang 3Ràng buộc toàn vẹn dữ liệu -
Constraint
Trang 4Cá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
− Ngày dự kiến nhận hàng phải sau ngày đặt hàng
− Một đơn đặt hàng phải do một khách hành lập ra
− Mỗi một mặt hàng phải có nhà cung cấp (mỗi mặt hàng phải có xuất xứ)
− Số lượng mặt hàng giao cho khách phải nhỏ hơn hay tối đa bằng với số lượng đặt
−
Trang 5Các ràng buộc toàn vẹn dữ liệu
• SQL Server chia làm hai loại chính
− Loại đơn giản: sử dụng CONSTRAINT để mô tả
− Loại phức tạp: sử dụng TRIGGER để thực hiện
• Các loại ràng buộc đơn giản
− Kiểm tra duy nhất
• PRIMARY KEY, UNIQUE
Trang 6Nguyê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.
Trang 7Khai báo constraint
CREATE TABLE [schema.]ten_bang
(cot kieu_du_lieu [DEFAULT bieu_thuc]
Trang 8Khai báo Constraint
Trang 9Constraint NOT NULL
Đảm bảo rằng giá trị NULL sẽ không tồn tại trong cột
NOT NULL constraint
NOT NULL constraint
…
Trang 10CREATE TABLE nhanvien(
Constraint NOT NULL
Được khai báo ở mức cột
Tên của hệ thống
Tên người dùng đặt
Trang 11Cho phép
…
Trang 12Constraint UNIQUE
Khai báo ở mức bảng hoặc mức cột:
CREATE TABLE nhanvien(
manhanvien NUMERIC(6), tennv NVARCHAR(25) NOT NULL, email NVARCHAR(25),
mucluong NUMERIC(8,2),
CREATE TABLE nhanvien(
manhanvien NUMERIC(6), tennv NVARCHAR(25) NOT NULL, email NVARCHAR(25) UNIQUE, mucluong NUMERIC(8,2),
hoặc
Trang 13Constraint PRIMARY KEY
Trang 14CREATE 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(
Trang 15Constraint FOREIGN KEY
PHONG
NHANVIEN
KHÓA NGOẠI (FK)
Thêm vào (75 không tồn tại) Không cho phép
KHÓA CHÍNH
(PK)
…
…
Trang 16Constraint FOREIGN KEY
CREATE TABLE nhanvien(
CONSTRAINT nv_email_uk UNIQUE(email))
Khai báo ở mức bảng hoặc mức cột:
Trang 17Cú 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 }]
Trang 18[CONSTRAINT ten_constraint]
CHECK ( bieu_thuc_luan_ly )
Trang 19Thêm Constraint mới vào bảng
ALTER TABLE bang
ADD [CONSTRAINT ten_constraint]
Loai_Constraint Tham_so
• Dùng để tạo constraint sau khi đã tạo
bảng
• Sử dụng lệnh ALTER TABLE.
Trang 20Cú pháp chi tiết từng loại constraint
ALTER TABLE bang
ADD [CONSTRAINT ten_constraint]
PRIMARY KEY (danh_sach_cot_khoa_chinh) hoặc UNIQUE (danh_sach_cot)
hoặc FOREIGN KEY (danh_sach_cot_khoa_ngoai)
REFERENCES bang_tham_chieu (ds_cot_tham_chieu) hoặc CHECK (bieu_thuc_luan_ly)
hoặc DEFAULT gia_tri_mac_dinh FOR Ten_cot
Trang 21Xóa Constraint
• Cú pháp
• Ví dụ
ALTER TABLE nhanvien
DROP CONSTRAINT nv_luong_min ALTER TABLE ten_bang
DROP CONSTRAINT ten_constraint [,…]
Trang 22Tắ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[, ]
Trang 23Xem 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
(SELECT object_id FROM sys.objects
WHERE name=‘Ten_bang')
Trang 24Mô hình quan hệ dữ liệu
(Diagram)
Trang 25Khái niệm về mô hình quan hệ dữ liệu
• Thể hiện mối quan hệ giữa các bảng trong
Trang 26Ví dụ mô hình quan hệ
Trang 27Tạo mới mô hình quan hệ dữ liệu
• Chỉ có thể tạo bằng SSMS
• Với một CSDL lớn, tạo một hay nhiều mô hình
cho các nghiệp vụ thực tế khác nhau