第3篇_数据完整性.ppt

  1. 1、本文档共80页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章 数据完整性和索引 3.1 数据完整性的概述 数据完整性是指数据的精确性和可靠性。它是防止数据库中存在的不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而引出的,例如:学号字段有空值,记录出现多个学号相同情况,性别设置出男、女以外的字段值等。 3.1.1 数据完整性的分类 域完整性(列完整性) 数据完整性 1、实体完整性 也称行完整性,用于保证表中每条记录都是惟一的,即表中所有行都具有一个非空且不重复的健值,可以通过建立惟一索引、主键约束、UNIQUE约束或IDENTITY属性来实施实体完整性。 例1:为xsda表的身份证号列建立惟一索引,降序排列。 例2:创建学生表,用主键约束、UNIQUE键约束或标识列实施实体完整性。 数据完整性 例1: create unique index id_index on xsda(身份证号 DESC) 例2: Create table stu( 学号 int not null primary key identity1), 姓名 char(6) not null, 性别 char(2) default ‘男’, 出生日期 smalldatetime, 身份证号 bigint not null unique ) 数据完整性 2、域完整性 也称列完整性,用于限制向列中输入的内容,指定列值输入的有效性,保证指定列的数据具有正确的数据类型、格式和有效的数据范围。实现方法:数据类型、NOT NULL、CHECK约束、规则对象、DEFALULT约束、默认值对象。 【例题3-2】参见P58 数据完整性 3、参照完整性 也称引用完整性,保证主表中的数据与从表中数据的一致性。通过定义外键与主键之间或外键与惟一键之间的对应关系实现参照完整性。保证得是表间数据的一致性,防止数据丢失或无意义的数据在数据库中扩散。 参照完整性作用表现在如下几个方面: 禁止往外键列中插入主键列中没有的值; 禁止修改列键列,而不修改主键列的值; 禁止先从主键列所属的表中删除数据行。 【例题3-3】 参见P59 数据完整性 4、用户定义完整性 允许用户定义不属于其他任何完整性分类的特定的规则,可以通过存储过程、触发器来实施。 【例题3-4】参见P59 3.1.2 实施数据完整性的方法 1.用定义约束实现: 通过对表和字段定义声明的约束,将数据完整性作为数据定义的一部分,使用约束实现数据完整性。 2.编写程序实现 使用存储过程活触发器实现 3.选取数据完整性的实施方法 1)优先选约束原则 2)多个表之间的数据完整性,采用主键和外键约束。 3)复杂完整性检验,使用存储过程或触发器。 3.2 约束 约束是自动强制数据库完整性的方式。可在create table 中定义或在已建立结构的表中用alter table添加、删除和修改约束,不改变表结构的基础上完成约束的定义,它独立于表结构。当删除表时,约束随之删除。 3.2约束 在SQL Server 中有5种约束: 主键约束(primary key constraint) 外键约束(foreign key constraint) 唯一性约束(unique constraint) 检查约束(check constraint) 默认值约束(default constraint) 3.2.1 主键(PRIMARY KEY)约束 主键约束使用数据表中的一列数据或者多列数据来唯一的标识一行数据。也就是说,在数据表中不能存在主键相同的两行数据,而且主键约束下的列不能为空(NULL),在创建表时,最好每个数据表都拥有自己唯一的主键,主键也可以由几个列组合成。每个表只能有一个主键。 不能定义TEXT或IMAGE数据类型的字段列为主键。 3.2.2 SSMS创建主键的步骤 ① 在创建表结构的时候,选定列名或列名组合(shift键),在所选列上右击弹出相应菜单,如右图所示。 ②单击有钥匙图标的菜单项。 ③创建成功后该列名前出现一个小钥匙形状的图标如右图所示。 3.在CREATE TABLE命令中创建主键约束: [CONSTRAINT constraint_name] PRIMARY KEY [CLUSTERED|NONCLUSTERED] (column_name[,…n]) 例子 在执行创建产品信息表的操作时,指定产品编号为主键值,并且创建一个聚簇索引。 create table products( id char(10) not null, name char(2

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档