SQL Server 2008基础教程 教学课件 ppt 作者 978-7-302-23526-2 ch09

上传人:E**** 文档编号:89374644 上传时间:2019-05-24 格式:PPT 页数:39 大小:937.50KB
返回 下载 相关 举报
SQL Server 2008基础教程 教学课件 ppt 作者  978-7-302-23526-2 ch09_第1页
第1页 / 共39页
SQL Server 2008基础教程 教学课件 ppt 作者  978-7-302-23526-2 ch09_第2页
第2页 / 共39页
SQL Server 2008基础教程 教学课件 ppt 作者  978-7-302-23526-2 ch09_第3页
第3页 / 共39页
SQL Server 2008基础教程 教学课件 ppt 作者  978-7-302-23526-2 ch09_第4页
第4页 / 共39页
SQL Server 2008基础教程 教学课件 ppt 作者  978-7-302-23526-2 ch09_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《SQL Server 2008基础教程 教学课件 ppt 作者 978-7-302-23526-2 ch09》由会员分享,可在线阅读,更多相关《SQL Server 2008基础教程 教学课件 ppt 作者 978-7-302-23526-2 ch09(39页珍藏版)》请在金锄头文库上搜索。

1、2019年5月24日,第1页,第9章 数据完整性,本章概述 本章要点 本章内容,2019年5月24日,第2页,本章概述,无论是产品,还是信息,质量都是非常重要的。信息质量是指信息的准确性、完整性、一致性等。在许多数据库应用系统中,数据质量的高低往往是影响该系统成功与否的重要因素。数据完整性是保证数据质量的一种重要方法,是现代数据库系统的一个重要特征。Microsoft SQL Server 2008系统提供了一系列的数据完整性方法和机制,例如约束、触发器等。其中,约束技术是应用最为广泛的数据完整性方法。本章详细讨论有关数据完整性的技术和方法。,2019年5月24日,第3页,本章要点,操纵数据时

2、的问题和解决机制 约束的基本概念和类型 管理DEFAULT约束 管理CHECK约束 管理主键约束 管理UNIQUE约束 管理外键约束 禁止约束的场景,2019年5月24日,第4页,本章内容,9.1 概述 9.2 约束的概念和类型 9.3 管理约束 9.4 禁止约束 9.5 本章小结,9.1 概述,本节讨论两个方面的内容。首先,分析操纵数据时经常遇到的问题。其次,提出解决这些问题的方法。 当操纵表中数据时,由于种种原因,经常会遇到一些问题。下面,分析一下这些问题的表现形式和特征。,2019年5月24日,第5页,常见问题,当向表中的某个列插入数据时,插入了不合适的数据,当时却没有被发现,例如员工进

3、入公司的日期早于该员工的出生日期。 一般地,某个公司中员工的姓名有可能是重复的,但是员工的编号是不会重复的。可是,人力资源部门的工作人员不小心,某个员工的编码出错了,造成有两个员工的编号是相同的。但是,当时并没有发现这种问题。 在许多公司的数据库中,往往有很多表,每一个表中都存在某个领域的数据。例如,人事表中存储了员工的基本信息,借款表中记录了员工的借款信息。但是,后来发现,借款表中的某个员工不是本公司的员工,因为人事表中没有该员工的基本信息。这种问题为什么会发生呢?,2019年5月24日,第6页,数据完整性,诸如此类的问题,不能仅靠数据录入人员和操纵人员的认真和负责,而是应该建立一套保障机制

4、:要么防止这些问题发生,要么发生这些问题时可以及时地发现。数据完整性就是解决这些问题的机制。 数据完整性就是指存储在数据库中的数据的一致性和准确性。在评价数据库的设计时,数据完整性的设计是数据库设计好坏的一项重要指标。在Microsoft SQL Server 2008系统中,有3种数据完整性类型,即域完整性、实体完整性和引用完整性。,2019年5月24日,第7页,域完整性,域完整性,也可以称为列完整性,指定一个数据集对某一个列是否有效和确定是否允许空值。 域完整性通常是经过使用有效性检查来实现的,并且还可以通过限制数据类型、格式或者可能的取值范围来实现。例如,设置员工进入公司的日期大于员工的

