第二章数据库的完整性控制数据完整性(DataIntegrity)是指数据的精确

上传人:hs****ma 文档编号:487004959 上传时间:2024-02-15 格式:DOC 页数:7 大小:72.50KB
返回 下载 相关 举报
第二章数据库的完整性控制数据完整性(DataIntegrity)是指数据的精确_第1页
第1页 / 共7页
第二章数据库的完整性控制数据完整性(DataIntegrity)是指数据的精确_第2页
第2页 / 共7页
第二章数据库的完整性控制数据完整性(DataIntegrity)是指数据的精确_第3页
第3页 / 共7页
第二章数据库的完整性控制数据完整性(DataIntegrity)是指数据的精确_第4页
第4页 / 共7页
第二章数据库的完整性控制数据完整性(DataIntegrity)是指数据的精确_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《第二章数据库的完整性控制数据完整性(DataIntegrity)是指数据的精确》由会员分享,可在线阅读,更多相关《第二章数据库的完整性控制数据完整性(DataIntegrity)是指数据的精确(7页珍藏版)》请在金锄头文库上搜索。

1、第二章数据库的完整性控制数据完整性(DataIntegrity)是指数据的精确性(accuracy)和可靠性(reliability),它是防止数据库中存在不符合语义规定的数据和防止因错误的信息的输入造成无效操作或错误信息而提出的,保证在一个应用程序更新数据的过程中数据的语义正确性。数据完整性主要分为三类:实体完整性(EntityIntegrity),参照完整性(ReferentialIntegrity)以及用户定义的完整性(User-definedIntegrity),其中用户定义的完整性主要包括域完整性(DomainIntegrity)和其他自定义完整性。为维护数据库德完整性,数据库管理系

2、统(DBMS)必须提供一种机制来检查数据库中的数据,看其是否满足语义规定的条件。这些加在数据库数据上的语义约束条件称为数据库完整性规则,它们作为模式的一部分存入数据库中。完整性控制是指对数据库进行更新操作,要遵守完整性规则,才能保证数据的语义正确性,防止数据库中存在不符合语义的数据。目的是在合法用户访问数据库的过程中,保证数据的正确性和准确性。完整性检查机制是指在DBMS中检查数据是否满足完整性条件的机制。由DBMS在执行更新动作时,检查是否满足预定的完整性约束条件,来进行控制。广义的完整性控制包括故障恢复、并发控制。而一般所指的完整性控制是指基于数据库的完整性约束规则,如:实体完整性、引用完

3、整性等。SQL中两种主要的数据完整性控制机制是指完整性约束规则的定义和检查以及触发器(Trigger)机制。完整性控制机制应具有三个功能:(1) 定义功能,即提供定义完整性约束条件的机制;(2) 检查功能,即检查用户发出的操作请求书否违反了约束条件;如果发现用户操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。完整性控制机制的工作原理基本上分为两类,一种是定义完整性时就立刻进行检查的,例如实体完整性的定义;另外一种是定义完整性之后进行检查的,例如参照完整性的定义。SQLServer提供了一些工具来帮助用户实现数据完整性,其中最主要的是:规则(Rule),默认值(Defau

4、lt),约束(Constraint)和触发器(Trigger)实验报告2.1实体完整性实验目的:学习实体完整性的建立,以及实践违反实体完整性的结果。实验原理:1、实体完整性(EntityIntegrity)定义实体完整性规定表的每一行在表中是唯一的实体。SQL语法中,表中的UNIQUE、PRIMARYKEY和IDENTITY约束就是实体完整性的体现。实体完整性规则:每个关系中主码的任何属性不能取空值。注意:空值为NULL,不是0也不是空格,而是一个“不知道”或“不确定”的数据值。2、实施完整性检查的时机实施完整性规则检查的时机分为立即检查和延迟检查(ImmediateordeferredChe

5、cking),只有选择正确的检查时机才能保证语义的正确性,即保证数据的完整性。实体完整性规则检查的时机是立即检查的,而参照完整性和触发器一般都是延迟检查。3、事务处理事务是一组数据库操作的集合,这些操作要么一起成功,要么一起失败。操作的提交或回退是一同生效的。事务处理的概念对维护数据的完整性和一致性是十分重要的。数据库操作(如INSERT、UPDATE和DELETE)如果是一个事务中的操作,那么它们要在事务控制之下完成。数据库对象的beginTransaction、commitTransaction和rollbackTransaction方法分别用来启动、提交和回退事务。实验内容:(1)在数据

