文档介绍:1
复习
2
数据完整性的类型
数据完整性类型包括:实体完整性、参照完整性和用户定义完整性
实体完整性(Entity Integrity) :现实世界的实体是可区分的,即它们具有某种唯一性标识。相应地,关系模型中主键应作为唯一性标识。因此实体完整性规则规定基本关系的所有主键(Primary Key)都不能取空值(NULL) 。
Integrity Constraints
3
数据完整性的类型
数据完整性类型包括:实体完整性、参照完整性和用户定义完整性
参照完整性(Referential Integrity) :参照完整性维护表与表之间的相关性,通常用“主键(Primary Key)/外键(Foreign Key)”保证,其中Foreign Key可以取NULL值,或取其参照表中Primary Key的取值。
Integrity Constraints
4
数据完整性的类型
数据完整性类型包括:实体完整性、参照完整性和用户定义完整性
用户定义的完整性(User_defined Integrity ):针对某一具体数据的约束条件,由应用环境决定。例如:某个属性必须取惟一值(UNIQUE)、某个非主属性不能取NULL值、某个属性的取值范围在0~100之间(CHECK)等等。
Integrity Constraints
5
保证数据完整性
声明性数据完整性
声明性数据完整性用约束(Constraint)、规则(Rule)和默认(Default)在数据库中提供保证,这是保证完整性的较好方法。它驻留在数据库内,编程简单,开销小,能更集中管理和保证数据的一致性。
过程性数据完整性
过程性数据完整性用存储过程、触发器和应用程序代码保证,通常较为复杂、开销较大,但可以执行更多的业务规则。
通常,过程性数据完整性是声明性数据完整性的补充
Integrity Constraints
6
Example CAP
Integrity Constraints
7
Primary Keys, Foreign Keys, and Referential Integrity
Integrity Constraints
8
SQL Language-数据完整性
约束
级联参照完整性:直到SQL Server2000中才加入进来的功能,在Create Table与Alter Table命令中增加了ON DELETE和ON UPDATE子句。对这些子句指定CASCADE时,父表的操作级联到子表。
Alter Table Employee
Add Constraint emp_dept_FK Foreign Key (dept)
References department(dept_no)
ON DELETE CASCADE
ON UPDATE CASCADE
对department表中dept_no的任何改变都会影响到employee表。
9
SQL Language-数据完整性
约束
Check:约束列中能输入的值,Check约束用布尔表达式实现,当求出的值为false时,则不能进行插入或更新操作。
Check约束可以保证数据符合一定的格式,还可以引用同一表中的列,或引用函数。
10
SQL Language-数据完整性
约束
Check:
Create Table inventory
( item_code char(4) NOT NULL constraint CK_inventory_item_code Check (item_code like '[0-9][0-9][0-9][0-9]'),
high_volume int NOT NULL constraint CK_inventory_high_volume Check (high_volume>0),
low_volume int NOT NULL constraint CK_inventory_low_volume Check (low_volume>0),
Constraint CK_inventory_hi_lo_check
Check (high_volume>=low_volume)
)