5、出生日期,,2019年5月24日,第8页,实体完整性,实体完整性,也可以称为行完整性,要求表中的所有行有一个唯一的标识符,这种标识符一般称为主键值。例如,对于所有的中国公民来说,居民身份证号码是唯一的,使用居民身份证号码可以唯一地确定某一个人,因此可以把公民的居民身份证号码作为主键对待。主键值是否能够被修改或表中的全部数据是否能够被全部删除都要依赖于主键表和其他表之间要求的完整性。对于一个公司来说,可以设置员工编号为主键,避免重复数据出现。,2019年5月24日,第9页,引用完整性,引用完整性保证在主键(在被参考表中)和外键之间的关系总是得到维护。如果被参考表中的一行被一个外键所参考,那么这一

6、行数据便不能直接被删除,用户也不能直接修改主键值。 例如,在一个数据库中有两个表,即人事表和财务表。人事表中记录了本单位的所有员工的基本信息,财务表记录了本单位员工的借款信息。一般地,如果某个公司员工有借款,那么他就不能从人事表中直接删除。,2019年5月24日,第10页,实现数据完整性,在Microsoft SQL Server 2008系统中,可以使用两种方式实现数据完整性,即声明数据完整性和过程数据完整性。,2019年5月24日,第11页,声明数据完整性和过程数据完整性,声明数据完整性就是通过在对象定义中定义的数据标准来实现数据完整性,是由系统本身自动强制来实现的。声明数据完整性的方式包

7、括使用各种约束、缺省和规则。例如,在某个表中定义了主键约束,那么这种定义就由系统自动强制实现。 过程数据完整性是通过在脚本语言中定义的数据完整性标准来实现的。在执行这些脚本的过程中,由脚本中定义的强制完整性实现。过程数据完整性的方式包括使用触发器和存储过程等。,2019年5月24日,第12页,9.2 约束的概念和类型,约束是通过限制列中数据、行中数据和表之间数据来保证数据完整性的非常有效的方法。约束可以确保把有效的数据输入到列中并维护表和表之间的特定关系。Microsoft SQL Server 2008系统提供了5种约束类型,即PRIMARY KEY(主键)、FOREIGN KEY(外键)、

8、UNIQUE、CHECK、DEFAULT约束。 每一种数据完整性类型,例如域完整性、实体完整性和引用完整性,都由不同的约束类型来保障。表9-1描述了不同类型的约束和完整性之间的关系。,2019年5月24日,第13页,使用sys.key_constraints目录视图,2019年5月24日,第14页,9.3 管理约束,本节详细研究各种DEFAULT、CHECK、主键、UNIQUE、外键等约束的特点、创建方式、修改等内容。,2019年5月24日,第15页,DEFAULT约束,当使用INSERT语句插入数据时,如果没有为某一个列指定数据,那么DEFAULT约束就在该列中输入默认值。 例如,在记录了人

9、事信息的person表的性别列中定义了一个DEFAULT约束为“男”。那么当向该表中输入数据时,如果没有为性别列提供数据,那么DEFAULT约束把默认值“男”自动插入到该列中。因此,DEFAULT约束可以实现指定的域完整性。,2019年5月24日,第16页,使用CREATE TABLE语句定义DEFAULT约束,2019年5月24日,第17页,使用ALTER TABLE语句定义DEFAULT约束,2019年5月24日,第18页,CHECK约束,CHECK约束用来限制用户输入某一个列的数据,即在该列中只能输入指定范围的数据。CHECK约束的作用类似于外键约束,两者都是限制某个列的取值范围,但是外

10、键是通过其他表来限制列的取值范围,CHECK约束是通过指定的逻辑表达式来限制列的取值范围。 例如,在描述学生性别的gender列中可以创建一个CHECK约束,指定其取值范围是“男”或者“女”。这样,当向gender列输入数据时,要么输入数据“男”,要么输入数据“女”,而不能输入其他不相关的数据。,2019年5月24日,第19页,使用CREATE TABLE语句定义CHECK约束,2019年5月24日,第20页,使用ALTER TABLE语句定义CHECK约束,2019年5月24日,第21页,主键约束,主键约束在表中定义一个主键值,这是唯一确定表中每一行数据的标识符。在所有的约束类型中,主键约束

