吴飞飞参照完整性研究及实现剖析.ppt

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据参照完整性的研究及实现 学院:信息学院 专业:产业经济学(信息经济) 学号:22014070550 姓名:吴飞飞 参照完整性内涵 通常,我们希望一个关系中给定属性(组)的值能出现在另一个关系的某一属性(组)的值集中.例如,在一个单位中,仓库关系表里的仓库号应该出现在职工关系表中,即职工关系表参照了仓库关系表.这种现象就是所谓的参照完整性(Referential Integrity). 表1 选课关系 课程号 课程名称 学号 E1 XML技术与应用 W1 E2 会计准则 W3 E3 行为金融学 W3 E4 研究生英语 W2 E5 产业组织 W1 表2 学生关系 学号 姓名 院系名称 W1 鲁智深 信息学院 W2 林黛玉 英语学院 W3 王熙凤 会计学院 W4 赵子龙 金融学院 W5 猪八戒 信息学院 在目前绝大多数商用关系数据库都提供两种实现参照完整性的方法,声明主码和外部码来实现部分规范的完整性规则以及定义触发器实现参照完整性. 触发器的概念及其在参照完整性中的应用 触发器是一种特殊的存储过程,它与表紧密联系在一起,当表上发生更新、插入或删除操作时触发器将执行。它的主要作用是实现由主码和外码所不能保证的复杂的参照完整性和数据的一致性。 触发器的定义 触发器(trigger)是一个能由系统自动执行对数据库修改的语句.触发器有时亦称为主动规(activerule)或事件—条件—动作规则(Event-Condition-Ac-tion rule,ECA规则) 一个触发器由三部分组成: (1)事件.事件是指对数据库的插入、删除、修改等操作.触发器在这些事件发生时,将开始工作. (2)条件.触发器将测试条件是否成立.如果条件成立,将执行相应的动作,否则什么也不做. (3)动作.如果触发器测试满足预定的条件,那么就有DBMS执行这些动作(即对数据库的操作). 在父表中删除元组对子表的影响 (1)级联删除(CASCADE).将参照关系中所有外码值与被参照关系中要删除元组主码值相同的元组一起 删除. (2)受限删除(RESTRICTED).仅当参照关系中没有任何元组的外码值与被参照关系中要删除元组的主码值相同时,系统才执行删除操作,否则拒绝此删除操作. 在子表中插入元组对父表的影响 例如向选课关系插入(E6,货币银行学,W6)元组,而学生关系中尚没有“学号”=W6的学生 (1)受限插入.仅当被参照关系中存在相应的元组,其主码值与参照关系插入元组的外码值相同,系统才执行插入操作,否则拒绝此操作. (2)递归插入.首先向被参照关系中插入相应的元组,其主码值等于参照关系插入元组的外码值,然后向参照关系插入元组. 在父表中更新元组对子表的影响 级联规则指当修改父表的主关键字时,子表的外部关键字自动修改; 限制规则是指当父表记录的主关键字在子表中存在时不允许修改父表的主关键字。 使用触发器进行数据完整性保护 (1)建立主表的Delete、Update触发器,维护表之间的同步修改。一旦主表执行删除、修改操作,与主 表相关联的表也进行相应的操作;或者拒绝主表执行删除、修改操作。 (2)建立子表的Insert触发器,确保不能在子表中插入与主表无关的孤立记录。 应用实例 (1)当删除student表中的记录时,如果它对应的学号在sc表中存在,要么能同时自动删除sc表中的相关记录,要么拒绝删除student表中的记录。 (2)当修改sc表中指定记录的学号时,如果它对应的学号在student表中存在,要么能同时自动修改student中相关记录的记录,要么拒绝修改sc表中的记录 (3)当在子表sc中插入记录时,如果对应的学号在student表中不存在,则不允许插入记录。 实现过程 首先在数据库的存储过程中自定义一些返回逻辑值的函数,如student_delete(),student_update(),sc_ ins(),然后在主表student和子表sc的相应触发器的触发条件中输入指定函数。 如果用户要删除student表中的记录,则应查看在sc表是否有相应的记录。如有,弹出提示对话框,在用户确认删除后,sc表中的相应记录被自动删除,实现级联删除;如用户确认不删除,则自动实现限制删除。 如果用户要删除student表中的记录,则应查看在sc表是否有相应的记录。如有,弹出提示对话框,在用户确认删除后,sc表中的相应记录被自动删除,实现级联删除;如用户确认不删除,则自动实现限制删除。 Function student_delete() llretval=.t xx=学号 select sc locate for学号=xx if found () qr=messabox (删除该记录和子表中的相应记

文档评论(0)

舞林宝贝 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档