第6章 保证数据的完整性1.docxVIP

  • 2
  • 0
  • 约9.03千字
  • 约 15页
  • 2023-08-08 发布于天津
  • 举报
第六章保证数据的完整性 理论学习(教学)目标: 了解数据完整性的概念。 了解数据完整性的各种类型。 掌握各种约束的使用特点。 技能学习(教学)目标: 熟练掌握各种约束的设置方法。 掌握各种约束的管理办法。 在对数据库中数据操作的过程中,数据的添加、修改、删除都有可能造成数据的破坏或者出 现表间数据的不一致,如何能保证输入数据的准确无误呢?在SQL Server2008中,系统本身提供 了维护机制,通过约束、默认值、规则、触发器等维护机制来保证数据库中数据的正确性和一致 性。 6.1数据完整性的概念 数据完整性就是指存储在数据库中的数据正确无误并且相关数据具有一致性。例如,在“学 生”表中,每个学生的信息应该是唯一的,不能存在两位学生的信息完全一致;学生的学号应具 有唯一性;学生所在的系,专业,班级必须是存在的。根据完整性的机制不同,数据完整性可分 为:实体完整性、域完整性、参照完整性和用户定义完整性4种类型。 6.1.1实体完整性 这里的实体即表中的记录。实体完整性要求在表中不能存在完全相同的记录,即表中的每一 条必须是唯一的。实体完整性可以通过设置主键约束、唯一性约束、标识列(IDENTITY)等多种 方法来实现。例如,“学生”表的学生编号可设为主键,则每条记录的学号唯一,并且不能为空, 这样就能保证学生记录的唯一性。 6.1.2域完整性 域完整性也称为列完整性,要求向表中输入的数据必须具有正确的类型、格式及有效的数据 范围。例如,在“成绩”表中,成绩字段的值应在0-100之间;在“学生”表中,性别字段的值应 为“男”或“女”,如果输入了超出此范围的数据,系统就会拒绝接受。域完整性的实现可使用 用默认值(DEFAULT),检查约束(CHECK)、外键约束(FOREIGN)和规则(RULE)等方 法来实现。 6.1.3参照完整性 参照完整性又称为引用完整性。参照完整性是指作用于有关联的两个或两个以上的表,通过 使用主键和外键的关系,使表中的数据与其相关表中数据保持一致。设置参照完整性后,在用户 插入、删除、更新记录时,系统将保持表间已定义的关系,确保相关表中数据的一致性。 6.1.4用户定义完整性 用户定义完整性使用户得以定义不属于以上三种完整性分类的业务规则。由于每个用户的数 据库都有自己独待的业务规则,所以系统必须有一种方式来实现定制的业务规则,即用户定义完 整性约束。用户定义完整性可以通过用户定义数据类型、规则、触发器等来实现。 6.2使用约束 6.2.1约束的定义 约束是SQL Server2008提供的自动强制数据完整性的一种方法,常用的约束包括:主键约束 (PRIMARY KEY)、唯一键约束(UNIQUE)、检查约束(CHECK)、外键约束(FOREIGN KEY)、 默认约束(DEFAULT)和级联引用完整性约束。 PRIMARY KEY 主键约束 主键约束主要用来强制数据的实体完整性,保证表中每条记录的唯一性。主键约束有如下特 点. 八、、: 每个表中只能定义一个主键。 主键值必须唯一并且不能为空。 主键可以是一列,也可以是多列的组合。对于多列组合的主键,某列值可以重复,但列的组 合值必须唯一。 4.image和text类型的列不能被定义为主键。 5.当向已有数据的表中添加主键约束时,系统检查列中现有数据以确保现有数据遵从主键的规 则,所以在添加主键之前,要保证主键列没有空值和重复值。 主键约束的添加、删除和修改可以使用对象资源管理器或在查询分析器中使用Transac-SQL 语言实现。 1.使用对象资源管理器创建主键约束 下面以“学生”表为例,介绍使用对象资源管理器创建主键的步骤。 在对象资源管理器中,用鼠标右键单击“学生”表,从弹出的快捷菜单中选择“设计”命令, 启动表设计器。在表设计器中,选择需要设为主键的字段,如果需要选择多个字段,可以按住CTRL 键,同时用鼠标单击每个要选择的字段。然后右单击选好字段,从弹出的快捷菜单中选择“设置 主键”命令。执行命令后,在作为主键字段前有一个钥匙样图标。也可以用工具栏中“钥匙”按 钮,设置主键。设置完毕后,保存并关闭表设计器。 图6.1 “设置主键”对话框 2、使用SQL语句创建主键约束 可以在建表时设置主键,也可使用ALTER TABLE为已存在的表创建主键约束,修改表添加 主键约束的语法如下: ALTER TABLE table_name ADD CONSTRAINT constraint_name PRIMARY KEY [CLUSTERED|NONCLUSTERED] ((column_name[,…n])} 其中: Constraint_name指主键约束名称。 CLUSTERED表示在该列上建立聚集索引。 NONCLUSTERED表示在该列上建立非聚

文档评论(0)

1亿VIP精品文档

相关文档