港口和轮船公司环境管理数据库开发中基于多表视图数据更新的实现.doc

港口和轮船公司环境管理数据库开发中基于多表视图数据更新的实现.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
港口和轮船公司环境管理数据库开发中基 于多表视图数据更新的实现 现 代 计 算 机 ^ 总 第 一 一 实践与经验 谂掩潦孥薄孥潞 L基-t多袁视图敖据更崭的雾 严小荃,王慧觉,郭庆平 /武汉理工大学.武汉430063) 摘要:文章重点介绍了使用视图的优点.并重点论述了SQLSERVER2000申的新增 功能INSTEADOF触发嚣 的设计噩应用,特别是基于多表视图更新数据的新特性. 关键词:视图;可更新视困:触发嚣:INSTEADOFImet~lDeleted 引百 在数据库系统中,视图是一个非常有用和重要 的概念.当视图作为面向用户的数据源时,虽然它 可以简化数据的查询和修改操作,但是在SQL7.0 版本中只能对基于一个基表的视图进行修改操作. 而在许多情况下,视图往往是基于多个基表的,这 大大限制了视图的使用.现在,在SQL2000版本 中,引进了一个INSTEAD0F触发器的概念,使得 基于多表的视图可以通过设计INSTEAD0F触发 器来逻辑地实现对基表数据的更新操作. 1使用视图的优点 通过使用视图.可对用户隐藏数据库的结 构,使得只有部分数据对用户是透明的.增强了系 统的安全性;通过使用视图,可创建一个更容易 控制的环境,用户可方便地操纵视图中的数据, 而不必理睬对用户来说是没必要了解的冗余数据; 由于视图实际上是一个虚表,生成视图的SELECT 语句是在生成inserted表和deleted表之后执行 的,因此视图中的数据总是最新的;使用视图,可以 简化用户权限管理,使他们可通过视图来查询数 据,而不是限制用户查询表中特定列的权限,还可 以使得基表设计的更改不至于影响用户查询:此 外,通过使用视图,还可以进行数据更新操作,并且 代码是在后台数据库系统中实现的,减少了前台应 用程序的重复编码,提高了系统的运行速度,增强 了系统的可维护性. 可见把视图作为面向用户的数据源对象是一 个不错的选择,特别是在有了INs1EAD0F触发器 后,通过基于多表视图能够直接更新基表数据,使 得视图的应用范围更加广泛,对视图的操作更加直 接,方便. 要通过基于多表的视图更新数据,通常就要进 行INEAD0F触发器的设计.作者将在文章的下面 部份重点介绍INSTEAD0F触发器的设计和应用 2INSTEAD0F触发器 (1)设计INSTEADOF触发器 使用INSTEADOF触发器的主要优点就是可 以使不能更新的视图支持更新.对于包含多个基 表的视图,可以方便地使用INEAD0F触发器来 支持I用表中数据的插入,更新和删除操作. 在设计INSTEAD0F触发器时,需要考虑到对 基表的更新时可能出现的重复记录的情况,作者在 制作的数据库管理系统中采取的处理方法是,将对 表的重复插人转变为UPDATE语句,该语句将当 前信息检索并更新至基表中,这样就不会产生重复 键侵犯,保证了数据库的完整性.为了充分说明如 何在视图设计中使用INSTEAD0F触发器,本文将 以为轮船公司和港口所制作的环境数据库管理系 统中的部分实现为例进行论述.在数据库管理系 盯 ? 眦 @ v 统中包含船舶表和防止污染设备表,这两个表之间 存在外键约束,其中船舶表是主键表,防止污染设 备表是外键表.当用户只需要更新防止污染设备 的信息时,并不需要起知道船舶的所有信息时,只 需要知道船舶与防止污染设备的对应关系即可. 这时,使用视图就很方便,用户也很容易理解.船 舶表和防止污染设备表之间的关系图如图1所示. 船舶蠡垫谖鑫 i瞒?I口精;羲? 釉睡J—_勃i;谴蔷茬称 船舶枣喳—_蒯鞋醺嗜噶 建遘i朝啪景?J8舱—_型号 津是单喀一 _L莓.,—-矩. 囝1 其中,船舶编号与防污设备编号分别是两个表 的主键列,外键FK_防止污染设备一船舶是通过 表船舶的列船舶编号与表防止污染设备列所属船 舶编号相等来实现的,且船舶编号是标识列: 注意到在船舶表中创建了一个唯一索引,在本 例中它是必需的,它的作用将在下面进行解说.接 下来,当然是创建一个视图,名为vw一防污染设 备,其可视化的图形如图2所示. L卜l三i - _=嚣翳翥一},釜i:墨薏lll;箍 AI隶属章泣?l::苎I 图2 在创建了视图之后,为了使用户可以通过视图 直接进行数据操作,接下来就必须为视图创建 INSTEADOF触发器,在本例中为视图创建了 INEADOFINSERT触发器和INSTEADOF DELETE触发器.其中设计INs1陋ADOFINSERT 触发器主要语句如下! CREA1ZTRIGGERtrigmarmgerONyw一船舶防污染设备 INS1Z,~_DOFINSERT AS SETNOCOUNTON I

文档评论(0)

ryaoo + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档