1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài giảng điện tử môn tin học: Ràng buộc và Toàn vẹn dữ liệu ppsx

31 1,2K 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 31
Dung lượng 354,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

 Xác định đúng Data type Xác định đúng Data type của Column của Column hoặc biến variable cũng là một cách thúc ép tính toàn vẹn dữ liệu VD: không thể chấp nhận giá trị của cột Ten

Trang 1

Ràng buộc (Contraint) và Toàn vẹn dữ liệu (Data Integrity)

Ràng buộc (Contraint) và Toàn vẹn dữ liệu (Data Integrity)

6

Trang 2

I Giới thiệu toàn vẹn dữ liệu (Data Integrity)

Toàn vẹn dữ liệu là đề cập đến trạng thái của tất cả

các giá trị dữ liệu lưu trữ trong CSDL là đúng

Các table trong CSDL của SQL Server có một số

loại toàn vẹn dữ liệu khác nhau VD: định nghĩa NOT NULL, định nghĩa DEFAULT, thuộc tính IDENTITY, CONTRAINTS, RULES, TRIGGERS, INDEXES.

Xác định đúng Data type Xác định đúng Data type của Column của Column hoặc biến

(variable) cũng là một cách thúc ép tính toàn vẹn

dữ liệu

VD: không thể chấp nhận giá trị của cột TenSinhVien

là một giá trị dạng ngày giờ cũng như ngược lại

Trang 3

Các loại Ràng buộc 4 loại

Ràng buộc thực thể: đảm bảo rằng một dòng được xác định duy nhất bởi một hoặc nhiều thuộc tính gọi là khóa chính (Primary Key)

Ràng buộc miền trị: đảm bảo rằng giá trị được lưu giữ trong 1 cột phải nằm trong một miền trị hợp lệ được xác định trước (CHECK)

Ràng buộc tham chiếu: đảm bảo rằng giá trị của khóa ngoại (Foreign Key) được lưu trữ phải là khóa chính (Primary Key) trong Table khác

Ràng buộc do người dùng định nghĩa:

Trang 4

Định nghĩa ràng buộc: Ràng buộc được định

nghĩa khi thiết kế cấu trúc table (Create Table) hay hiệu chỉnh table (Alter Table)

Để kiểm tra hoặc xem các toàn vẹn dữ liệu

Sp_HelpConstraint <Table_Name>

Hoặc Bật cửa sổ

Hoặc Bật cửa sổ Object Browser Object Browser của Query của Query

Analyzer , mở nhánh Constraint của từng table

Xóa các toàn vẹn dữ liệu

ALTER TABLE <Table_Name>

DROP CONSTRAINT <Constraint_Name>

Trang 5

II Tìm hiểu các toàn vẹn dữ liệu.

1 Định nghĩa NULL/ NOT NULL

Một giá trị NULL không đồng nhất với giá trị

0, khoảng trắng, chuỗi rỗng.

NULL có nghĩa là không có thao tác nhập nào

thực hiện được.

Việc chỉ định một cột không chấp nhận giá trị

Null có thể giúp duy trì tính toàn vẹn dữ liệu.

Nên tránh dùng NULL vì chúng gây ra nhiều

phức tạp hơn trong các truy vấn cũng như cập

Trang 6

2 Default Contraint:

Default constraint có thể được tạo tại thời

điểm tạo Table, thêm sau khi Table được tạo.

Chì có một giá trị Default có thể được tạo cho

một cột.

Các cột TIMESTAMP, IDENTITY và

ROWGUIDCOL không thể có default constraint, vì giá trị của chính đã tự động xác định.

Giá trị default có thể là một hằng; một hàm hệ

thống; một biến toàn cục, như @@trancount hoặc một hàm do người dùng định nghĩa.

Trang 7

Định nghĩa Default constraing trong khi tạo bảng

