第7章-数据完整性-SQL-教学课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第7章-数据完整性-SQL-教学课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 完整性 SQL 教学 课件
- 资源描述:
-
1、第第7章章 数据完整性数据完整性 2023年2月12日星期日1第第7 7章章 数据完整性数据完整性 q 数据完整性的概念数据完整性的概念 q 约束管理约束管理 q 默认管理默认管理 q 规则管理规则管理 q 完整性技术比较研究完整性技术比较研究 q 习题习题第第7章章 数据完整性数据完整性 2023年2月12日星期日2一、数据完整性的概念一、数据完整性的概念 所谓完整性,就是指存储在数据库中数据的一致性和正确性。数据完整性是衡量数据库中数据质量好坏的一种标志,是确保数据库中数据一致、正确以及符合企业规则的一种思想,是使无序的数据条理化,确保正确的数据被存放在正确的位置的一种手段,实施数据库完整
2、性的目的是确保数据的质量。所以,满足完整性要求的数据具有以下3个特点:数据的值正确无误。数据的存在必须确保同一表格数据之间的和谐关系。数据的存在必须能确保维护不同表格数据之间的和谐关系。在Microsoft SQL Server系统中,从维护数据完整性的意义上来看,数据完整性分为四类:实体完整性、域完整性、参考完整性、用户定义的完整性。第第7章章 数据完整性数据完整性 2023年2月12日星期日31.实体完整性实体完整性实体完整性,也可以称为行完整性,规定表的每一行在表中是惟一的实体。实体就是数据库所要表示的一个实际的物体或事件。实体完整性要求每个实体都保持惟一性,因此,要求表中的所有行有一个
3、惟一的标识符,这种标识符一般称为主键值。实体完整性要求数据库表中的每一条记录都是惟一的,即表中没有重复的记录。因此,这就要求所有数据记录中至少必须有一个字段的内容是不能重复的。第第7章章 数据完整性数据完整性 2023年2月12日星期日42域完整性(值域完整性)域完整性(值域完整性)域完整性,也可以称为列完整性,是指给定列的输入有效性,即数据库表中的列必须满足某种特定的数据类型或约束。指定一个数据集对某一个列是否有效和确定是否允许空值。域完整性通常是通过有效性检查来实现的,并且还可以通过限制数据类型、格式或者可能的取值范围来实现。因此,强制域有效性的方法有:限制类型(通过数据类型)、格式(通过
4、 CHECK 约束和规则)或可能值的范围(通过 FOREIGN KEY 约束、CHECK 约束、DEFAULT 定义、NOT NULL 定义和规则)。第第7章章 数据完整性数据完整性 2023年2月12日星期日53.参照完整性(引用完整性)参照完整性(引用完整性)参照完整性是在插入或删除数据时,维护表格间数据一致性的手段。参照完整性确保在不同表之间的关键性数据保持一致(涉及两个或两个以上表的数据的一致性维护),防止了数据丢失或无意义的数据在数据库中扩散。当添加、删除或修改数据库表中的记录时,可以借助引用完整性来保证相关联的表之间的数据一致性。在SQL Server中,参照完整性一般建立在主键与
5、外键之间的关系,或者外键与唯一索引之间关系的基础上,它确保了有主关键字的表中对应其它表的外部关键字的行存在。第第7章章 数据完整性数据完整性 2023年2月12日星期日6第第7章章 数据完整性数据完整性 2023年2月12日星期日74.用户定义的完整性用户定义的完整性这是由用户定义的完整性。用户定义的完整性即是针对某个特定关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。SQL Server 提供了定义和检验这类完整性的机制,以便用统一的系统方法来处理它们,而不是用应用程序来承担这一功能。用户定义完整性可以定义不属于其他任何完整性分类的特定业务规则,其它的完整性类型都支持
6、用户定义的完整性。用户定义的完整性主要是体现实际运用的业务规则,可以通过前面三种完整性的实施而得到维护。例如:在titles表中,规定商业类用书的title_id的前两个字符必须是BU等。第第7章章 数据完整性数据完整性 2023年2月12日星期日8实现数据完整性实现数据完整性在Microsoft SQL Server系统中,可以使用两种方式实现数据完整性,即声明数据完整性和过程数据完整性。声明数据完整性(说明性引用数据完整性)声明数据完整性(说明性引用数据完整性)就是通过在对象定义中定义的数据标准来实现数据完整性,在插入、修改和删除数据时由系统本身自动强制来实现的。声明数据完整性的方式包括使
7、用各种约束、缺省和规则。过程数据完整性(引用的行动完整性)过程数据完整性(引用的行动完整性)是通过在脚本语言中定义的数据完整性标准来实现的。在执行这些脚本的过程中,由脚本中定义的强制完整性的实现。过程数据完整性的方式包括使用视图、触发器和存储过程等,其中视图和存储过程不能自动执行。第第7章章 数据完整性数据完整性 2023年2月12日星期日9实现数据完整性的途径实现数据完整性的途径数据完整性类型实施途径数据完整性类型实施途径实体完整体性主键约束 PRIMARY KEY域完整性默认值约束 Default惟一性约束 Unique Key检查约束 Check索引 Unique Index外键约束 F
8、oreign Key标识列 Identity Column数据类型 Data Type参照完整性外键约束 Foreign Key规则 Rule检查约束 Check用户定义完整性Rule、Triggers、Procedure触发器 TriggersCreate Table中的全部列级和表级约束系统存储过程 Stored Procedure第第7章章 数据完整性数据完整性 2023年2月12日星期日10二、约束管理二、约束管理 约束是通过限制列中、行中和表之间数据输入值的范围来保证数据完整性的非常有效的方法。约束可以分为两种:列级约束:是行定义的一部分,只能够应用在一列上。表级约束:其定义独立于列
9、的定义,可以应用在一个表中的多个列上。约束的类型 定义约束 默认管理 检查约束管理 主键约束管理 惟一性约束管理 外键约束管理 约束类型约束类型综合例题第第7章章 数据完整性数据完整性 2023年2月12日星期日11约束的类型约束的类型完整性类型完整性类型约约 束束 类类 型型描描 述述域完整性域完整性DEFAULT(缺省)在使用INSERT语句插入数据时,如果某个列的值没有明确提供,则将定义的缺省值插入到该列中CHECK(检查)指定某一个列中的可保存值的范围实体完整性实体完整性PRIMARY KEY(主键)每一行的惟一标识符,确保用户不能输入冗余值和确保创建索引,提高性能,不允许空值UNIQ
10、UE(惟一性)防止出现冗余值,并且确保创建索引,提高性能。允许空值参考完整性参考完整性FOREIGN KEY(外键)定义一列或几列,其值与本表或者另外一个表的主键值匹配约束是保证数据完整性的有效方法。约束可以确保把有效的数据输入到列中和维护表和表之间的特定关系。每一种数据完整性类型,例如实体完整性、域完整性、参考完整性,都由不同的约束类型来保障。下表描述了不同类型的约束和完整性之间的关系。第第7章章 数据完整性数据完整性 2023年2月12日星期日12定义约束定义约束定义约束从无到有的创建约束,这种操作可以使用CREATE TABLE语句或ALTER TABLE语句完成。使用CREATE TA
11、BLE语句表示在创建表的时候定义约束,使用ALTER TABLE语句表示在已有的表中添加约束。如果表中已经有数据,那么也可以增加约束。第第7章章 数据完整性数据完整性 2023年2月12日星期日13CREATE TABLE语句语句CREATE TABLE table_name(column_name data_type CONSTRAINT constraint_name PRIMARY KEY CLUSTERED|NONCLUSTERED|UNIQUE CLUSTERED|NONCLUSTERED|FOREIGN KEY REFERENCES ref_table(ref_colunm)|DE
12、FAULT constant_expression|CHECK logical_expression 使用ALTER TABLE语句定义约束的语法与使用CREATE TABLE语句定义约束的语法类似。第第7章章 数据完整性数据完整性 2023年2月12日星期日14【示例】定义一个主键约束CREATE TABLE students(student_id int NOT NULL CONSTRAINT PK_student_id PRIMARY KEY,student_name varchar(10)NOT NULL,student_gender char(1)NOT NULL,student_b
13、irthday datetime NOT NULL)第第7章章 数据完整性数据完整性 2023年2月12日星期日15当定义约束或修改约束的定义时,应该考虑下列因素:l不必删除表,就可以直接创建、修改和删除约束的定义。l应该在应用程序中增加错误检查机制,测试数据是否与约束相冲突。l当在表上增加索引时,SQL SERVER系统检查表中的数据是否与约束冲突。当创建约束时,应该指定约束的名称。否则,系统将要提供复杂的、系统自动生成的名称。对于一个数据库来说,约束名称必须是惟一的。一般来说,约束的名称格式应该是:约束类型简称约束类型简称_表名表名_列号列号_代号代号第第7章章 数据完整性数据完整性 20
14、23年2月12日星期日16约束信息的查看约束信息的查看查看约束信息的方法为:(1)执行系统存储过程,如:sp_help 或 sp_helpconstraint。(2)查询信息模式视图,如:check_constraints、referential_constraints或table_constraints。(3)查看一些系统表,例如约束的定义存储在下列系统表中:sysconstraints、sysreferences和syscomments。第第7章章 数据完整性数据完整性 2023年2月12日星期日17(1)使用sp_helpconstraint可得到数据库中某一个表中的全部约束信息。【例】
15、显示pubs数据库中authors表中的全部约束信息USE pubsEXEC sp_helpconstraint authors第第7章章 数据完整性数据完整性 2023年2月12日星期日18(2)syscomments系统表包含了每一个视图、规则、缺省、触发器、检查约束、缺省约束和存储过程等信息。在该系统表中的文本列上记录了这些对象的原始定义语句。使用该系统表,可以查看有关约束的定义信息。【例】显示pubs数据库中syscomments系统表的内容USE pubsSELECT id,text,texttype,languageFROM syscomments第第7章章 数据完整性数据完整性
展开阅读全文