首页 > 范文大全 > 正文

浅谈数据库触发器在机场航显系统中的应用

开篇:润墨网以专业的文秘视角,为您筛选了一篇浅谈数据库触发器在机场航显系统中的应用范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:本文主要讲解如何通过数据库触发器来处理航班登机口变更在航显(航班信息显示系统,下同)屏幕上的显示,从而提醒旅客到正确的登机口进行登机。

关键词:触发器:特殊类型的存储过程;航显:航班信息显示系统;登机口:旅客登入乘航班的入口

中图分类号:TP319文献标识码:A文章编号:1009-3044(2008)19-30175-03

The Implementation of Oracle Triggers in Airport Flight Information Display System

ZHANG Xiao-xiao1, JIANG Ge2

(1. School of Information Science & Technology of Beijing Forest University, Beijing 100083, China; 2.Lucent Technology China, Beijing 100102, China)

Abstract: This paper mainly discuss how to use Oracle triggers to handle gate change in Airport Flight information display system, so remind the passengers to the right boarding gates.

Key words: Trigger; a special type of oracle procedures; Flight display; flight information display system; Gate; boarding gate

1 触发器、作用和分类

触发器是一种特殊类型的存储过程。它主要是通过事件进行触发而被执行的。当对数据库表进行诸如UPDATE,INSERT,DELETE这些操作时,数据库就会自动执行触发器所定义的SQL语句,从而确保对数据的处理符合由这些SQL语句所定义的规则。触发器的主要作用就是其能够实现由主键和外键所不能保证的复杂的参照完整性和数据的一致性。除此之外,触发器还实现了级联运行:触发器可以侦测数据库内的操作,并自动的级联影响整个数据库的各项内容。例如:DailyFlight(当日航班表,下同)表上的触发器中包含对DailyChange表(登机口变更表,下同)的数据操作(插入)而该操作又导致DailyChange表上的触发器被触发执行。

2 触发器主要分以下几类

a.在执行触发事件之前(Before Operation On DailyFlight);

b.在执行触发事件之后(After Operation On DailyFlight);

c.非触发事件。

3 与触发器相关的数据表

当日航班表(DailyFlight)

资源变更消息表:DailyChange(记录登机门分配或变更消息)

显示设备信息表:Facility

消息信息表:Message

Message中的MessageCn数据项中,Facility和DailyChange表中的ID是一一对应的。ID是由数据库中的函数自动生成的。

4 数据库触发模式模拟

T_ DailyFlight BEFORE INSERT OR UPDATE ON DailyFlight FOR EACH ROW

触发条件:when(new.DisplayFinished='N' and new.FlgDeleted = 'N')

作用:触发条件为该航班状态不能为显示结束或删除

T_DailyFlight_2 AFTER INSERT OR UPDATE ON DailyFlight FOR EACH ROW

触发条件: when(old.FlgDeleted ='N' and new.FlgDeleted = 'Y')

作用:当数据库收到航班的显示结束信息后,删除该航班对应的消息

详解(T_DailyFlight――以登机口分配或变更为例):

出港航班登机门分配或变更事件:

该事件相当于是对DailyFlight表的更新操作,所以会触发T_ DailyFlight。

判断该航班是在数据库中存在,并且还没有收到实际起飞时间。

将该航班相关数据(系统自动生成ID,运行日,航班号,进离港,及相应登机门标识)插入DailyChange表,该插入事件触发了DailyChange表上的触发器。

修改Message表中以前与此航班相关的登机门分配或变更的消息,同时插入一条新的空消息。

修改Facility表中与此登机门标识相关的消息列表。

5 举例如下(假设各个相关数据表初始为空)

出港航班CA111首先被分配在3号登机口,然后变更到4号登机口,然后被变更到1号登机口。

1) 则当该航班被分配在3号登机口后,触发器会首先在DailyChange表中生成一条登机门消息:

同时会在Message表中插入一条空消息:

同时会对Facility相应数据项进行更新:

2) 当该航班的登机口被变更到4号时,触发器会首先在DailyChange表中生成另外一条登机门消息:

同时会在Message表中修改ID为5000的消息并生成插入另外一条空消息:

同时会对Facility相应数据项进行更新:

3)当该航班的登机口再被变更到1号时,触发器会首先在DailyChange表中生成另外一条登机门消息:

同时会在Message表中修改ID为5000和5001的消息并生成插入另外一条空消息:

同时会对Facility相应数据项进行更新:

该触发器T_ DailyFlight还处理登机时间变更事件,由于处理流程和登机门分配或变更类似,故不再赘述。

当数据库会收到某航班被删除事件后,会触发T_ DailyFlight _2触发器,从而级联删除与此航班相关的所有消息。

6 具体说明(仍以上面的CA111航班为例)

1) 收到此航班的删除事件。

2) 以此航班的标识为查询条件在DailyChange表中找出与此航班相关的消息,并删除。

3) 根据在DailyChange表中找出的与此航班相关的消息的ID(5000-5002)从而在Message表中删除相关的ID对应的消息(下列消息均会被在Message表中删除)。

4) 根据在DailyChange表中找出的与此航班相关的消息的ID(5000-5002)从而在Facility表的Message数据项中删除相应的ID(相应的消息列表中的ID均会被删除)。

7 总结

通过部署数据库触发器,简化程序处理,实时响应动态的航班变更信息,对于航班信息显示这种实时性要求较高的系统来说,可谓一举多得。

参考文献:

[1] (美)龙利(Loney,K)著. 张立浩,尹志军. 机场信息系统设计说明书[M]. Oracle Database 10g完全参考手册. 清华大学出版社,2006.

[2] (美)俄曼(Urman,S),(美)哈德曼(Hardman,R),(美)麦克罗克林(Mclaughlin,M)著. 彭珲 译. Oracle Database10g PL/SQL程序设计[M]. 清华大学出版社,2005.

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文