- Các ràng buộc trong SQL Server được quản lý bởi hai đối tượng:CONSTRAINTvà TRIGGER
Tính toàn vẹn dữ liệu trong cơ sở dữ liệu: Xây dựng các Constraint:
- Xây dựng các Constraint:
Định nghĩa ràng buộc khoá chính (Primary Key): ∗ Dữ liệu khác rỗng và duy nhất.
∗ Cú pháp:
[CONSTRAINT PK_Tên_bảng_Tên_cột ] PRIMARY KEY (Danh_sách_các_cột_khóa_chính)
∗ Ví dụ 1:
create table KHOA (
MAKH char(2) not null, TENKH nvarchar(30),
constraint PK_KHOA_MAKH primary key (MAKH) )
74
Xây dựng 1 CSDL với SQL Server
Tính toàn vẹn dữ liệu trong cơ sở dữ liệu: - Xây dựng các Constraint: - Xây dựng các Constraint:
Định nghĩa ràng buộc khoá chính (Primary Key): ∗ Ví dụ 2:
create table KETQUA (
MASV char(3) not null, MAMH char(2) not null, DIEM real,
constraint PK_KETQUA_MASV_MAMH primary key (MASV, MAMH)
)
75
Xây dựng 1 CSDL với SQL Server
Môn học: CƠ SỞ DỮ LiỆU 75
Tính toàn vẹn dữ liệu trong cơ sở dữ liệu: - Xây dựng các Constraint: - Xây dựng các Constraint:
Định nghĩa ràng buộc duy nhất (Unique):
∗ Dữ liệu có thể rỗng. Nếu có dữ liệu, thì dữ liệu phải duy nhất. ∗ Cú pháp:
[CONSTRAINT UQ_ Tên_bảng_Tên_cột ] UNIQUE (Danh_sách_cột duy nhất)
∗ Ví dụ:
create table KHOA (
MAKH char(2) not null, TENKH nvarchar(30),
constraint PK_KHOA_MAKH primary key (MAKH), constraint UQ_KHOA_TENKH unique (TENKH) )
76
Xây dựng 1 CSDL với SQL Server
39
Tính toàn vẹn dữ liệu trong cơ sở dữ liệu: - Xây dựng các Constraint: - Xây dựng các Constraint:
Lưu ý:
Trong một bảng chỉ định nghĩa một ràng buộc khoá chính, nhưng có thể định nghĩa nhiều ràng buộc dữ liệu duy nhất.
77
Môn học: CƠ SỞ DỮ LiỆU 77
Tính toàn vẹn dữ liệu trong cơ sở dữ liệu: - Xây dựng các Constraint: - Xây dựng các Constraint:
Định nghĩa ràng buộc khóa ngoại (Foreign Key): ∗ Tham chiếu đến cột làm khóa chính trong 1 bảng khác.
∗ Phải tạo bảng có cột làm khóa chính trước khi tạo bảng có khóa ngoại (Tạo bảng quan hệ1 trước, tạo bảng quan hệnsau).
∗ Trong một bảng có thể định nghĩa nhiều khoá ngoại. ∗ Cú pháp:
[CONSTRAINT FK_Tên_bảng_Tên_cột] FOREIGN KEY (Danh_sách_cột_khóa_ngoại) REFERENCES Tên_bảng_tham_chiếu (Danh_sách_cột_tham_chiếu)
78
Xây dựng 1 CSDL với SQL Server
Tính toàn vẹn dữ liệu trong cơ sở dữ liệu: - Xây dựng các Constraint: - Xây dựng các Constraint:
Định nghĩa ràng buộc khóa ngoại (Foreign Key): ∗ Ví dụ:
create table KETQUA (
MASV char(3) not null, MAMH char(2) not null, DIEM real,
constraint PK_KETQUA_MASV_MAMH primary key (MASV, MAMH),
constraint FK_KETQUA_MASV foreign key (MASV) references SINHVIEN (MASV),
constraint FK_KETQUA_MAMH foreign key (MAMH) references MONHOC (MAMH)
)
79
Xây dựng 1 CSDL với SQL Server
Môn học: CƠ SỞ DỮ LiỆU 79
Tính toàn vẹn dữ liệu trong cơ sở dữ liệu: - Xây dựng các Constraint: - Xây dựng các Constraint:
Định nghĩa ràng buộc miền giá trị (Check):
∗ Trong một bảng có thể định nghĩa nhiều ràng buộc miền giá trị. ∗ Các phép so sánh gồm: >(lớn hơn), <(nhỏ hơn), >=(lớn hơn hoặc
bằng), <=(nhỏ hơn hoặc bằng), <>(hoặc!=) (khác), in (giá trị 1, giá trị 2, U) (là 1 phần tử trong tập hợp các giá trị).
∗ Các phép kết hợp gồm: and (và), or(hay, hoặc) , between giá trị 1 and giá trị 2(nằm trong khoảng từ giá trị 1 đến giá trị 2)
∗ Cú pháp:
[CONSTRAINT CK_Tên_bảng_Tên_cột] CHECK (Biểu_thức_luận_lý)
80
Xây dựng 1 CSDL với SQL Server
41
Tính toàn vẹn dữ liệu trong cơ sở dữ liệu: - Xây dựng các Constraint: - Xây dựng các Constraint:
Định nghĩa ràng buộc miền giá trị (Check): ∗ Ví dụ:
create table KETQUA (
MASV char(3) not null, MAMH char(2) not null, DIEM real,
constraint PK_KETQUA_MASV_MAMH primary key (MASV, MAMH)
constraint FK_KETQUA_MASV foreign key (MASV) references SINHVIEN (MASV),
constraint FK_KETQUA_MAMH foreign key (MAMH) references MONHOC (MAMH),
constraint CK_KETQUA_DIEM check (DIEM>=0 AND DIEM<=10) )
81
Môn học: CƠ SỞ DỮ LiỆU 81
Tính toàn vẹn dữ liệu trong cơ sở dữ liệu: - Xây dựng các Constraint: - Xây dựng các Constraint:
Định nghĩa ràng buộc giá trị mặc định (Default):
∗ Trong một bảng có thể định nghĩa nhiều ràng buộc giá trị mặc định. ∗ Cú pháp:
CREATE TABLE Tên_bảng (
Tên_cột_1 Kiểu_dữ_liệu [NOT NULL],
Tên_cột_2 Kiểu_dữ_liệu [NOT NULL] default giá_trị_mặc_định
[ ,...]) )
82
Xây dựng 1 CSDL với SQL Server
Tính toàn vẹn dữ liệu trong cơ sở dữ liệu: - Xây dựng các Constraint: - Xây dựng các Constraint:
Định nghĩa ràng buộc giá trị mặc định (Default): ∗ Ví dụ:
create table MONHOC (
MAMH char(2) not null, TENMH nvarchar(25), sotiet int default 30,
constraint PK_MONHOC_MAMH primary key(MAMH), constraint UQ_MONHOC_TENMH unique(TENMH), constraint CK_MONHOC_SOTIET check (sotiet>=30) )
83
Xây dựng 1 CSDL với SQL Server
Môn học: CƠ SỞ DỮ LiỆU 83