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

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

6
6
2
I. Giới thiệu toàn vẹn dữ liệu (Data Integrity)
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ả
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 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ố
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
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
NOT NULL, định nghĩa DEFAULT, thuộc tính
IDENTITY, CONTRAINTS, RULES, TRIGGERS,
IDENTITY, CONTRAINTS, RULES, TRIGGERS,
INDEXES.
INDEXES.

Xác định đúng
Xác định đúng
Data type
Data type
của


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

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

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


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

Xóa các toàn vẹn dữ liệu
Xóa các toàn vẹn dữ liệu
ALTER TABLE
ALTER TABLE<Table_Name>
<Table_Name>
DROP CONSTRAINT
DROP CONSTRAINT
<Constraint_Name>
<Constraint_Name>
5
II. Tìm hiểu các toàn vẹn dữ liệu.
II. Tìm hiểu các toàn vẹn dữ liệu.
1. Định nghĩa NULL/ NOT NULL
1. Định nghĩa NULL/ NOT NULL

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

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

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

Giá trị default có thể là một hằng; một hàm hệ
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
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.
hoặc một hàm do người dùng định nghĩa.
7

Định nghĩa Default constraing trong khi tạo bảng
Định nghĩa Default constraing trong khi tạo bảng
CREATE TABLE
CREATE TABLE
TableName(ColumnName datatype
TableName(ColumnName datatype
[NULL/NOT NULL]
[NULL/NOT NULL]


expression
expression
FOR
FOR
columnname
columnname
8
Vd1: Định nghĩa default khi tạo table
Vd1: Định nghĩa default khi tạo table
CREATE TABLE
CREATE TABLE
tbl_SinhVien
tbl_SinhVien
(
(
MaSV NOT NULL
MaSV NOT NULL
Primary key
Primary key
,
,
HoTen Nvarchar (100) NOT NULL,
HoTen Nvarchar (100) NOT NULL,
NgayNhapHoc smalldate NOT NULL,
NgayNhapHoc smalldate NOT NULL,
GioiTinh bit
GioiTinh bit
Defalut
Defalut

Constraint
ConstraintNgayNhapHoc
NgayNhapHoc
_DF
_DF
Default
DefaultGetDate()
GetDate()For
ForNgayNhapHoc
NgayNhapHoc
9

Đối tượng Default (Default Object)
Đối tượng Default (Default Object)
10
3. Thuộc tính Identity:
3. Thuộc tính Identity:


11
VD:
VD:
CREATE TABLE
CREATE TABLE
tbl_Khoa
tbl_Khoa
(
(
MaKhoa int
MaKhoa int
IDENTITY
IDENTITY
(1,1) ,
(1,1) ,
TenKhoa Nvarchar (100) Not Null,
TenKhoa Nvarchar (100) Not Null,
Phone varchar(15) Not Null
Phone varchar(15) Not Null
)
)
VD: Khi chèn dữ liệu có định nghĩa
VD: Khi chèn dữ liệu có định nghĩa
Identity
Identity
INSERT
INSERT
tbl_Khoa (Ho, Ten)
tbl_Khoa (Ho, Ten)
VALUES

+ Một mẫu định trước

Check có thể tham chiếu đến các cột khác trong cùng
Check có thể tham chiếu đến các cột khác trong cùng
một Table.
một Table.
13

Định nghĩa Check Constraint khi tạo Table
Định nghĩa Check Constraint khi tạo Table
Create Table
Create Table
TableName (ColumnName datatype
TableName (ColumnName datatype
[
[
Constraint
Constraint
ConstraintName]
ConstraintName]
Check
Check
[Not For Replication
[Not For Replication
] (logical_expression)
] (logical_expression)
CREATE TABLE
CREATE TABLE
tbl_NhanVien
tbl_NhanVien

Check
Check
( Diem>=0 )
( Diem>=0 )
)
)
14

Định nghĩa Check Constraint Table đã tồn tại
Định nghĩa Check Constraint Table đã tồn tại
ALTER TABLE
ALTER TABLE
TableName
TableName
[With Check/ with Nocheck]
[With Check/ with Nocheck]
ADD
ADD
[
[
CONSTRAINT
CONSTRAINTconstraintname]
constraintname]
CHECK
CHECK
[Not For Replication] (logical_expression)
[Not For Replication] (logical_expression)

ĐK trong mệnh đề WHERE như: Not, And, Or, IN, LIKE
ĐK trong mệnh đề WHERE như: Not, And, Or, IN, LIKE
và các toán tử so sanh
và các toán tử so sanh
15
5. Đối tượng Rule (Rule Object)
5. Đối tượng Rule (Rule Object)
CREATE RULE
CREATE RULE
RuleName
RuleName
AS
AS@Variable_Name = condition_expression
@Variable_Name = condition_expression
VD:
VD:
Create Rule
Create Rule
range_rule
range_rule
as
as
@range >= $1000 AND @range < $20000
@range >= $1000 AND @range < $20000
Create Rule
Create Rule
GioiTinh_rule

@Diem
Between
Between
0 and 10
0 and 10
16

Kết buộc Rule vào một Column
Kết buộc Rule vào một Column
Sp_bindrule
Sp_bindrule
‘RuleName’,‘<TableName>.<ColumnName>
‘RuleName’,‘<TableName>.<ColumnName>


VD:
VD:
Sp_bindrule
Sp_bindrule
‘Diem_rule’, ‘tbl_Diem.ThiLan1’
‘Diem_rule’, ‘tbl_Diem.ThiLan1’

Remove Rule
Remove Rule
sp_unbindrule
sp_unbindrule
‘<TableName>.<ColumnName>’
‘<TableName>.<ColumnName>’
VD:
VD:

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

Một cột chỉ có thể có một Ruler được kết buộc, bạn
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
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
Check Constraint. Cả hai đều có giá trị nhưng sẽ ưu
tiên Check Constraint.
tiên Check Constraint.

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

Rule chỉ tương tương với Check ở mức độ Column,
Rule chỉ tương tương với Check ở mức độ Column,
Rule không phải là một Constraint.
Rule không phải là một Constraint.
18
6. Primary key Constraint
6. Primary key Constraint

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

table có sẵn.

Để hiệu chỉnh constraint Primary key của một
Để hiệu chỉnh constraint Primary key của một
Table thì bạn phải xóa constraint Primary key và
Table thì bạn phải xóa constraint Primary key và
tạo lại.
tạo lại.

Đối với Column được tạo mà chấp nhận giá trị
Đố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
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 đó
thì ta phải hiệu chỉnh NOT NULL trước sau đó
mới gán cột đó là Primary Key và giá trị của cột
mới gán cột đó là Primary Key và giá trị của cột
nếu có không được trùng lắp.
nếu có không được trùng lắp.
20
Định nghĩa primary Key Constraint khi tạo bảng:
Định nghĩa primary Key Constraint khi tạo bảng:
CREATE TABLE
CREATE TABLE
<TableName>
<TableName>
( ColumnName DataType not null [
( ColumnName DataType not null [
CONSTRAINT
CONSTRAINT
N
N
u
u
l
l
l
l
)
)
Create Table
Create Table
tbl_MonHoc
tbl_MonHoc
(
(
MaMH char(10)
MaMH char(10)
not null
not null
Constraint
Constraint
PK_MaMH
PK_MaMH
Primary Key
Primary Key
,
,

ADD
[CONSTRAINT ConstraintName]
[CONSTRAINT ConstraintName]
PRIMARY KEY
PRIMARY KEY
(ColumnName)
(ColumnName)
VD:
VD:
Create Table
Create Table
tbl_Diem
tbl_Diem
(
(
MaSV char(10) Not null,
MaSV char(10) Not null,
MaMH char(10) Not null,
MaMH char(10) Not null,
Diem float
Diem float
Check
Check
(DiemThi
(DiemThi
Between
Between
0 and 10
0 and 10
)

PRIMARY KEY
PRIMARY KEY
(ColumnName)
(ColumnName)
VD:
VD:
Create Table
Create Table
tbl_Diem
tbl_Diem
(
(
MaSV char(10) Not null,
MaSV char(10) Not null,
MaMH char(10) Not null,
MaMH char(10) Not null,
Diem float
Diem float
Check
Check
(DiemThi
(DiemThi
Between
Between
0 and 10
0 and 10
)
)
)
)

Constraint
của một bảng khác,
của một bảng khác,
muốn xóa thì
muốn xóa thì
phải xóa Foreign key
phải xóa Foreign key
Constraint trước
Constraint trước
24
6. Forein key Constraint
6. Forein key Constraint

Một khóa ngoại (Foreign Key) sự kết hợp của
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 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ộ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
Mặc dù mục đích chính của một
Constraint
Constraint
Foreign Key
Foreign Key
là điều khiển dữ liệu có thể được
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
chứa trong bảng khóa ngoại, nhưng nó củng điều

Column_Name DataType [,…] ,
Column_Name DataType [,…] ,
[
[
CONSTRAINT
CONSTRAINT
Constraint_Name]
Constraint_Name]
FOREIGN KEY
FOREIGN KEY
[(column [,…n])]
[(column [,…n])]
REFERENCES
REFERENCES
ref_table [(ref_column[,…n])]
ref_table [(ref_column[,…n])]
[ON DELETE {CASCADE | NO ACTION} ]
[ON DELETE {CASCADE | NO ACTION} ]
[ON UPDATE {CASCADE | NO ACTION} ]
[ON UPDATE {CASCADE | NO ACTION} ]
[NOT FOR REPLICATION]
[NOT FOR REPLICATION]


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status