11、是最重要的一种约束类型,也是使用最广泛的约束类型。该约束强制实体完整性。一个表中最多只能有一个主键,且主键列不允许空值。 例如,在students表中,一般将描述学生学号的studentID列作为主键值,因为studentID列中的值是唯一的。主键经常定义在一个列上,但是也可以定义在多个列上。当主键定义在多个列上时,虽然某一个列中的数据可能重复,但是这些列的组合值不能重复。,2019年5月24日,第22页,在CREATE TABLE语句中定义主键约束,2019年5月24日,第23页,定义包含了两个列的主键约束,2019年5月24日,第24页,UNIQUE约束,UNIQUE约束指定表中某一个列或

12、多个列不能有相同的两行或两行以上的数据存在。这种约束通过实现唯一性索引来强制实体完整性。当表中已经有了一个主键约束时,如果需要在其他列上实现实体完整性,又因为表中不能有两个或两个以上的主键约束,所以只能通过创建UNIQUE约束来实现。 例如,在students表中,主键约束创建在studentID列上,如果这时还需要保证该表中的存储身份证号的SSL列的数据是唯一的,可以使用UNIQUE约束。一般地,把UNIQUE约束称为候选的主键约束。,2019年5月24日,第25页,使用ALTER TABLE语句定义UNIQUE约束,2019年5月24日,第26页,外键约束,外键约束强制引用完整性。外键约束

13、定义一个列或多个列,这些列可以引用同一个表或另外一个表中的主键约束列或UNIQUE约束列。实际上,通过创建外键约束可以实现表和表之间的依赖关系。一般情况下,在Microsoft SQL Server关系型数据库管理系统中,表和表之间经常存在着大量的关系,这些关系都是通过定义主键约束和外键约束实现的。,2019年5月24日,第27页,包含了多个关系的关系图,2019年5月24日,第28页,在CREATE TABLE语句中定义外键约束,2019年5月24日,第29页,在ALTER TABLE语句中定义外键约束,2019年5月24日,第30页,删除外键约束,2019年5月24日,第31页,定义引用同

14、一个表中主键列的外键约束,2019年5月24日,第32页,9.4 禁止约束,在表上定义约束之后,就可以依靠约束来保证表中数据的完整性。但是,在某些特殊的情况下,需要禁止在已有的数据上应用定义的约束或者禁止在加载数据时应用约束。下面讨论有关禁止约束的内容。,2019年5月24日,第33页,禁止在已有的数据上应用约束,般地,在一个已经有数据的表上定义约束时,Microsoft SQL Server系统自动检查这些数据是否满足约束条件。然而,在某些特殊情况下,还可以禁止约束检查已经存在的数据是否满足约束的定义。禁止在已有的数据上应用约束,实际上就是说这些约束对表中已有的数据不起作用。这种禁止只有在向

15、表中增加约束时才能指定。,2019年5月24日,第34页,使用WITH NOCHECK子句,2019年5月24日,第35页,禁止在加载数据时应用约束,对于CHECK约束和外键约束,除了可以禁止对已有的数据应用约束之外,也可以在加载数据时禁止应用这些定义的约束。也就是说,在更新表中数据或向表中添加数据时,可以不判断这些数据是否与所定义的CHECK约束或外键约束冲突。,2019年5月24日,第36页,禁止和解禁约束应用到加载的数据,2019年5月24日,第37页,9.5 本章小结,本章研究了数据完整性技术。首先,提出了有关数据完整性方面存在的问题和解决的思路。其次,指出约束是数据完整性领域的一个重

16、要技术,并且研究了约束的类型和特点。接下来,对DEFAULT、CHECK、主键、UNIQUE、外键等约束类型进行了详细分析,分析内容包括这些约束的创建方式和使用特点。最后,讨论了有关禁止约束方面的问题。,2019年5月24日,第38页,【思考和练习】,1. 数据完整性的主要问题是什么? 2. 什么是域完整性、实体完整性和引用完整性? 3. 约束的作用和类型是什么? 4. DEFAULT约束的特点是什么? 5. 为什么要引入CHECK约束? 6. 主键约束的作用和创建方式是什么? 7. UNIQUE约束的使用场景是什么? 8. 外键约束的特点是什么? 9. 如何理解主键和外键之间的关系? 10. 如何删除表中的约束? 11. 为什么在加载数据时考虑禁止约束?,2019年5月24日,第39页,

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

当前位置:首页 > 高等教育 > 大学课件

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