CREATE TABLE TableName(ColumnName datatype

[NULL/NOT NULL]

[CONSTRAINT constraintname] DEFAULT expression

Định nghĩa Default constraint đối với một bảng đã

tồn tại.

ALTER TABLE tablename

ADD [CONSTRAINT constraintname] DEFAULT

expression FOR columnname

Trang 8

Vd1: Định nghĩa default khi tạo table

CREATE TABLE tbl_SinhVien

( MaSV NOT NULL Primary key MaSV NOT NULL Primary key ,

HoTen Nvarchar (100) NOT NULL,

NgayNhapHoc smalldate NOT NULL,

GioiTinh bit

GioiTinh bit Defalut Defalut 1 )

Vd2: Định nghĩa default khi table đã tồn tại

Alter Table tbl_SinhVien

Add Default GetDate() GetDate() NgayNhapHoc_DF NgayNhapHoc_DF For For NgayNhapHoc

Hoặc:

ALTER TABLE tbl_SinhVien

Add Constraint NgayNhapHoc_DF Default GetDate() For

NgayNhapHoc

Trang 9

Đối tượng Default (Default Object)

Trang 10

3 Thuộc tính Identity:

Identity là một thuộc tính của Column, nó hẳn

không là một constraint Tuy nhiên, Identity dùng để ràng buộc sự tồn tại dữ liệu.

Một Table chỉ có duy nhất một Column được

định nghĩa Identity.

Kiểu dữ liệu của cột Identity phải là kiểu số

nguyên.

Giá trị của cột Identity sẽ tự động tăng.

Identity được định nghĩa khi tạo Table, hoặc

khi hiệu chỉnh Column bằng lệnh Alter Table

Trang 11

CREATE TABLE tbl_Khoa

( MaKhoa int IDENTITY (1,1) ,

TenKhoa Nvarchar (100) Not Null,

Phone varchar(15) Not Null

)

VD: Khi chèn dữ liệu có định nghĩa Identity

INSERT tbl_Khoa (Ho, Ten)

VALUES (N ‘Công nghệ thông tin’ , ‘0613886699’ )

Trang 12

4 Check Constraint:

Check giới hạn các giá trị có thể đưa vào cột Chúng sẽ

xác định các giá trị nào là hợp lệ.

Một cột có thể có nhiều hơn một Check constraint,

chúng được lượng giá theo thứ tự được tạo.

Các check constraint giới hạn các giá trị được phép

Trang 13

Định nghĩa Check Constraint khi tạo Table

Create Table TableName (ColumnName datatype

[ Constraint ConstraintName]

Check [Not For Replication] (logical_expression)

CREATE TABLE tbl_NhanVien

( MaNV int Primary Key,

HoTen Nvarchar (100) Not Null,

NgayLV int Check (NgayCong> 0 and NgayCong<32) )

CREATE TABLE tbl_Diem

( MaSV char(10) Not Null,

Trang 14

Định nghĩa Check Constraint Table đã tồn tại

ALTER TABLE TableName

[With Check/ with Nocheck] ADD [CONSTRAINT

constraintname]

CHECK [Not For Replication] (logical_expression)

Alter Table tbl_ChuVu

Add Constraint CK_NV_HSCV Check

(HSPC >= 0 1 and HSCV < 0 5)

Alter Table tbl_BaoHiem

Add Constraint CK_Ngay Check (EndDate > Startdate)

Ghi chú: logical_expression là biểu thức điều kiện dùng giống

ĐK trong mệnh đề WHERE như: Not, And, Or, IN, LIKE

và các toán tử so sanh

Trang 15

5 Đối tượng Rule (Rule Object)

CREATE RULE RuleName AS

@Variable_Name = condition_expression

VD:

Create Rule range_rule as

@range >= $1000 AND @range < $20000

Create Rule GioiTinh_rule as

@GioiTinh IN ('Nam', N'Nữ')

Create Rule SoXe_rule as

@SoXe Like '[0-9][0-9]-[A-Z][0-9]-[0-9][0-9][0-9][0-9]'

Trang 16

Kết buộc Rule vào một Column

Trang 17

Ghi chú về Rule Object:

Ruler là một tính năng tương thích ngược để định

nghĩa các quy tắc hợp lệ.

Phải tháo gỡ tất cả các kết buộc (sp_unbindrule) của

Rule trước khi xóa rule (Drop Rule)

Một cột chỉ có thể có một Ruler được kết buộc, bạn

có thể kết buộc một Ruler với cột đã có định nghĩa Check Constraint Cả hai đều có giá trị nhưng sẽ ưu tiên Check Constraint.

Rule có thể tham chiếu đến nhiều Column của Table.

Trang 18

6 Primary key Constraint

Một Table chỉ có một constraint Primary key.

SQL Server tự động tạo một chỉ mục (Index) cho

Table ứng với các cột tham gia primary key.

Column là Primary key không thể chấp nhận giá

trị Null, trùng lắp.

Nếu một Primary key constraint được ấn định

trên nhiều cột, các giá trị có thể được lập lại trong một cột, nhưng mỗi sự kết hợp giá trị từ tất cả các cột trong Primary key constraint phải là sự kết hợp duy nhất.

Trang 19

a Tạo Primary key Constraint

Có thể tạo constraint Primary key trong khi tạo

Table hoặc thêm constraint Primary key cho table có sẵn.

Để hiệu chỉnh constraint Primary key của một

Table thì bạn phải xóa constraint Primary key và tạo lại.

Đối với Column được tạo mà chấp nhận giá trị

NULL khi hiệu chỉnh cột đó là giá Primary Key thì ta phải hiệu chỉnh NOT NULL trước sau đó

Trang 20

Định nghĩa primary Key Constraint khi tạo bảng:

CREATE TABLE <TableName>

( ColumnName DataType not null [

( ColumnName DataType not null [CONSTRAINT CONSTRAINT

ConstraintName]

ConstraintName] PRIMARY KEY PRIMARY KEY )

Create Table tbl_SinhVien

( MaSV char(10) not null Primary Key,

TenSV Nchar(100) Not Null )

Create Table tbl_MonHoc

( MaMH char(10) not null

Constraint PK_MaMH Primary Key,

TenMH Nchar(100) Not Null )

Trang 21

Định nghĩa Primary Key Constraint bảng đã tồn tại: ALTER TABLE TableName

ADD [CONSTRAINT ConstraintName]

PRIMARY KEY (ColumnName)

VD:

Create Table tbl_Diem

( MaSV char(10) Not null,

MaMH char(10) Not null,

Trang 22

Định nghĩa Primary Key Constraint bảng đã tồn tại:

ALTER TABLE TableName

ADD [CONSTRAINT ConstraintName]

PRIMARY KEY (ColumnName)

VD:

Create Table tbl_Diem

( MaSV char(10) Not null,

MaMH char(10) Not null,

Diem float

Diem float Check Check (DiemThi Between (DiemThi Between 0 and 10 )

)

Alter Table tbl_Diem

Add Constraint PK_tbl_Diem

Primary Key Primary Key (MaSV, MaMH )

Trang 23

Lưu ý: Không thể xóa một Primary

Key Constraint nếu nó được tham

Trang 24

6 Forein key Constraint

Một khóa ngoại (Foreign Key) sự kết hợp của

một hoặc nhiều cột được thiết lập và tuân theo một liên kết giữa các dữ liệu trong hai bảng

Mặc dù mục đích chính của một Constraint Mặc dù mục đích chính của một Constraint

Foreign Key là điều khiển dữ liệu có thể được chứa trong bảng khóa ngoại, nhưng nó củng điều khiển các thay đổi đối với bảng khóa chính

Một Constraint Foreign Key Một Constraint Foreign Key sẽ ngăn chặn tình

trạng mồ côi dữ liệu

trạng mồ côi dữ liệu Constraint Foreign Key Constraint Foreign Key sẽ bảo đảm không cho phép bạn xóa dữ liệu trong bản chính chứa

bản chính chứa Primary Key Primary Key

Trang 25

Định nghĩa Foreign Key Constraint khi tạo Table:

CREATE TABLE Table_Name

( Column_Name DataType [,…] ,

[

[CONSTRAINT CONSTRAINT Constraint_Name]

FOREIGN KEY [(column [,…n])]

REFERENCES ref_table [(ref_column[,…n])]

[ON DELETE {CASCADE | NO ACTION} ]

[ON UPDATE {CASCADE | NO ACTION} ]

Trang 26

CREATE TABLE PhongBan

TenPB varchar (30)

TenNV Nvarchar (100),

MaPB int not null,

MaCV int not null

)

Trang 27

Đ/nghĩa Foreign Key Constraint khi Table đã tồn tại:

[ WITH CHECK / WITH NO CHECK] ADD

[

[ON DELETE { CASCADE | NO ACTION } ]

[ON UPDATE { CASCADE | NO ACTION } ]

[NOT FOR REPLICATION]

Trong đó:

vi phạm ràng buộc hay không, nếu có sẽ không tạo Constraint.

Trang 28

Create Table ChucVu

( MaCV int PRIMARY KEY,

TenCV varchar (30),

HSPC Real )

Alter Table NhanVien

Add Constraint FK_NV_CV FK_NV_CV Foreign Key Foreign Key (MaCV)

References ChucVu (MaCV)

Lưu ý:

ON DELETET CASCADE | NO ACTION

ON UPDATE CASCADE | NO ACTION

Trang 29

Định nghĩa UNIQUE Constraint khi tạo Table:

CREATE TABLE TableName

( ColumnName datatype [,…]

[

[CONSTRAINT CONSTRAINT ConstraintName]

UNIQUE [CLUSTERED | NONCLUSTERED]

{ (Column [ASC | DESC] [,…])}

[ON {filegroup | DEFAULT}])

)

Trang 30

Định nghĩa UNIQUE Constraint Table đã tồn tại:

ALTER TABLE TableName

ADD ColumnName Datatype

[CONSTRAINT ConstraintName]

UNIQUE [CLUSTERED | NONCLUSTERED]

[ON {filegroup / DEFAULT}] [,…]

Hoặc:

ALTER TABLE TableName

ADD [ [CONSTRAINT CONSTRAINT ConstraintName]

UNIQUE [CLUSTERED | NONCLUSTERED]

{ (Column [ASC | DESC][,…n]) } [ ON { filegroup | DEFAULT} ]

Ngày đăng: 11/08/2014, 22:22

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm