实现数据完整性

上传人:mg****85 文档编号:50698436 上传时间:2018-08-10 格式:PPT 页数:38 大小:126KB
返回 下载 相关 举报
实现数据完整性_第1页
第1页 / 共38页
实现数据完整性_第2页
第2页 / 共38页
实现数据完整性_第3页
第3页 / 共38页
实现数据完整性_第4页
第4页 / 共38页
实现数据完整性_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《实现数据完整性》由会员分享,可在线阅读,更多相关《实现数据完整性(38页珍藏版)》请在金锄头文库上搜索。

1、第八讲 实现数据完整性v 数据完整性概述v 使用约束实现数据完整性主键、惟一、核查默认、外键约束v 使用规则实现数据完整性v 使用默认值实现数据完整性第八讲 实现数据完整性v 数据完整性概述数据完整性就是指存储在数据库中的数据正确无误并 且相关数据具有一致性。数据库中是否存在完整的数据关 系到数据库系统能否真实地反映现实世界。它是衡量数据 库中数据质量好坏的一种标志,是确保正确的数据被存放 在正确的位置的一种手段。 根据数据完整性机制所作用的数据库对象和范围不同 ,数据完整性可分 :实体完整性值域完整性引用完整性用户定义完整性第八讲 实现数据完整性v 数据完整性概述 1、实体完整性这里的实体指

2、表中的记录,一个实体就是表中的一条记录。实体 完整性要求在表中不能存在完全相同的记录,而且每条记录都要具有 一个非空且不重复的键值。这样就可以保证数据所代表的任何事物都 不存在重复。 实现实体完整性的方法主要有主键约束、唯一索引、唯一约束和 指定IDENTITY属性 2、域完整性组成记录的列称为域,域完整性也可称为列完整性。域完整性要 求向表中指定列输入的数据必须具有正确的数据类型、格式以及有效 的数据范围。实现域完整性的方法主要有CHECK约束、外键约束、默认约束 、非空定义、规则以及在建表时设置的数据类型。 第八讲 实现数据完整性v 数据完整性概述3、引用完整性引用完整性又称为参照完整性。

3、引用完整性是指作用于有关联的两个或两个以上的表,通过使用主键和外键或主键和唯一键之间的关系,使表中的键值在所有表中保持一致。实现引用完整性的方法主要有外键约束。4、用户定义的完整性用户定义的完整性是应用领域需要遵守的约束条件,其允许用户定义不属于其他任何完整性分类的特定业务规则。所有的完整性类型都支持用户定义完整性。第八讲 实现数据完整性v 使用约束实现数据完整性约束是SQL Server提供的自动强制数据完整性的一种方法,它是通过定义列的取值规则来维护数据的完整性。约束的类型: PRIMARY KEY(主键)约束 主键约束用来强制数据的实体完整性,它是在表中定义一个主键来唯一标识 表中的每行

4、记录。主键约束有如下特点:每个表中只能有一个主键,主键可 以是一列,也可以是多列的组合;主键值必须唯一并且不能为空,对于多列 组合的主键,某列值可以重复,但列的组合值必须唯一。 UNIQUE(唯一)约束 唯一约束用来强制数据的实体完整性,它主要用来限制表的非主键列中不允 许输入重复值。唯一约束有如下特点:一个表中可以定义多个唯一约束;每 个唯一约束可以定义到一列上,也可以定义到多列上;空值可以出现在某列 中一次。 第八讲 实现数据完整性v 使用约束实现数据完整性 NOT NULL(非空)约束 非空约束用来强制数据的域完整性,它用于设定某列值不能为空。如果指定 某列不能为空,则在进行插入记录时,

5、此列必须要插入数据。 CHECK(检查)约束 检查约束用来强制数据的域完整性,它使用逻辑表达式来限制表中的列可以 接受哪些数据值。 DEFAULT(默认)约束 默认约束用来强制数据的域完整性,它为表中某列建立一个默认值,当用户 插入记录时,如果没有为该列提供输入值,则系统会自动将默认值赋给该列 。默认值可以是常量、内置函数或表达式。使用默认约束可以提高输入记录 的速度。 FOREIGN KEY(外健)约束 外键是指一个表中的一列或列组合,它虽不是该表的主键,但却是另一个表 的主键。通过外键约束可以为相关联的两个表建立联系,实现数据的引用完 整性,维护两表之间数据的一致性关系。 第八讲 实现数据

6、完整性v 使用约束实现数据完整性约束还可以分为列约束和表约束两类。当约束被定义于某个表的一列时称为列约束,定义于某个表的多列时称为表约束。当一个约束中必须包含一个以上的列时,必须使用表约束。 约束的操作(创建、修改、删除) 注意:1、什么约束可以实现需要的数据完整性:不同的约束提供了不同的功能。 2、在什么时候实施约束最合适:SQL server允许推迟或者禁用某些已经定义的约束。第八讲 实现数据完整性v 使用约束实现数据完整性创建主建约束1、使用企业管理器创建1)打开企业管理器,展开控制台目录,依次展开服务器组、服务 器、数据库节点,选择表对象,在右边详细窗格中选择要创建约束的表,启动表设计