6、库School中建立表Stu_Union,进行主键约束,在没有违反实体完整性的前提下插入并更新一条记录。(2)演示违反实体完整性的插入操作。(3)演示违反实体完整性的更新操作。(4)演示事务的处理,包括事务的建立、处理以及出错时的事务回滚。(5)通过建立Scholarship表,插入数据,演示当与现有的数据环境不等时,无法建立实体完整性以及参照完整性。实验步骤:代码实现参见数据库实验习题文档心得体会:1、学习了实体完整性的相关内容,加深了对于这部分知识点的认识;(实验课本第59页思考:为什么sno置为没有违反非空的约束?答:SQL系统默认这里定义的为一个值;如果执行sno=NULL,则将被系统

7、拒绝)实验2.2参照完整性实验目的:学习建立外键,以及利用FOREIGNKEY-REFERENCES子句以及各种约束保证参照完整性。实验原理:1)参照完整性(ReferentialIntegrity)参照完整性是指两个表的主关键字和外关键字的数据对应一致。它确保了有主关键字的表中对应其他表的外关键字的行存在,即保证了表之间的数据的一致性,防止了数据丢失或无意义的数据在数据库中扩散。参照完整性是建立在外关键字和主关键之间或外关键字和唯一性关键字之间的关系上的。参照完整性规则:关系R的外来码取值必须是关系S中某个元组的主码值,或者可以是一个“空值”。定义外键时定义参照完整性、约束参照表A和被参照表

8、B。对于违反参照完整性的操作有时候并不是简单拒绝执行,而是接受该操作,同时执行必要的附加操作。DBMS提供机制来定义是否必须制定外键的具体值而非空值。主键列和外键列可以有不同的名字,空值的要求也可以不一致,默认值也可以不同,但数据类型必须相同。2)SLServer中完整性的体现在SQLServer中参照完整性作用表现在如下几个方面:禁止在从表中插入包括主要中不存在的外关键字的数据行。禁止会导致从表中的相应值孤立的主表中的外关键字值改变。禁止删除在从表中的有对应记录的主表记录。3)SQL语句中删除和插入基本关系元组(1)在被参照关系中删除元组的三种控制方式:级联删除(CASCADES):将参照关

9、系中与被参照关系中要删除的元组主键值相同的元组一起删除。受限删除(RESTRICTED):只有参照关系中没有元组与被参照关系中要删除的元组主键值相同时才执行删除操作,否则拒绝。置空值删除(SETNULL):删除被参照关系中的元组,同时将参照关系中相应元组的外键值置空。(2)在参照关系中插入元组。受限插入:只是被参照关系中有元组与参照关系中要插入元组外键值相同时,才执行插入操作,否则拒绝。递归插入:插入元组外键值在被参照关系中没有相同元组,则首先向被参照关系插入元组,其主键值等于参照关系插入元组的外键值,然后再向参照关系插入元组。4)DBMS对参照完整性进行检查的四种情况(1)在四种情况下DBM

10、S要进行检查,分别是对参照表进行插入和修改以及对被参照表进行删除和修改。(2)SQLServer四种情况违反参照完整性的处理方法如表所示:相关操作INSERTDELETEUPDATE被参照表不需要检查ONDELETE(用户显示定义的方式,提供两种:cascade和noaction)ORdefault(系统默认的方式noaction)ONUPDATE(用户显示方式,提供两种:cascade和noaction)ORdefault(系统默认的方式noaction)参照表拒绝执行不需要检查拒绝执行5)参照完整性的特殊问题(1)表的自参考问题。问题1:无法定义。处理方法:先用createtable创建主

