《Oracle数据库的数据的一致性,完整性.ppt》由会员分享,可在线阅读,更多相关《Oracle数据库的数据的一致性,完整性.ppt(25页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、4Oracle数据库的一致性、完整性数据库的一致性、完整性Oracle 数据库应用与设计数据库应用与设计杭州电子科技大学杭州电子科技大学 2目标目标在完成本章学习后,你将掌握下列技能;在完成本章学习后,你将掌握下列技能;lOracle数据库的完整性的定义以及各种约束数据库的完整性的定义以及各种约束lOracle数据库的一致性的定义以及管理方案数据库的一致性的定义以及管理方案Oracle 数据库应用与设计数据库应用与设计杭州电子科技大学杭州电子科技大学 3本章内容本章内容lOracle数据库的完整性数据库的完整性lOracle数据库的一致性数据库的一致性Oracle 数据库应用与设计数据库应用与
2、设计杭州电子科技大学杭州电子科技大学 4导航导航lOracle数据库的完整性数据库的完整性lOracle数据库的一致性数据库的一致性Oracle 数据库应用与设计数据库应用与设计杭州电子科技大学杭州电子科技大学 5Oracle数据库的完整性数据库的完整性l定义:定义:完整性约束是数据库模式定义时指定的约束条件,它完整性约束是数据库模式定义时指定的约束条件,它限制某些数据的情形在数据库中出现。限制某些数据的情形在数据库中出现。ORACLE强制执行完整性约束,保证只有合法的数强制执行完整性约束,保证只有合法的数据存储于数据库中。据存储于数据库中。l指定和执行完整性约束的时机指定和执行完整性约束的时
3、机当当DBA定义数据库模式时定义数据库模式时当数据库执行应用程序时,当数据库执行应用程序时,DBMS检查数据是否违法检查数据是否违法约束。约束。Oracle 数据库应用与设计数据库应用与设计杭州电子科技大学杭州电子科技大学 6Oracle数据库的完整性数据库的完整性-约束类型约束类型l主码约束主码约束l外码约束外码约束l用户定义的约束用户定义的约束Oracle 数据库应用与设计数据库应用与设计杭州电子科技大学杭州电子科技大学 7ORACLE数据库的完整性数据库的完整性-主码约束主码约束l定义:主码约束是指关系具有一个特定的最定义:主码约束是指关系具有一个特定的最小字段集合,通过它可以唯一确定每
4、条记录。小字段集合,通过它可以唯一确定每条记录。l其中包括两个方面其中包括两个方面对于合法关系实例中的两条不同记录,其码的字对于合法关系实例中的两条不同记录,其码的字段值不会相同。段值不会相同。不存在码字段的真子集可以唯一确定每条记录。不存在码字段的真子集可以唯一确定每条记录。Oracle 数据库应用与设计数据库应用与设计杭州电子科技大学杭州电子科技大学 8ORACLE数据库的完整性数据库的完整性-主码约束主码约束l例如例如 Create table empl(empno number(10),ebirthday date,ename varchar2(10),egrade varchar2(
5、10),constraint c1 PRIMARY KEY(empno)上面定义中,我们将上面定义中,我们将empno作为码,并把这约束命名为作为码,并把这约束命名为pk_empno,当违反约束时,系统能够返回约束名。,当违反约束时,系统能够返回约束名。违法操作包括违法操作包括码值为空值码值为空值码值不唯一码值不唯一Oracle 数据库应用与设计数据库应用与设计杭州电子科技大学杭州电子科技大学 9ORACLE数据库的完整性数据库的完整性-外码约束外码约束l定义:存储在某个表中的字段是其他表中的定义:存储在某个表中的字段是其他表中的码,并且需要保证相互数据的一致性。码,并且需要保证相互数据的一致
6、性。l其中包括两个方面其中包括两个方面表中某个字段在其他表中是码表中某个字段在其他表中是码该字段的数据必须在后一个表中存在或者为该字段的数据必须在后一个表中存在或者为nullOracle 数据库应用与设计数据库应用与设计杭州电子科技大学杭州电子科技大学 10ORACLE数据库的完整性数据库的完整性-外码约束外码约束l例如:例如:Create table empl(empno number(10),ejob varchar2(10),deptno number(10)constraint fk_deptno FOREIGN KEY REFERENCES dept(deptno)l这里这里EMPL
7、的外码的外码deptno对应对应DEPT表中的主码表中的主码deptno。l当产生可能导致两个值不一致的操作时,系统可以通过当产生可能导致两个值不一致的操作时,系统可以通过删除或者拒绝等相应来维持完整性。删除或者拒绝等相应来维持完整性。Oracle 数据库应用与设计数据库应用与设计杭州电子科技大学杭州电子科技大学 11ORACLE数据库的完整性数据库的完整性-用户定义约束用户定义约束l用户可以自行定义满足自己需要的约束用户可以自行定义满足自己需要的约束建表时直接定义建表时直接定义或者通过触发起来定义用户的完整性或者通过触发起来定义用户的完整性Oracle 数据库应用与设计数据库应用与设计杭州电
8、子科技大学杭州电子科技大学 12ORACLE数据库的完整性数据库的完整性-用户定义约束用户定义约束l常见的约束包括常见的约束包括NOT NULL约束约束UNIQUE约束约束CHECK约束约束Oracle 数据库应用与设计数据库应用与设计杭州电子科技大学杭州电子科技大学 13ORACLE数据库的完整性数据库的完整性-用户定义约束用户定义约束l例如例如Create table empl(empno number,ename varchar2(10)constraint U1 UNIQUE,)l这里我们通过这里我们通过UNIQUE定义了保证定义了保证ename唯唯一性的约束。一性的约束。Oracle
9、 数据库应用与设计数据库应用与设计杭州电子科技大学杭州电子科技大学 14ORACLE数据库的完整性数据库的完整性-用户定义约束用户定义约束l例如例如Create table empl(empno number,ejob varchar2(10)constraints c2 NOT NULL,)l这里我们通过这里我们通过NOT NULL定义了保证定义了保证ename不会为空的约束。不会为空的约束。Oracle 数据库应用与设计数据库应用与设计杭州电子科技大学杭州电子科技大学 15ORACLE数据库的完整性数据库的完整性-用户定义约束用户定义约束l例如例如 Create table empl(em
10、pno number,salary number(10)constraints c3 CHECK(salary700),)l这里我们通过这里我们通过CHECK定义了保证定义了保证salary大于大于700的约束,其中括号里的约束,其中括号里 的内容为布尔表达的内容为布尔表达式。式。Oracle 数据库应用与设计数据库应用与设计杭州电子科技大学杭州电子科技大学 16导航导航lOracle数据库的完整性数据库的完整性lOracle数据库的一致性数据库的一致性Oracle 数据库应用与设计数据库应用与设计杭州电子科技大学杭州电子科技大学 17ORACLE数据库的一致性数据库的一致性l定义:数据库的一
11、致性是指当多个事务访问定义:数据库的一致性是指当多个事务访问数据库时,可能导致的数据库中数据的不一数据库时,可能导致的数据库中数据的不一致问题,需要专门的机制来保证数据一致。致问题,需要专门的机制来保证数据一致。l不一致包括不一致包括重复写覆盖重复写覆盖脏数据脏数据不可重复读不可重复读幻影读幻影读Oracle 数据库应用与设计数据库应用与设计杭州电子科技大学杭州电子科技大学 18ORACLE数据库的一致性数据库的一致性l重复写覆盖重复写覆盖当多个事务修改统一数据,每个事务不知其他当多个事务修改统一数据,每个事务不知其他事务的存在,最后的更新将覆盖其他事务的事务的存在,最后的更新将覆盖其他事务的
12、更新,导致数据丢失。更新,导致数据丢失。l脏数据脏数据 一个事务正要更新一个数据时,恰好另一个事一个事务正要更新一个数据时,恰好另一个事务读取了更新前的值务读取了更新前的值Oracle 数据库应用与设计数据库应用与设计杭州电子科技大学杭州电子科技大学 19ORACLE数据库的一致性数据库的一致性l不可重复读不可重复读一个事务读取一个数据后,再次读取时,数据一个事务读取一个数据后,再次读取时,数据已经被其他事务修改,而导致前后读不同。已经被其他事务修改,而导致前后读不同。l幻影读幻影读 一个事务读取某些数据记录后,并准备在此基一个事务读取某些数据记录后,并准备在此基础上进行一些操作,恰好另一个事
13、务删除础上进行一些操作,恰好另一个事务删除/新新增了其中部分数据记录,导致第一个事务的增了其中部分数据记录,导致第一个事务的错误。错误。Oracle 数据库应用与设计数据库应用与设计杭州电子科技大学杭州电子科技大学 20ORACLE数据库的一致性数据库的一致性-如何管理一致性如何管理一致性l语句级别读一致性语句级别读一致性l事务级别一致性事务级别一致性l应用集群的读一致性应用集群的读一致性l设置隔离级别设置隔离级别Oracle 数据库应用与设计数据库应用与设计杭州电子科技大学杭州电子科技大学 21ORACLE数据库的一致性数据库的一致性-语句级别读一致性语句级别读一致性l保证单个查询的数据来源
14、于单个时间点保证单个查询的数据来源于单个时间点一个查询只能查到查询开始之前事务提交的数据一个查询只能查到查询开始之前事务提交的数据不能看到查询开始之后提交的数据。不能看到查询开始之后提交的数据。Oracle 数据库应用与设计数据库应用与设计杭州电子科技大学杭州电子科技大学 22ORACLE数据库的一致性数据库的一致性-事务级别读一致性事务级别读一致性l当事务在串行性模式运行时,所有数据访问当事务在串行性模式运行时,所有数据访问所处的状态保持在事务开始的时间。所处的状态保持在事务开始的时间。同一个事务所有查询看到的是同一时间点的数据同一个事务所有查询看到的是同一时间点的数据会产生重复读,但不会产
15、生幻影读会产生重复读,但不会产生幻影读Oracle 数据库应用与设计数据库应用与设计杭州电子科技大学杭州电子科技大学 23ORACLE数据库的一致性数据库的一致性-应用集群的读一致性应用集群的读一致性l使用使用cache到到cache的块传输机制来执行从一的块传输机制来执行从一个实例到另一个实例传输快的读一致性印像。个实例到另一个实例传输快的读一致性印像。Oracle 数据库应用与设计数据库应用与设计杭州电子科技大学杭州电子科技大学 24ORACLE数据库的一致性数据库的一致性-设置隔离级别设置隔离级别lDBA或开发人员可根据程序和负载等情况为或开发人员可根据程序和负载等情况为事务选择合适的隔离级别。事务选择合适的隔离级别。提交读:适合较少事务冲突的环境提交读:适合较少事务冲突的环境串行性:大数据库小事务,两个并行事务很少修串行性:大数据库小事务,两个并行事务很少修改同一行,长期运行的事务执行只读为主的环境。改同一行,长期运行的事务执行只读为主的环境。Oracle 数据库应用与设计数据库应用与设计杭州电子科技大学杭州电子科技大学 25本章内容回顾本章内容回顾l数据库的完整性约束包括码,外码,用户定义码。数据库的完整性约束包括码,外码,用户定义码。l数据库的不一致包括重复写覆盖,脏数据,不可重复读,数据库的不一致包括重复写覆盖,脏数据,不可重复读,幻影读。幻影读。
限制150内