UNIQUE – Duy nhất

Một phần của tài liệu Giáo trình quản trị cơ sở dữ liệu (Trang 75 - 77)

- DEFAULT IDENTITY

b) UNIQUE – Duy nhất

Ràng buộc duy nhất (UNIQUE constraint) yêu cầu tất cả các giá trị trong trường phải là duy nhất, giá trị của trường phải khác nhau trên tất cả các bản ghi của bảng.

Một bảng cĩ thể cĩ nhiều ràng buộc duy nhất, và tất cả các bản ghi phải thoả mãn phải thoả mãn các ràng buộc đĩ. Ràng buộc duy nhất đảm bảo tính tồn vẹn thực thể vì tất cả các bản ghi trong bảng bao giờ cũng khác nhau.

Chúng ta cĩ thể sử dụng ràng buộc duy nhất để đảm bảo các giá trị trùng lặp khơng được nhập vào một trường nào đĩ. Khi đĩ chức năng của ràng buộc duy nhất giống với chức năng của ràng buộc khố chính ngoại trừ nĩ cho phép các giá trị null. Cả

hai ràng buộc đĩ đều đảm bảo tính duy nhất, nhưng ràng buộc duy nhất sẽ được sử dụng thay vì ràng buộc khố chính khi chúng ta muốn đảm bảo tính nhất quán của:

+ Một trường hay một tổ hợp các trường khơng phải khố chính: cĩ những trường hợp chúng ta cần nhiều trường phải cĩ các giá trị duy nhất. Khi đĩ, chúng ta khơng thể thiết lập các trường đĩ là khố chính được vì trong một bảng chỉ cĩ duy nhất một ràng buộc khố chính. Cho nên ta cĩ thể đặt ràng buộc duy nhất trên các trường đĩ vì một bảng cho phép cĩ nhiều ràng buộc duy nhất.

+ Một trường cho phép nhận giá trị null: Các ràng buộc duy nhất cĩ thể được định nghĩa trên các trường cho phép các giá trị null, trong khi ràng buộc khố chính chỉ cĩ thể được định nghĩa trên những trường khơng cho phép các giá trị null.

+ Một ràng buộc duy nhất cũng cĩ thể được tham chiếu bởi một ràng buộc khố ngồi.

Ví dụ 3: Tạo bảng Lop (MaLop, TenLop) Create table Lop

( MaLop int NOT NULL, TenLop char (30) NOT NULL CONSTRAINT UNQ_TenLop UNIQUE(TenLop))

c). PRIMARY KEY – khố chính

Chỉ ra ràng buộc duy nhất (giống UNIQUE) tuy nhiên khố là dạng khố UNIQUE cấp cao nhất. Một bảng chỉ cĩ thể cĩ một khố chính. Các giá trị trong khố chính phải not null.

Cú pháp

[CONSTRAINT constraint_name ]

PRIMARY KEY [CLUSTERED|NONCLUSTERED] [( colname [,colname2 [...,colname16]])]

Ví dụ 4: Tạo bảng KHACH_HANG:

USE QLBanHang GO

CREATE TABLE KHACH _HANG

( MA-KH int NOT NULL, HO_KH nvarchar (50),

TEN_KH nvarchar (20), DIEN_THOAI char (20),

Constraint MA_KH_PK PRIMARY KEY (MA_KH)) GO.

Hoặc cĩ thể viết câu lệnh như sau:

CREATE TABLE KHACH _HANG

( MA-KH int NOT NULL primary key, HO_KH nvarchar (50),

TEN_KH nvarchar (20), DIEN_THOAI char (20)

Chú ý: bắt đầu mỗi phát biểu T_SQL cĩ thể thêm dịng để chọn CSDL

USE < CSDL _Name> GO

Một phần của tài liệu Giáo trình quản trị cơ sở dữ liệu (Trang 75 - 77)