您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 4.1 Oracle数据库的数据的一致性,完整性
Oracle数据库的一致性、完整性Oracle数据库应用与设计杭州电子科技大学2目标在完成本章学习后,你将掌握下列技能;Oracle数据库的完整性的定义以及各种约束Oracle数据库的一致性的定义以及管理方案Oracle数据库应用与设计杭州电子科技大学3本章内容Oracle数据库的完整性Oracle数据库的一致性Oracle数据库应用与设计杭州电子科技大学4导航Oracle数据库的完整性Oracle数据库的一致性Oracle数据库应用与设计杭州电子科技大学5Oracle数据库的完整性定义:–完整性约束是数据库模式定义时指定的约束条件,它限制某些数据的情形在数据库中出现。–ORACLE强制执行完整性约束,保证只有合法的数据存储于数据库中。指定和执行完整性约束的时机–当DBA定义数据库模式时–当数据库执行应用程序时,DBMS检查数据是否违法约束。Oracle数据库应用与设计杭州电子科技大学6Oracle数据库的完整性-约束类型主码约束外码约束用户定义的约束Oracle数据库应用与设计杭州电子科技大学7ORACLE数据库的完整性-主码约束定义:主码约束是指关系具有一个特定的最小字段集合,通过它可以唯一确定每条记录。其中包括两个方面–对于合法关系实例中的两条不同记录,其码的字段值不会相同。–不存在码字段的真子集可以唯一确定每条记录。Oracle数据库应用与设计杭州电子科技大学8ORACLE数据库的完整性-主码约束例如Createtableempl(empnonumber(10),ebirthdaydate,enamevarchar2(10),egradevarchar2(10),…constraintc1PRIMARYKEY(empno))–上面定义中,我们将empno作为码,并把这约束命名为pk_empno,当违反约束时,系统能够返回约束名。–违法操作包括码值为空值码值不唯一Oracle数据库应用与设计杭州电子科技大学9ORACLE数据库的完整性-外码约束定义:存储在某个表中的字段是其他表中的码,并且需要保证相互数据的一致性。其中包括两个方面–表中某个字段在其他表中是码–该字段的数据必须在后一个表中存在或者为nullOracle数据库应用与设计杭州电子科技大学10ORACLE数据库的完整性-外码约束例如:Createtableempl(empnonumber(10),ejobvarchar2(10),…deptnonumber(10)constraintfk_deptnoFOREIGNKEYREFERENCESdept(deptno))这里EMPL的外码deptno对应DEPT表中的主码deptno。当产生可能导致两个值不一致的操作时,系统可以通过删除或者拒绝等相应来维持完整性。Oracle数据库应用与设计杭州电子科技大学11ORACLE数据库的完整性-用户定义约束用户可以自行定义满足自己需要的约束–建表时直接定义–或者通过触发起来定义用户的完整性Oracle数据库应用与设计杭州电子科技大学12ORACLE数据库的完整性-用户定义约束常见的约束包括–NOTNULL约束–UNIQUE约束–CHECK约束Oracle数据库应用与设计杭州电子科技大学13ORACLE数据库的完整性-用户定义约束例如Createtableempl(empnonumber,enamevarchar2(10)constraintU1UNIQUE,…)这里我们通过UNIQUE定义了保证ename唯一性的约束。Oracle数据库应用与设计杭州电子科技大学14ORACLE数据库的完整性-用户定义约束例如Createtableempl(empnonumber,ejobvarchar2(10)constraintsc2NOTNULL,…)这里我们通过NOTNULL定义了保证ename不会为空的约束。Oracle数据库应用与设计杭州电子科技大学15ORACLE数据库的完整性-用户定义约束例如Createtableempl(empnonumber,salarynumber(10)constraintsc3CHECK(salary700),…)这里我们通过CHECK定义了保证salary大于700的约束,其中括号里的内容为布尔表达式。Oracle数据库应用与设计杭州电子科技大学16导航Oracle数据库的完整性Oracle数据库的一致性Oracle数据库应用与设计杭州电子科技大学17ORACLE数据库的一致性定义:数据库的一致性是指当多个事务访问数据库时,可能导致的数据库中数据的不一致问题,需要专门的机制来保证数据一致。不一致包括–重复写覆盖–脏数据–不可重复读–幻影读Oracle数据库应用与设计杭州电子科技大学18ORACLE数据库的一致性重复写覆盖当多个事务修改统一数据,每个事务不知其他事务的存在,最后的更新将覆盖其他事务的更新,导致数据丢失。脏数据一个事务正要更新一个数据时,恰好另一个事务读取了更新前的值Oracle数据库应用与设计杭州电子科技大学19ORACLE数据库的一致性不可重复读一个事务读取一个数据后,再次读取时,数据已经被其他事务修改,而导致前后读不同。幻影读一个事务读取某些数据记录后,并准备在此基础上进行一些操作,恰好另一个事务删除/新增了其中部分数据记录,导致第一个事务的错误。Oracle数据库应用与设计杭州电子科技大学20ORACLE数据库的一致性-如何管理一致性语句级别读一致性事务级别一致性应用集群的读一致性设置隔离级别Oracle数据库应用与设计杭州电子科技大学21ORACLE数据库的一致性-语句级别读一致性保证单个查询的数据来源于单个时间点–一个查询只能查到查询开始之前事务提交的数据–不能看到查询开始之后提交的数据。Oracle数据库应用与设计杭州电子科技大学22ORACLE数据库的一致性-事务级别读一致性当事务在串行性模式运行时,所有数据访问所处的状态保持在事务开始的时间。–同一个事务所有查询看到的是同一时间点的数据–会产生重复读,但不会产生幻影读Oracle数据库应用与设计杭州电子科技大学23ORACLE数据库的一致性-应用集群的读一致性使用cache到cache的块传输机制来执行从一个实例到另一个实例传输快的读一致性印像。Oracle数据库应用与设计杭州电子科技大学24ORACLE数据库的一致性-设置隔离级别DBA或开发人员可根据程序和负载等情况为事务选择合适的隔离级别。–提交读:适合较少事务冲突的环境–串行性:大数据库小事务,两个并行事务很少修改同一行,长期运行的事务执行只读为主的环境。Oracle数据库应用与设计杭州电子科技大学25本章内容回顾数据库的完整性约束包括码,外码,用户定义码。数据库的不一致包括重复写覆盖,脏数据,不可重复读,幻影读。
本文标题:4.1 Oracle数据库的数据的一致性,完整性
链接地址:https://www.777doc.com/doc-3509913 .html