主页 > 新闻中心 >

知识分享

数据完整性测试


一、数据完整性概述
数据完整性是指数据库中的数据应保持一致性和可靠性,进而防止数据库中不符合语义规定的数据进入数据库。数据库完整性测试,即在数据库表中发现不准确数据的过程。数据库完整性测试尽可能在数据存储的方式中发现问题。影响数据库存储数据的方式有很多因素,比如数据类型和长度可能导致数据截断或失去精确性。通过文档及代码审查,检查数据库管理系统是否提供了实体完整性定义语句、域完整性定义语句、参照完整性定义语句、用户自定义完整性定义语句。检查数据库管理系统是否提供了事务机制,在 SQL 语句批处理执行过程中发生错误的时候,通过回滚事务,使数据库恢复到事务开始之前的状态,就像什么也没有发生过一样,从而有效地保证数据的完整性,并实现数据库的并发访问。
二、数据完整性测试方法
    数据完整性测试具体设计如下:
a)检查该数据库是否提供了定义与数据完整性有关的语句。
    用 CREATE RULE 语句创建规则;
    用 DROP RULE 删除规则;
    用 CREATE DEFAULT 语句创建默认;
    用 DROP DEFAULT 删除默认;
    用 UPDATE 使用默认值;
    用存储过程 SP_BINDRULE 绑定规则/默认;
    用存储过程 SP_UNBINDRULE 解除规则/默认与字段的绑定;
    用 CREATE TABLE 语句在建立新表的同时定义约束;
    用 ALTER TABLE 语句向已存在表中添加约束。
b)检查该数据库是否提供了定义与数据完整性有关的控制策略。
    用 BEGIN TRANSACTION 语句,起动事务的开始; 用 COMMIT TRANSACTION 语句,提交事务;
    用 ROLLBACK TRANSACTION 语句,回滚事务;
    提供排它锁,不允许别的事务读取或修改已被锁定的资源;
    提供共享锁,允许别的事务读取已经被锁定的资源,但不允许对锁定的资源进行修改操作;
    用存储过程 sp_lock 检索系统中锁的有关信息; 用 SETLOCK_timeout 语句设置事务请求锁定的最长等待时间。
c)编写事务机制测试程序验证数据完整性。
    事务测试程序如下:
    BEGIN TRANSACTION
    INSERT s( sno,sgrade,sname,email) VALUES( ‘1008’,‘士 兵’,‘黄黄’,‘hh@ 126. com’)
    INSERT s( sno,sgrade,sname,email) VALUES( ‘1009’,‘排 长’,‘周周’,‘zz@ 126. com’)
    COMMIT TRANSACTION
    BEGIN T TRANSACTION
    INSERT s( sno,sgrade,sname,email) VALUES( ‘1008’,‘士 兵’,‘王王’,‘ww@ 126. com’)
    INSERT s( sno,sgrade,sname,email) VALUES( ‘1009’,‘排 长’,‘张张’,‘zz@ 126. com’)
    ROLLBACK TRANSACTION
    运行结束,查看数据库中的记录,前两条记录被成功插入,后两条记录没有被成功插入。测试通过,该数据库管理系统提供的事务机制可保证数据完整性。