【计算机论文全套栏目提醒】:网学会员,鉴于大家对计算机论文全套十分关注,论文会员在此为大家搜集整理了“数据参照完整性的研究及实现 - 其它论文”一文,供大家参考学习!
收稿日期:2003203231 基金项目:河南省科技攻关项目0224330008 作者简介:李志强1971-男河南邓州人讲师. 第14卷第2期中原工学院学报Vol.14 No.22003年6月JOURNALOFZHONGYUANINSTITUTEOFTECHNOLOGYJun.2003 文章编号:16712690620030220007203数据参照完整性的研究及实现李志强1张瑞杰21.中原工学院计算机科学系 2.中原工学院机械系河南郑州 450007摘 要: 介绍了数据参照完整性的规则和相关策略通过实例描述了触发器的工作原理以及利用触发器维护数据参照完整性的实际意义给出了使用触发器维护数据参照完整性的应用实例.关 键 词: 参照完整性触发器码数据库中图分类号: TP311.132.3文献标识码: A 在管理大量、持久、共享数据的数据库应用系统中最核心的部分是数据的操纵和维护.确保数据的参照完整性是系统的最重要也是最基本的要求之一.如何实现参照完整性是数据库应用系统设计的关键因为它直接关系到数据的正确性、一致性和相容性影响应用系统的可靠性和运行效率.传统的微机型数据库系统一般是把数据参照完整性的维护工作留给应用程序去处理.这样系统的安全性和完整性容易失控程序开发和维护较困难此外系统性能也难以提高.而大型RDBMS都提供了触发器机制来支持系统对数据的参照完整性进行维护处理.触发器的存储和执行均在数据库服务器上它一方面能充分利用服务器的高性能另一方面又不需要网络开销因而能提高系统维护数据完整性的运行效率大大增强数据参照完整性的控制功能与灵活性.1 参照完整性及其规则通常我们希望一个关系中给定属性组的值能出现在另一个关系的某一属性组的值集中.例如在一个单位中仓库关系表里的仓库号应该出现在职工关系表中即职工关系表参照了仓库关系表.这种现象就是所谓的参照完整性ReferentialIntegrity.对数据库的插入、删除、更新操作可能破坏数据的参照完整性因此在对有参照约束的关系进行操纵时应该设法保护数据参照完整性.1.1 参照完整性规则若属性或属性组F是基本关系R的外码它与基本关系S的主码Ks相对应基本关系R和S不一定是不同的关系则对于R中每个元组在F上的值必须为:1或者取空值F的每个属性值均为空值2或者等于S中某个元组的主码值.表1 职工关系职工号工资仓库号E11600W1E21560W2E31680W1E41300W3E51580W2表2 仓库关系仓库号城市面积W1北京650W2上海600W3广州500W4郑州560W5哈尔滨450 例如对于表1和表2仓库关系中的主码为“仓库号”职工关系的主码为“职工号”外码为“仓库号”称仓库关系为被参照职工关系职工关系为参照关系.职工关系中每个元组的“仓库号”属性只能取下面两类值:1空值表示这个职工尚未分配到任何具体的部门工作.2非空值这时该值必须是仓库关系中某个元组的“仓库号”值表示该职工不可能分配到一个不存在的仓库部门工作.DBMS在实现参照完整性时除了要提供定义主码、外部码的机制来实现部分规范的完整性规则外往往还需要提供不同的策略供用户选择.1.2 在被参照关系中删除元组的相应策略例如要删除仓库关系中“仓库号”W2的元组而职工关系中又有2个元组的“仓库号”都等于W2一般地当删除被参照关系的某个元组而参照关系存在若干元组其外码值与被参照关系删除元组的主码值相同这时可有三种不同的策略1:1级联删除CASCADE.将参照关系中所有外码值与被参照关系中要删除元组主码值相同的元组一起删除.2受限删除RESTRICTED.仅当参照关系中没有任何元组的外码值与被参照关系中要删除元组的主码值相同时系统才执行删除操作否则拒绝此删除操作.3置空值删除NULLIFFIES.删除被参照关系的元组并将参照关系中相应元组的外码值置空值.这三种策略具体采用哪一种要依应用环境的语义来定.1.3 在参照关系中插入元组的相应策略例如向职工关系插入E61690W8元组而仓库关系中尚没有“仓库号”W8的仓库一般地当参照关系插入某元组而被参照关系不存在相应的元组其主码值与参照关系插入元组的外码值相