一、 实验目的
(1)掌握实现数据完整性方法
二、 实验器材
(1)PC机
(2)SQL Server数据库
三、 实验要求
(1)理解数据完整性的作用
(2)掌握实现数据完整性方法
四、 实验内容与步骤
(1)完整性分类
数据完整性指的是存储在数据库中的数据的一致性和准确性。
- 实体完整性
实体完整性将一特定表中的每一个数据行都定义为唯一实体,即它要求表中的每一条记录(每一行数据)是唯一的,每一数据行必须至少拥有一个唯一标识以区分不同的数据行。实体完整性是通过唯一性索引、唯一值约束、标识IDENTITY或主键约束来强制表的标识符列或主键的完整性。
- 域完整性
域完整性(Domain Integrity)是指数据库表中的列必须满足某种特定的数据类型或约束。其中约束又包括取值范围、精度等规定。表中的CHECK、FOREIGN KEY 约束和DEFAULT、 NOT NULL定义都属于域完整性的范畴。
- 引用完整性
引用完整性又叫参照完整性(Referential Integrity),属于表间规则。对于永久关系的相关表,在更新、插入或删除记录时,如果只改其一,就会影响数据的完整性。如删除父表的某记录后,子表的相应记录未删除,致使这些记录称为孤立记录。对于更新、插入或删除表间数据的完整性,统称为参照完整性。通常,在客观现实中的实体之间存在一定联系,在关系模型中实体及实体间的联系都是以关系进行描述,因此,操作时就可能存在着关系与关系间的关联和引用。
- 用户定义完整性
用户定义完整性( User-defined Integrity )是对数据表中字段属性的约束, 用户定义完整性规则(User-defined integrity)也称 域完整性规则。包括字段的值域、字段的类型和字段的有效规则(如小数位数)等约束,是由确定关系结构时所定义的字段的属性决定的。
(2)约束
SQL 约束用于规定表中的数据规则。如果存在违反约束的数据行为,行为会被约束终止。约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。
- PRIMARY KEY 约束
图2.1.1创建主键
图2.1.2更改表的主键约束
图2.1.3删除主键约束
- FOREIGN KEY 约束
图2.2.1创建外键约束
图2.2.2为已创建表添加外键约束
图2.2.3删除外键约束
- UNIQUE 约束
图2.3.1主键约束与唯一性约束
- CHECK 约束
图2.4.1创建表时添加CHECK约束
图2.4.2创建表后添加CHECK约束
5.DEFAULT 约束
图2.5.1创建表时定义默认值约束
图2.5.2对已创建表添加DEFAULT约束
6.NOT NULL 约束
图2.6.1创建NOT NULL约束
(3)级联引用完整性
图3.1级联更新
图3.2级联更新演示
图3.3级联删除
图3.4级联删除演示
(4)默认值和规则
默认值,用法同规则,它的作用类似于Default约束,是说在表中插入数据时,如果没有指定值,默认值自动指定数据值。规则,规则顾名思义是规矩制度的意思,在进行表操作时它的作用和check约束条件是类似的,但是一个表中只有一个规则,可有多个check约束。
1.默认值对象的基本操作
图4.1.1创建默认值对象
图4.1.2默认值对象绑定
图4.1.3解除默认值对象绑定
图4.1.4删除默认值对象
- 规则对象的基本操作
图4.2.1创建规则对象
图4.2.2绑定规则对象
图4.2.3验证规则对象
图4.2.4解除规则对象绑定
图4.2.5删除规则对象
(5)触发器
触发器(trigger)是个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由个事件来触发。触发器也可用于强制引用完整性,以便在多个表中添加、更新或删除行时,保留在这些表之间所定义的关系。然而,强制引用完整性的最好方法是在相关表中定义主键和外键约束。如果使用数据库关系图,则可以在表之间创建关系以自动创建外键约束。SQL Server 包括三种常规类型的触发器:DML 触发器、DDL 触发器和登录触发器。
图5.1after insert 触发器
图5.2after delete触发器
图5.3after update触发器
图5.4instead触发器
图5.5修改触发器
图5.6删除触发器
五、 实验总结
1. 数据完整性就是对数据库进行创建时,为了保证表中数据能够反映现实情况,而对表中数据列所做的约束。
2.触发器是自动执行的,一旦设立就存在一种触发机制,永远监控着数据库的事件状态。