第9章 触发子和主动数据库

第9章 触发子和主动数据库

ID:44962933

大小:112.50 KB

页数:45页

时间:2019-11-06

第9章 触发子和主动数据库_第1页
第9章 触发子和主动数据库_第2页
第9章 触发子和主动数据库_第3页
第9章 触发子和主动数据库_第4页
第9章 触发子和主动数据库_第5页
资源描述:

《第9章 触发子和主动数据库》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第9章触发子和主动数据库9.1主动数据库系统引论传统的数据库系统只能按照用户或应用程序的要求,对数据库进行操作,而不能根据发生的事件或数据库的状态主动进行相应的处理,这样的数据库系统是被动的。有些应用不满足于数据库系统的这种“不叫不动”式的被动服务,希望数据库系统能够主动为用户提供服务。制作:倪巍伟东南大学计算机科学与工程学院数据库课程组在20世纪80年代初,出现了主动数据库系统这样的名词。到20世纪80年代中后期,主动数据库系统成为公认的数据库重要研究方向之一。主动数据库系统一词与关系数据库系统、对象数据库系统等有些差

2、别。后者是以不同数据模型为特征的数据库系统,标志数据库的不同发展阶段。主动数据库仅是数据库系统的一种功能,关系数据库系统可以增加此项功能,对象数据库系统以及其他类型的数据库系统都可以增加此项功能。制作:倪巍伟东南大学计算机科学与工程学院数据库课程组早在主动数据库系统一词出现之前,就有主动数据库技术的萌芽。在网状数据库的DBTG语言标准中,就定义了一种ON子句,其格式为:ON〈命令表CALL〈过程〉〈命令表〉表示一种或多种数据库操作命令,如INSERT,REMOVE等。在执行到〈命令表〉中所列的数据库命令时,数据库系统就自

3、动调用一个相应的处理过程。制作:倪巍伟东南大学计算机科学与工程学院数据库课程组早期的关系数据库管理系统SystemR中,曾有人建议增加触发子系统(triggersubsystem)。该子系统在满足一定条件时,触发一定的动作,主动完成必要的处理,实际上就是现在所称的主动数据库子系统。在被动数据库系统中,也有与主动数据库类似的功能。例如,自动维护简单的域完整性约束和实体完整性约束等。这些功能都是以系统内部逻辑控制的形式实现的,用户不得重新定义、修改或扩充。具有这类功能的数据库系统仍属被动数据库系统。制作:倪巍伟东南大学计算机

4、科学与工程学院数据库课程组由于传统数据库系统缺少主动数据库功能,有些可由主动数据库提供的功能不得不由应用程序来实现。在每次更新数据库时,应用程序检查数据库更新前后的状态,若有违反完整性约束或需主动干预等情况,应用程序对数据库进行相应的操作。这样做不但增加了应用程序设计者的负担,而且还有下列缺点:(1)若要修改完整性约束或触发条件,则需修改应用程序。制作:倪巍伟东南大学计算机科学与工程学院数据库课程组(2)由应用程序实现完整性约束检查和其他处理,正确性难以保证,不利于数据库系统的可靠运行。(3)增加了数据库和应用程序间的通

5、信,影响数据库的性能。制作:倪巍伟东南大学计算机科学与工程学院数据库课程组在主动数据库系统中,像上述的处理,用户只要提出要求,由DBMS执行,完全可以避免上述缺点。主动数据库系统对DBMS的基本要求是能处理下列形式的规则:WHENEVER〈事件〉IF〈条件〉THEN〈动作〉这种规则称为主动数据库规则(activedatabaserules),又称ECA规则(取事件、条件、动作英文名的首字母),也称触发子(triggers)。制作:倪巍伟东南大学计算机科学与工程学院数据库课程组9.2规则的表示ECA规则是由传统的产生式规则

6、演变而来的。产生式规则在人工智能中用得很普遍,其基本格式可表达为:IF〈条件〉THEN〈动作〉制作:倪巍伟东南大学计算机科学与工程学院数据库课程组这种规则可称为CA规则。在主动数据库系统中,也有少数系统直接采用CA规则。其语义为:当数据库到达某一状态,使规则中的〈条件〉满足时,则该规则被触发。但是CA规则用于主动数据库系统有下面两个缺点。(1)CA规则只表示数据库到达的状态,而不表示如何导致这种状态。制作:倪巍伟东南大学计算机科学与工程学院数据库课程组(2)在主动数据库中,对触发规则的时间往往是有要求的。例如,有些规则要

7、求在事件前触发,有些则要求在事件后触发。在ECA规则中,可以明确地表示此要求;而CA规则不提供这种方便。制作:倪巍伟东南大学计算机科学与工程学院数据库课程组下面通过SQL∶1999的触发子定义,说明主动数据库规则的语法和语义。触发子可定义如下:〈触发子〉∷=CREATETRIGGER〈触发子名〉{BEFORE|AFTER}〈触发事件〉ON〈表名〉[REFERENCING〈引用名〉]FOREACH{ROW|STATEMENT}WHEN(〈条件)〈动作〉〈触发事件〉∷=INSERT|DELETE|UPDATE[OF〈属性表〉

8、]〈引用名〉∷=OLD[ROW][AS]〈旧元组名〉|NEW[ROW][AS]〈新元组名〉|OLDTABLE[AS]〈旧表名〉|NEWTABLE[AS]〈新表名〉制作:倪巍伟东南大学计算机科学与工程学院数据库课程组SQL更新操作的对象一般是个元组集,对这些操作的监控就存在一个监控粒度问题。可供选择的监控粒度有两种:或

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。