1 / 17

TÍNH TOÀN VẸN DỮ LiỆU

Data Integrity. TÍNH TOÀN VẸN DỮ LiỆU. Outline. Data Integrity Enforcing Data Integrity Types of Constraints Defining Constraints Disabling Constraints Using Defaults and Rules Deciding enforcement method to use. Data Integrity Tính toàn vẹn dữ liệu.

kapila
Download Presentation

TÍNH TOÀN VẸN DỮ LiỆU

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Data Integrity TÍNH TOÀN VẸN DỮ LiỆU

  2. Outline • Data Integrity • Enforcing Data Integrity • Types of Constraints • Defining Constraints • Disabling Constraints • Using Defaults and Rules • Deciding enforcement method to use

  3. Data IntegrityTính toàn vẹn dữ liệu • 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. • Các kiểu toàn vẹn: Toàn vẹn miền giá trị(columns) Toàn vẹn thực thể (rows) Toàn vẹn định nghĩa Bởi người sử dụng Toàn vẹn liên kết (between tables)

  4. Types of Constraints • PRIMARY KEY constraints • UNIQUE constraints • CHECK constraints • DEFAULT constraints • FOREIGN KEY constraints • Cascading referential integrity

  5. Cài đặt tính toàn vẹn dữ liệu • 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 • Cài đặt bằng các thủ tục • scripts, triggers and stored procedures

  6. Ràng buộc PRIMARY KEY • 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 TDNN (Manv char (6) NOT NULL, Mann char(2) NOT NULL, Tdosmallint); Alter TABLE TDNN ADD CONSTRAINTPK_TDNN PRIMARY KEY (Manv, Mann) USE qlnv CREATE TABLE DMNN (Mann char (2) PRIMARY KEY, Tennnnvarchar(20)) CREATE TABLE DMNN (Mann char (2), Tennnnvarchar(20), CONSTRAINT PK_DMNN PRIMARY KEY (Mann) )

  7. Ràng buộc UNIQUE • 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 CONSTRAINTU_Tennn UNIQUENONCLUSTERED (Tennn) USE qlnv; CREATE TABLE DMNN ADD CONSTRAINTU_Tennn UNIQUENONCLUSTERED (Tennn)

  8. Ràng buộc CHECK • 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, HoTennvarchar(50) NOT NULL, Ngaysinhdatetime CHECK (Ngaysinh BETWEEN '01-01-1900' AND '01-01-2012'), maphongint ) USE qlnv;ALTER TABLE NhanvienADD CONSTRAINTCK_ngaysinhCHECK (ngaysinh > '01-01-1900' AND ngaysinh <‘01-01-2012’)

  9. Ràng buộc DEFAULT • Đượ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 ( MaPhongint PRIMARY KEY, TenPhongnvarchar(40) UNIQUE, DiaChinvarchar(50), Tel char (10) ) ALTER TABLE phongADD CONSTRAINTDF_diachi DEFAULT ‘123-ĐốngĐa - HN' FOR DiaChi USE qlnvCREATE TABLE Phong ( MaPhongint PRIMARY KEY, TenPhongnvarchar(40) UNIQUE, DiaChinvarchar(50) DEFAULTN'123-ĐốngĐa - HN', Tel char (10) )

  10. Ràng buộc Default • 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 DEFAULTphone_no_default AS '(000)000-0000' GOEXEC sp_bindefaultphone_no_default, ‘Phong.Tel'

  11. Ràng buộc khóa ngoài FOREIGN KEY • 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), TDosmallint, PRIMARY KEY (manv,mann), CONSTRAINT FK_TDNN_NhanVien FOREIGN KEY (manv) REFERENCES Nhanvien(manv), FOREIGN KEY (mann) REFERENCES DMNN(mann) )

  12. Các loại ràng buộc tham chiếu • 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

  13. Disabling Constraints • 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_Employees FOREIGN KEY (ReportsTo) REFERENCES dbo.Employees(EmployeeID)

  14. Disabling Constraints • 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_Employees

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

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

  17. Summary • 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 • 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.

More Related