Bài 3 Các ràng buộc toàn vẹn dữ liệu


Ràng buộc toàn vẹn dữ liệu là các quy tắc trong một cơ sở dữ liệu nhằm kiểm tra tính đúng đắn và hợp lệ của dữ liệu trước khi lưu trữ.


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
    • 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
    • Hai nhà cung cấp có thể trùng tên nhưng là hai nhà cung cấp khác nhau

Cá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
    • Kiểm tra khác rỗng NOT NULL
    • Kiểm tra tồn tại FOREIGN KEY
    • Kiểm tra miền giá trị CHECK, DEFAULT

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.

Khai báo constraint

CREATE TABLE [schema.]ten_bang
(cot kieu_du_lieu [DEFAULT bieu_thuc]
[constraint_muc_cot],
...
[constraint_muc_bang][,...])

Ví dụ constraint

  • Tên vật tư phải duy nhất 0<=
  • PhanTram <= 100
  • Giá trị mặc định cho cột đơn vị tính là ""
ALTER TABLE vattu ADD
    CONSTRAINT chk_phantram CHECK (phantram BETWEEN 0 AND 100 ),
    CONSTRAINT u_tenvtu UNIQUE(tenvtu),
    CONSTRAINT d_dvtinh DEFAULT '' FOR dvtinh

Khá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 CSDL
  • Có thể sử dụng để
    • Thiết lập mối quan hệ khoá ngoại (FOREIGN KEY)
    • Chỉnh sửa cấu trúc bảng
    • Chỉnh sửa thuộc tính bảng
    • Tạo bảng mới

Ví dụ mô hình quan hệ

ALTER TABLE ctpxuat
    ADD CONSTRAINT fk_ctpxuat_vattu FOREIGN KEY(mavtu) REFERENCES vattu(mavtu)
    ON DELETE CASCADE ON UPDATE CASCADE
    -- có 4 loại CASCADE, No Action, Set Null, Set Default

http://prntscr.com/djrym6

Chia sẽ bài viết :