11、键约束,再用altertable创建外键约束。问题2:容易造成无法启动的情况。(系统通过事务完毕后再检查)(2)两张表互相参照的问题。问题1:无法定义。处理方法:同表的自参照问题的解决方法相同。问题2:容易造成无法启动的情况。(系统通过事务完毕后再检查)(3)既是外键又是主键中的属性。处理方法:既要遵从实体完整性也要遵从参照完整性。实验内容:(1)为演示参照完整性,建立表Course,令eno为主键,并在Stu_Union中插入数据。为下面的实验步骤做预先准备。(2)建立表SC,令sno和eno分别为参照Stu_Union表以及Course表的外键,设定为级联删除,并令(sno,eno)为其主

12、键。在不违反参照完整性的前提下,插入数据。(3)演示违反参照完整性的插入数据。(4)在Stu_Union中删除数据,演示级联删除。(5)在Course中删除数据,演示级联删除。(6)为了演示多重级联删除,建立Stu_Union表,令stu_id为参照Stu_Union表的外键,令eard_id为其主键,并插入数据。(7)为了演示多重级联删除,建立ICBC_Card表,令stu_card_id为参照Stu_Card表的外键,令bank_id为其主键,并插入数据。(8)通过删除students表中的一条记录,演示三个表的多重级联删除。(9) 演示事务中进行多重级联删除失败的处理。修改ICBC_Ca

13、rd表的外键属性,使其变为OndeleteNoaction,演示事务中通过删除students表中的一条记录,多重级联删除失败,整个事务回滚到事务的初始状态。(10) 演示互参照问题以及其解决方法。要建立教师授课和课程指定教师停课关系的两张表,规定一个教师可以授多门课,但是每个课程只能指定一个教师去听课,所以要为两张表建立相互之间的参照关系。实验步骤:代码实现参见数据库实验习题文档心得体会:1、学习了参照完整性的相关内容,加深了对于这部分知识点的认识;(习题:(1) 用altertable语句将SC表中的ondeletecascade改为ondeleterestrict。重新插入SC的数据。重

14、复本实验的实验步骤中(4)(5),观察结果,分析原因。(2) 用altertable语句将SC表中的ondeletecascade改为ondeletesetNULL。重新插入SC的数据。重复本实验的实验步骤中(4)(5),观察结果,分析原因。解答:SQL不提供ondeleterestrict/ondeletesetNULL,用ondeletenoaction;结果:数据库不允许删除STU_UNION表以及NEW_COUSE表中对应的元组;原因:(1)由于ondeleterestrict的约束,数据库不允许任何引用关系存在对应元组的删除操作(2)约束ondeletesetNULL是将要删除的对应

15、元组的外键置空值,如果sno和cno不是SC表的主键,删除操作是可以完成的,但是由于主键不可以取空值,所以删除操作不能进行。)实验2.3用户自定义完整性实验目的:学习用户自定义约束,并实践用户自定义完整性,利用SQL查询分析器用短语NOTNULL、UNIQUE、CHECK保证用户定义完整性。实验原理:1)用户自定义完整性(User-definedIntegrity)不同的关系数据库系统根据其应用环境的不同,往往需要一些特殊的约束条件。用户自定义的完整性即是针对某个特定关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。它主要包括:(1)域完整性(DomainIntegrity)1 域完整性是指数据库中的列必须满足某种特定的数据类型或约束。域约束是最常见的用户自定义完整性约束,当有新数据插入到数据库中,系统可以按照定义进行关系属性取值是否正确的检测。其中,约束又包括取值范围精度等规定。表中的CHECKFOREIGNKEY约束和DEFAULTNOTNULL定义都属于域完整性的范畴。2 现在的RDBMS中,一般都有域完整性检查功能。SQLServer提供了定义和检验这类完整性的机制,以便用统一的系统方法来处理它们。而不是用应用程序来承担这一功能。其他的完整性类型都支持用户定义的完整性。3 一个属性能否取空值一般由语义

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

当前位置:首页 > 建筑/环境 > 建筑资料

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