




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十二讲 数据完整性,二零一零年六月,目标,学习此章,需要掌握以下知识: 了解数据完整性的概念和作用 了解完整性约束的类型 了解完整性约束的工作机制 知道如何管理和维护数据的完整性 知道如何查看完整性约束的相关信息,概述,数据完整性是指数据库内的数据必须遵从的一套预定义规则。 此规则是由数据库管理员或应用程序开发者确定的。 Oracle 使用完整性约束防止用户向数据库的基表中插入无效数据。 完整性约束的作用是确保数据库内存储的信息遵从一定的业务规则。,完整性规则的类型,空规则:定义在某一列上的规则,其作用是允许或禁止将要被插入或更新的数据行此列的值为空值(null),即没有值 唯一列值:其作用是确保将要被插入或更新的数据行此列(或列集)的值是唯一的 主键值规则:其作用是确保表内的每一数据行都可以由某一个键值唯一地确定。,完整性规则的类型(续),引用完整性规则:其作用是确保任意键值都能与相关表的某一键值(即引用值)相匹配。 复杂完整性检查 其作用是依据数据行的列值来允许或禁止插入,更新,或删除此数据行,如何强制实现数据完整性,使用完整性约束的好处,声明即用 规则集中化 应用程序开发效率最大化 即时向用户反馈 性能优势 数据加载时的灵活性 对违反完整性的数据的识别,使用完整性约束的影响,将带来一定的性能损失 一般来说,完整性约束造成的性能损失与进行约束检查所需执行的 SQL 语句大体相当,非空约束,默认情况下,表的所有列都允许为空值 空值的含义是未输入值。 约束要求表列内只能包含非空值。,UNIQUE key完整性约束要求列或列集的值唯一,数据表任意两行某列或某个列集的值不重复。 Oracle 使用索引来强制实现唯一完整性约束 。,唯一性约束,包含于 PRIMARY KEY 完整性约束定义内的列被称为主键。 表内的每行数据可以被唯一确定 表内不存在重复的数据行,主键约束,Oracle 使用索引来强制实现 PRIMARY KEY 约束。 例如:deptno 列上定义了主键约束,Oracle 的实现方式是隐式地创建索引 在此列上创建唯一索引(unique index) 在此列上定义 NOT NULL constraint(约束) 隐式创建的索引名称与主键约束名称相同。,主键约束(续),在关系型数据库中,不同的表可以依据其共同的列产生关联关系,数据库需要确保数据遵从列关系的规则。引用完整性规则,就是用于确保列关系的规则。,引用完整性约束,引用完整性约束(续),引用完整性约束的规则,限制:不允许对引用值进行更新与删除 置空:当引用值被更新或删除后,所有受影响的依赖值都将被赋予一个默认值。 置默认值 :当引用值被更新或删除后,所有受影响的依赖值都将被赋予一个默认值。 串联操作:当引用值被更新后,所有受影响的依赖值也将被更新为相同的值。当引用数据行(referenced row)被删除后,所有受影响的依赖数据行(dependent row)也将被删除。,引用完整性约束的规则(续),要求数据行满足用户定义的检查条件 检查条件 布尔表达式 子查询,序列,SYSDATE,UID,USER, USERENV 等 SQL 函数 LEVEL 或 ROWNUM 虚列 多重 CHECK 约束 多个,不受限制 不冲突,check完整性约束,约束条件的状态,DISABLE NOVALIDATE:不检查新数据和现有数据,因此这些数据可能不符合约束条件。 DISABLE VALIDATE:如果约束条件处于此状态,则不允许对有约束条件的列进行任何修改。 ENABLE NOVALIDATE:新数据符合约束条件,但现有数据处于未知状态。 ENABLE VALIDATE:新数据与现有数据均符合约束条件。这是约束条件的典型状态和默认状态。,约束条件的状态(续),约束条件检查的设置,可延迟的(deferrable)与不可延迟的(not deferrable) 可延迟的,指的是提交事务处理时才检查约束条件。如果在提交时检测到任何违反约束条件的情况,则会回退整个事务处理 不可延迟的,又称为即时约束,是在每个DML语句结束时强制执行的。违反约束条件会导致语句的回滚 定义为“非延迟”的约束条件不能更改为延迟的约束条件,约束条件检查的设置(续),延迟开始(initially deferred)与立即开始(initially immediate) 延迟开始,指的是在默认情况下,只在事务处理结束时强制使用的约束条件 立即开始,指的是在默认情况下,约束条件必须用作即时约束,除非另外显示进行了设置 使用set constraints 语句可以对约束条件的检查进行设置,约束条件的检查,exceptions表,表EXCEPTIONS 记录着任何违反已启用约束的行的信息 使用EXCEPTIONS表检测违反约束的数据 : a. 如果尚未创建EXCEPTIONS,则通过运行utlexcpt.sql 脚本来创建例外表。 SQL ?/rdbms/admin/utlexcpt.sql b. 执行带有EXCEPTIONS 选项的ALTER TABLE 语句。 ALTER TABLE table_name ENABLE VALIDATE CONSTRAINT const_name EXCEPTIONS INTO system.exceptions;,Exceptions表(续),使用EXCEPTIONS表检测违反约束的数据 : c. 使用EXCEPTIONS 上的子查询定位包含无效数据的行 SELECT rowid, FROM table_name WHERE ROWID in (SELECT row_id FROM system.exceptions) FOR UPDATE; d. 纠正错误。 UPDATE table_name SET WHERE rowid=. e. 截断EXCEPTIONS 表,并重新执行ALTER TABLE 以启用约束。 TRUNCATE TABLE system.exceptions; ALTER TABLE table_name ENABLE VALIDATE CONSTRAINT const_name EXCEPTIONS INT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025黑龙江鸡西市博物馆现公益性岗位招聘2人考前自测高频考点模拟试题附答案详解(黄金题型)
- 2025江苏连云港市灌云万邦人力资源有限公司招聘人员考前自测高频考点模拟试题及一套答案详解
- 2025届春季中核集团社会招聘及实习生招聘模拟试卷附答案详解(典型题)
- 安全培训落实课件
- 2025安徽岳西县事业单位引进急需紧缺专业人才3人考前自测高频考点模拟试题及完整答案详解一套
- 2025年温岭市公开选调公务员32人考前自测高频考点模拟试题及一套完整答案详解
- 2025年安徽宿州萧县云水水务社会招聘9人考前自测高频考点模拟试题附答案详解(模拟题)
- 2025内蒙古敖汉旗教育系统“绿色通道”引进高校毕业生15人考前自测高频考点模拟试题有答案详解
- 涂料的环保知识培训课件
- 涂料工艺基础知识培训课件
- 导游证《中国古代建筑》知识考试(重点)题库(含答案)
- 《大气的组成和垂直分层》
- GB/T 2423.17-2024环境试验第2部分:试验方法试验Ka:盐雾
- 第一次月考试卷(月考)-2024-2025学年三年级上册数学人教版
- 新高考生物综合复习《稳态与调节》高考真题汇编(图片版含答案)
- CJT 399-2012 聚氨酯泡沫合成轨枕
- 中小微企业FTTR-B全光组网解决方案
- 第七单元单元任务“视频拍摄脚本写作”统编版高中语文必修上册
- 提高感染性休克集束化治疗完成率工作方案
- 山东省汽车维修工时定额(T-SDAMTIA 0001-2023)
- 初级中药师考试试题
评论
0/150
提交评论