7、器。2)在表设计器中,选择需要设为主键的字段,如果需要选择多个字段时,可以按住Ctrl键,同时用鼠标单击每个要选择的字段 。3)选好字段后,右击选择的某个字段,从弹出的快捷菜单中选择“ 设置主键”命令 4)执行命令后,在作为主键的字段前有一个钥匙样图标。也可以在选择好字段后,单击工具栏中的“钥匙”工具按钮,设置主键5)设置主键完成。 第八讲 实现数据完整性v 使用约束实现数据完整性创建主建约束2、使用查询分析器创建主键 语法:CREATE TABLE TABLE_NAME( CLOUMN_NAME DATATYPECONSTRAINT CONSTRAINT_NAME PRIMARY KEY ,

8、N,CONSTRAINT CONSTRAINT_NAMEPRIMARY KEY(COLUMN_NAEM,N)定义列级主键约束定义表级主键约束第八讲 实现数据完整性v 使用约束实现数据完整性例: CREATE TABLE S_B(学号 CHAR(5),书号 CHAR(5),借阅时间 DATATIME,归还时间 DATATIME,CONSTRAINT P_Y PRIMARY KEY (学号,书号)此例题就是建立了一个表级主键。 在student库中,建立一个民族表(民族代码,民族名称),将民族代码指定为主键。CREATE TABLE 民族( 民族代码 char(2)CONSTRAINT pk_m

9、PRIMARY KEY,民族名称 varchar(30) NOT NULL)GO 此例题就是建立了一个列级主键第八讲 实现数据完整性v 使用约束实现数据完整性在已经存在的表中创建主键约束: 语法:ALTER TABLE table_nameADD CONSTRAINT constraint_namePRIMARY KEY CLUSTERED|NONCLUSTERED (column,n) 其中: constraint_name:指主键约束名称。 CLUSTERED:表示在该列上建立聚集索引。 NONCLUSTERED:表示在该列上建立非聚集索引。第八讲 实现数据完整性v 使用约束实现数据完整性

10、例: 在student库中的课程注册表中,指定字段注册号为表的主键,其程序清单如下:USE StudentGOALTER TABLE 课程注册ADD CONSTRAINT pk_zcePRIMARY KEY CLUSTERED (注册号)GO 第八讲 实现数据完整性v 使用约束实现数据完整性删除主键约束语法:ALTER TABLE table_nameDROPCONSTRAINT PRIMARYKEY_NAME例: ALTER TABLE S_BDROPCONSTRAINT P_Y浏览指定表中的主键信息:SP_PKEYS table_name第八讲 实现数据完整性v 使用约束实现数据完整性UN

11、IQUE约束UNIQUE约束主要是用来确保不受 主键约束的列上的数据的惟一性。主键与UNIQUE约束的区别主要为:1、 UNIQUE约束,主要用在非主键的一列或多列上要求数据惟一的情况。2、 UNIQUE约束,允许该列上存在NULL值,而主键 决不允许出现这种情况。3、可以在一个表上设置多个UNIQUE约束,而在一个表中只能设置一个主键约束。第八讲 实现数据完整性v 使用约束实现数据完整性创建UNIQUE约束语法:CREATE TABLE TABLE_NAME( CLOUMN_NAME DATATYPECONSTRAINT UNIQUE _NAME UNIQUE ,N,CONSTRAINT U

12、NIQUE _NAMEUNIQUE(COLUMN_NAEM,N)定义列级UNIQUE约束定义表级UNIQUE约束第八讲 实现数据完整性v 使用约束实现数据完整性创建UNIQUE约束例:创建一个表级的UNIQUE约束CREATE TABLE test( event_name char(20),event_type char(20),event_time datetime,event_id int CONSTRAINT PRIMARY KEY clustered,CONSTRAINT uniq_event UNIQUE (event_type,event_time) )GO第八讲 实现数据完整性v

13、 使用约束实现数据完整性添加UNIQUE约束 为存在的表创建惟一约束,其语法格式如下:ALTER TABLE table_nameADD CONSTRAINT unique_nameUNIQUE CLUSTERED|NONCLUSTERED (column,n) 例:在student库中,为“民族”表中的“民族名称”字段创建一个惟一约 束。其程序清单如下:ALTER TABLE 民族ADD CONSTRAINT uk_mzmz UNIQUE NONCLUSTERED (民族名称 )GO 第八讲 实现数据完整性v 使用约束实现数据完整性删除UNIQUE约束 为存在惟一约束的表中删除惟一约束,其语

14、法格式如下:ALTER TABLE table_nameDROP CONSTRAINT unique_name例:在student库中,为“民族”表中的“民族名称”字段删除惟一约 束。其程序清单如下:ALTER TABLE 民族DROP CONSTRAINT uk_mzmz GO 第八讲 实现数据完整性v 使用约束实现数据完整性 CHECK约束 CHECK(核查)约束通过检查输入表列的数据的值来维护值域的完 整性。核查约束通过对一个逻辑表达式的结果进行判断来对数据进行 核查。 注意: 可以在一列上设置多个核查约束,也可以将一个核查约束应用于多列。当一列受多个核查约束控制时,所有的约束按照创建的

15、顺序,依次进行数据有效性的核查。 一般来说,可以在下面两种情况下,设置核查约束无效:1、在执行INSERT语句或UPDATE语句过程:事先知道对数据的增加或修改将违反核查约束的规定,但这些操作又是必须的。2、在复制进行时,在进行不同服务器间的复制操作的过程中,由于两个服务器之间设置的核查约束不一致,如果不事先 使核查约束无效,则有可能使某些数据无法进行复制。第八讲 实现数据完整性v 使用约束实现数据完整性创建CHECK约束 使用SQL语句为已存在的表创建检查约束,其语法格式如下:ALTER TABLE table_nameColumn_name column_definitionCHECK N

16、OT FOR REPLICATION(check_criterial)|WITH CHECK|WITH NOCHECK ADD CONSTRAINT constraint_nameCHECK (logical_expression),N例:在student库中,为学生表的出生日期列创建一个检查约束,以保证输入的数据大于1950年1月1日而小于当天的日期。ALTER TABLE 学生ADD CONSTRAINT ck_csrq CHECK(出生日期01/01/1950 AND 出生日期GETDATE() ) GO添加新列的同时,添加核查约束在已经存在的列上添加核查约束第八讲 实现数据完整性v 使用

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号