欢迎来到天天文库
浏览记录
ID:33486412
大小:327.00 KB
页数:52页
时间:2018-05-25
《数据库原理ppt教学课件第10章数据库完整性》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第10章数据库完整性10.1完整性约束条件10.2完整性控制与检查10.3触发器10.4SQLServer数据库的完整性本章目录理解数据库完整性概念及意义;掌握数据库不同类型的完整性约束条件;熟练掌握数据库常用的完整性约束以及DBMS对完整性约束的检查;掌握触发器的创建及管理;熟练掌握SQLServer数据库实现数据完整性的方法。学习目标10.1完整性约束条件10.1.1完整性概述10.1.2完整性约束条件10.1.1完整性概述完整性是指数据的正确性、有效性和相容性。数据的正确性是指数据的合法性数据的有效性是
2、指数据是否属于所定义有效范围数据的相容性是指表示同一事实的两个数据应一致安全性与完整性的区别:安全性是保护数据以防止非法用户故意造成破坏完整性是保护数据以防止合法用户无意输入不合法的数据。10.1.1完整性概述10.1.2完整性约束条件完整性约束条件作用的对象(作用粒度)列:对属性的取值类型、范围、精度等的约束条件元组:对元组中各个属性列间的联系的约束关系:对若干元组间、关系集合上以及关系之间的联系的约束完整性约束条件(续)静态对静态对象的约束是反映数据库状态合理性的约束动态对动态对象的约束是反映数据库状态变
3、迁的约束完整性约束条件作用的对象的状态完整性约束条件分类静态列级约束静态元组约束静态关系约束动态列级约束动态元组约束动态关系约束一、DBMS的完整性控制机制的组成定义功能检查功能(监督功能)违约反应(处理功能)10.2完整性控制与检查10.2完整性控制与检查1.定义功能一个完善的完整性控制机制应该允许用户定义各类完整性约束条件。2.检查功能(监督功能)立即执行的约束语句执行完后立即检查是否违背完整性约束延迟执行的约束完整性检查延迟到整个事务执行结束后进行10.2完整性控制与检查3.违约反应(处理功能)拒绝该操
4、作其他处理方法10.2完整性控制与检查10.2完整性控制与检查一组完整性规则可以用一个5元组(D,O,A,C,P)来形式化表示。10.2完整性控制与检查实现参照完整性需要考虑的几个问题:外键的空值问题(参照完整性)被参照关系中删除元组的问题在参照关系中插入元组的问题元组中主键值的修改问题在被参照关系中删除元组时的问题出现违约操作的情形:删除被参照关系(即主表)的某个元组而参照关系(即外键所在的表)有若干元组的外码值与被删除的被参照关系的主码值相同在被参照关系中删除元组时的问题违约反应:可有三种策略级联删除受限
5、删除置空值删除这三种处理方法,哪一种是正确的,要依应用环境的语义来定级联删除删除被参照关系中主码值同时,用相同的方法删除参照关系中相应的外码值。受限删除拒绝此删除操作。只当参照关系中没有任何元组的外码值等于被参照关系中某个元组的主码值时,这个元组的主码值才能被删除。置空值删除删除被参照关系中主码值,同时将参照关系中相应的外码值置为空值。在被参照关系中删除元组时的问题在参照关系中插入元组时的问题出现违约操作的情形需要在参照关系中插入元组,而被参照关系不存在相应的元组违约反应受限插入递归插入在参照关系中插入元组时
6、的问题受限插入仅当被参照关系中存在相应的元组,其主码值与参照关系插入元组的外码值相同时,系统才执行插入操作,否则拒绝此操作。递归插入首先向被参照关系中插入相应的元组,其主码值等于参照关系插入元组的外码值,然后向参照关系插入元组。元组中主键值的修改问题级联修改修改被参照关系中主码值同时,用相同的方法修改参照关系中相应的外码值。受限修改拒绝此修改操作。只当参照关系中没有任何元组的外码值等于被参照关系中某个元组的主码值时,这个元组的主码值才能被修改。置空值修改修改被参照关系中主码值,同时将参照关系中相应的外码值置为
7、空值。10.3触发器10.3.1触发器结构10.3.2触发器的创建与删除触发器触发器(Trigger)是用户定义在关系表上的一类由事件驱动的特殊过程由服务器自动激活可以进行更为复杂的检查和操作,能够实现由主键和外键所不能保证的参照完整性和数据的一致性。10.3.1触发器结构触发器描述由事件、条件和动作3部分组成。(1)事件:是指对数据库的插入、删除、修改等操作。触发器在这些事件发生时,将开始工作。(2)条件:触发器将测试条件是否成立。如果条件成立,就执行相应的动作,否则什么也不做。(3)动作:如果触发器测试满
8、足预定的条件,那么由DBMS执行这些动作(即对数据库的操作)。10.3.1触发器结构创建触发器语法如下:CREATETRIGGERtrigger_nameON{table
9、view}[WITHENCRYPTION]--可将触发器定义文本加密{FOR
10、AFTER
11、INSTEADOF}--触发器类型{FOR[INSERT][,][UPDATE][,][DELETE]}--触发器事件[NOTFORREPL
此文档下载收益归作者所有