Microsoft Outline n Data Integrity Enforcing Data Integrity

  • Slides: 17
Download presentation
Microsoft

Microsoft

Outline Ö n Data Integrity Enforcing Data Integrity Types of Constraints ¨ Defining Constraints

Outline Ö n Data Integrity Enforcing Data Integrity Types of Constraints ¨ Defining Constraints ¨ Disabling Constraints ¨ Using Defaults and Rules ¨ n Deciding enforcement method to use Microsoft

Data Integrity Tính toàn vẹn dữ liệu n n Tập các ràng buộc nhằm

Data Integrity Tính toàn vẹn dữ liệu n n Tập các ràng buộc nhằm đảm bảo chất lượng dữ liệu trong các CSDL: dữ liệu là đúng đắn, tin cậy, nhất quán. Toàn vẹn miền giá trị Các kiểu toàn vẹn: Toàn vẹn định nghĩa Bởi người sử dụng (columns) Toàn vẹn thực thể (rows) Toàn vẹn liên kết (between tables) Microsoft

Types of Constraints n n n PRIMARY KEY constraints UNIQUE constraints CHECK constraints DEFAULT

Types of Constraints n n n PRIMARY KEY constraints UNIQUE constraints CHECK constraints DEFAULT constraints FOREIGN KEY constraints Cascading referential integrity Microsoft

Cài đặt tính toàn vẹn dữ liệu n Cài đặt lúc khai báo lược

Cài đặt tính toàn vẹn dữ liệu n Cài đặt lúc khai báo lược đồ CSDL Khai báo thuộc tính các cột: PRIMARY KEY, NOT NULL, UNIQUE, DEFAULT, FOREIGN KEY ¨ Thêm vào các bảng: constraints, defaults, and rules ¨ n Cài đặt bằng các thủ tục q Microsoft scripts, triggers and stored procedures

Ràng buộc PRIMARY KEY n n PRIMARY KEY là một cột hoặc một tập

Ràng buộc PRIMARY KEY n n PRIMARY KEY là một cột hoặc một tập các cột dùng để nhận diện (phân biệt) các bản ghi dữ liệu Mỗi bảng có nhiều nhất 1 PRIMARY KEY Các giá trị trên PRIMARY KEY là duy nhất, không được phép NULL Index tự động sinh ra trên PRIMARY KEY USE qlnv CREATE TABLE DMNN (Mann char (2) PRIMARY KEY, Tennn nvarchar(20)) CREATE TABLE DMNN (Mann char (2), Tennn nvarchar(20), CONSTRAINT PK_DMNN PRIMARY KEY (Mann) Microsoft ) USE qlnv CREATE TABLE TDNN (Manv char (6) NOT NULL, Mann char(2) NOT NULL, Tdo smallint); Alter TABLE TDNN ADD CONSTRAINT PK_TDNN PRIMARY KEY (Manv, Mann)

Ràng buộc UNIQUE n n Ràng buộc UNIQUE có thể định nghĩa trên một

Ràng buộc UNIQUE n n Ràng buộc UNIQUE có thể định nghĩa trên một cột hoặc một tập các cột Cho phép 1 bản ghi có giá trị NULL Một bảng có thể có nhiều ràng buộc UNIQUE A unique Index tự động sinh ra trên cột UNIQUE USE qlnv; ALTER TABLE DMNN ADD CONSTRAINT U_Tennn UNIQUE NONCLUSTERED (Tennn) Microsoft USE qlnv; CREATE TABLE DMNN ADD CONSTRAINT U_Tennn UNIQUE NONCLUSTERED (Tennn)

Ràng buộc CHECK n Ràng buộc CHECK được định nghĩa trên một hoặc nhiều

Ràng buộc CHECK n Ràng buộc CHECK được định nghĩa trên một hoặc nhiều cột của cúng một bảng USE qlnv; CREATE TABLE Nhanvien ( Manv char (8) PRIMARY KEY, Ho. Ten nvarchar(50) NOT NULL, Ngaysinh datetime CHECK (Ngaysinh BETWEEN '01 -01 -1900' AND '01 -01 -2012'), maphong int ) USE qlnv; ALTER TABLE Nhanvien ADD CONSTRAINT CK_ngaysinh CHECK (ngaysinh > '01 -01 -1900' AND ngaysinh <‘ 01 -01 -2012’) Microsoft

Ràng buộc DEFAULT n n n Được thực hiện với các lệnh INSERT Mỗi

Ràng buộc DEFAULT n n n Được thực hiện với các lệnh INSERT Mỗi cột chỉ có tối đa 1 ràng buộc DEFAULT Không sử dụng các cột có tính chất IDENTITY hoặc các cột có kiểu dữ liệu rowversion USE qlnv CREATE TABLE Phong ( Ma. Phong int PRIMARY KEY, Ten. Phong nvarchar(40) UNIQUE, Dia. Chi nvarchar(50) DEFAULT N'123 -Đống Đa - HN', Tel char (10) ) Microsoft USE qlnv CREATE TABLE Phong ( Ma. Phong int PRIMARY KEY, Ten. Phong nvarchar(40) UNIQUE, Dia. Chi nvarchar(50), Tel char (10) ) ALTER TABLE phong ADD CONSTRAINT DF_diachi DEFAULT ‘ 123 -Đống Đa - HN' FOR Dia. Chi

Ràng buộc Default n n Rang buộc DEFAULT cũng có thể được định nghĩa

Ràng buộc Default n n Rang buộc DEFAULT cũng có thể được định nghĩa như các đối tượng độc lập Và gắn với cột hoặc kiểu dữ liệu người dùng CREATE DEFAULT [schema_name. ] default_name AS constant_expression [ ; ] EXEC sp_bindefault <default_name>, <Object_name> CREATE DEFAULT phone_no_default AS '(000)000 -0000' GO EXEC sp_bindefault phone_no_default, ‘Phong. Tel' Microsoft

Ràng buộc khóa ngoài FOREIGN KEY n n Phải tham chiếu đến thuộc tính

Ràng buộc khóa ngoài FOREIGN KEY n n Phải tham chiếu đến thuộc tính là PRIMARY KEY or UNIQUE của bảng khác Phải có quyền SELECT or REFERENCES trên bảng tham chiếu đến CREATE TABLE TDNN (manv char(8), mann char(2), TDo smallint, PRIMARY KEY (manv, mann), CONSTRAINT FK_TDNN_Nhan. Vien FOREIGN KEY (manv) REFERENCES Nhanvien(manv), FOREIGN KEY (mann) REFERENCES DMNN(mann) ) Microsoft

Các loại ràng buộc tham chiếu n Khi xóa hoặc cập nhật khóa chính

Các loại ràng buộc tham chiếu n Khi xóa hoặc cập nhật khóa chính của một bảng, nếu khóa chính đó được tham chiếu từ bảng khác thì mặc định SQL server không cho phép xóa hoặc cập nhật khóa chính này. Tuy nhiên có thể lựa chọn: SET NULL, SET DEFAULT, CASCADE [ON DELETE {NO ACTION|CASCADE|SET NULL|SET DEFAULT}] [ON UPDATE {NO ACTION|CASCADE|SET NULL|SET DEFAULT}] ALTER TABLE TDNN DROP CONSTRAINT FK_TDNN_DMNN ALTER TABLE TDNN ADD CONSTRAINT FK_TDNN_DMNN FOREIGN KEY (Mann) REFERENCES DMNN(Mann) ON DELETE CASCADE Microsoft

Disabling Constraints n Disabling constraint checking on existing data Using WITH NOCHECK option when

Disabling Constraints n Disabling constraint checking on existing data Using WITH NOCHECK option when adding a new constraint ¨ Applied to CHECK and FOREIGN KEY constraints ¨ USE Northwind ALTER TABLE dbo. Employees WITH NOCHECK ADD CONSTRAINT FK_Employees FOREIGN KEY (Reports. To) REFERENCES dbo. Employees(Employee. ID) Microsoft

Disabling Constraints n Disabling constraint checking when loading new data Using NOCHECK option before

Disabling Constraints n Disabling constraint checking when loading new data Using NOCHECK option before loading new data ¨ Applied to CHECK and FOREIGN KEY Constraints ¨ USE Northwind ALTER TABLE dbo. Employees NOCHECK CONSTRAINT FK_Employees Microsoft

Rule Constraints CREATE RULE [schema_name. ] rule_name AS <condition_expression> GO EXEC sp_bindrule regioncode_rule, 'Customers.

Rule Constraints CREATE RULE [schema_name. ] rule_name AS <condition_expression> GO EXEC sp_bindrule regioncode_rule, 'Customers. Region' CREATE RULE regioncode_rule AS @regioncode IN ('IA', 'IL', 'KS', 'MO') GO EXEC sp_bindrule regioncode_rule, 'Customers. Region' Microsoft Note: CREATE RULE may be not supported anymore in next version of SQL Server

Enforcement Method to Use Data integrity components Functionality Performance Before or after costs modification

Enforcement Method to Use Data integrity components Functionality Performance Before or after costs modification Constraints Medium Low Before Defaults and rules Low Before Triggers High Medium-High After Data types, Null/Not Null Low Microsoft Before

Summary n Các ràng buộc toàn vẹn dữ liệu là phương tiện đảm bảo

Summary n Các ràng buộc toàn vẹn dữ liệu là phương tiện đảm bảo tính đúng đắn, tính hợp lý và tính đầy đủ của dữ liệu n Cài đặt toàn vẹn dữ liệu giúp cho việc duy trì cơ sở dữ liệu luôn trong trạng thái hợp lý, đúng đắn và đầy đủ trong quá trình CSDL được cập nhật Using các ràng buộc toàn vẹn là quan trọng, …, nhưng chỉ khi cần thiết. n Microsoft