张吉同 冯梦清
摘要:首先对井下人员定位系统的数据库进行概要设计,画出了系统的主要实体之间的E—R图;然后对井下人员定位系统数据库进行逻辑设计,建立了数据库中主要的表结构;最后对数据库的表根据系统的特点进行了优化设计,将大表拆分为小表,以分散访问,达到以空间换时间的目的,提高系统的访问效率。
关键词:人员定位;数据库;优化
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)18-0013-02
井下人员定位系统是利用无线射频技术RFID、数据库、通信和计算机技术来实现对井下人员的跟踪定位信息的采集、分析处理、实时显示、数据库存储、考勤管理及报表打印等功能。实现地面管理人员对井下人员实时分布、轨迹等进行实时管理,从而达到在灾变发生时为抢险救灾提供科学可靠的依据。
煤矿采用三八制或四六制工作方式,每天24小时不间断的生产,所以下井人员众多,若要实现井下有效定位,满足国家规定,井下基站也需要很多。所以系统每天都要产生大量的数据记录,以一个年产300万吨的煤矿为例,按三八制计算,每班大概需要500人下井,每人来回大概要经过30个基站,假设每经过一个基站产生一条记录,每天产生3×500×30=45000,每月产生45000×30=1350000条记录,按国家要求井下信息至少要保留6个月,1350000×6=8100000条记录。所以,要对这些原始数据进行有效的管理利用,对数据库的设计与优化就显得非常必要。
1数据库设计
数据库在一个信息管理应用软件系统中占有非常重要的地位,数据库结构设计的好坏将直接影响系统的效率以及实现的效果。合理的数据库结构设计可以提高数据存储的效率,减少数据的冗余,保证数据的完整性和一致性。
1.1 数据库概要设计
下井人员携带标识卡(tag标签),经过安装有基站(读卡器)的位置时,基站读取人员所携带的标识卡,把标识卡的ID号和读取时间上传到监控中心的数据采集主机上并保存到实时数据表中,系统依据系统所采集的原始数据再与其他相关的关进行关联处理,生成一些其他相关信息表,并保存在相应的数据库中,供管理员用户查询利用。根据系统所涉及的实体以及它们之间的关系可以画出系统实体关系(E—R)图。系统的E—R图如图1所示。
1.2 数据库逻辑设计
根据人员定位管理系统的功能及系统所涉及的实体以及它们之间的关系,建立以下主要表:管理员信息表、用户信息表、部门信息表、基站信息表、识别卡信息表,以上这些表相对修改的机会较小,一般建立完成后变动很少,所以把这些表称为静态表;在系统中由于井下人员移动所产生的轨迹通过基站传到监控中心,监控中心的数据采集主机就把这些信息保存在一个表中,这个表称为轨迹表,这个表存储员工在井下的行走轨迹,所以随着时间的推移,这个表的数据量会急剧增加,而系统所查询信息的生成都要依靠这个表而产生,所以这个表的大小直接影响系统的效率,这个表称为动态表。以下列出系统部分表的结构。
(1)基站信息表
基站信息表用来存储基站的相关信息,其详细表结构如表1所示。
(2)识别卡信息表
识别卡信息表用来存储识别卡的ID、编码、电压、当前状态、删除标记以及所属人的ID号信息,其具体表结构如表2所示。
(3)井下人员轨迹信息表
井下人员的信息是系统的基站采集的,为了减少传输的信息量,系统只采集了基站ID、识别卡ID和读识别卡的时间,所以这个表的只有四个字段,其具体表结构如表3所示。
2 数据库优化
数据库设计应满足完整性、一致性、最小冗余等要求,但是在进行实际数据库设计时并不一定要完全遵守数据库设计规则,要根据系统实际需求进行设计。
2.1 表结构的优化
1)由于人员定位系统的特殊性,数据要求至少保存半年以上,特殊数据要保存至少一年以上,而且井下轨迹记录不允许用户进行修改,为了防止用户对员工下井信息进行篡改,所以井下人员信息表增加eventID字段,用来记录井下记录的自增ID号,若用户进行删除或添加信息就会从ID号上反映出来。
2)人员定位的数据要保存一定的时间,而井下人员的轨迹及相关的统计考勤等信息都依赖于井下人员轨迹表。如一个人的下井轨迹是要通过井下人员轨迹表中的tagid与员工信息表中的cardid进行关联才找到这个人的信息,再通过员工信息表中的departid找到这个人的部门的相关信息,通过tagid可以找到卡的编码的相关信息,所以各个表之间都是通过相应的id号进行关联的,所以当一个人离岗时,他的信息不可真的删除,只能加一个删除标记,以便系统能找到相关人员的历史信息,同理他原来的卡的信息也不可直接删除,只能加一个删除标记,防止其他人的轨迹信息与现在卡号所对应人的信息关联在一起,导致数据前后的不一致。所以对数据库中易导致数据前后不一致的表都增加了一个is_deleted字段,用来标记此记录被删除。
2.2 查询的优化
为了提高系统查询的效率要对表中的关键字要建立索引,同时要尽量减少表之间的关联,表之间关联条件的选择也非常重要。
2.3 表的优化
由于井下人员轨迹表随着时间的增加数据会急骤增加,如果不对此表进行有效的分流,会严重影响系统的效率,甚至会导致系统的崩溃。监控系统要实时统计当前井下人员的分布及井下人员的实时轨迹,需要实时对井下人员轨迹表进行访问,它的记录条数直接影响系统的效率,所以要对这个表进行合理的分流,使其数据量降到合适的范围,是我们设计时要考虑的问题。为了防止井下人员轨迹表单表的数据量过大,将这个大表拆分成小表以分散访问,以空间换取时间。将表中的记录按时间以月为单位进行分割,以月份命名。同时为了方便系统对每个工人的信息进行统计和考勤,并将当前在井下的人员信息保存到一个表中,称为实时表;对每个出井的人员把他的记录信息进行统计,生成一条历史记录,这个表包含人员姓名、卡号、入井时间、出井时间以及相应的班次,并把这条记录保存至以月份命名的历史表中。这样就能达到把一个大表分为多个小表的目的,降低了单表的数据量,并通过建立冗余表的方式提高了系统的执行效率。
3 结语
首先对井下人员定位系统的数据库进行概要设计,画出了系统的主要实体之间的E—R图;然后对井下人员定位系统数据库进行逻辑设计,建立了数据库中主要表结构;最后根据系统的特点对数据库的表进行了相应的优化设计,将大表拆分为小表以分散访问,达到以空间换时间的目的,提高系统的访问效率。所以在设计信息管理类系统时,应结合数据库设计规范及要求,同时也要根据系统的特点来合理地组织和设计数据库,达到二者之间的平衡,实现系统的设计目的。
参考文献:
[1]刘佳,朱慧,华钢.井下人员定位管理系统数据模型设计[J].工矿自动化,2013(7):91-92
[2]陈小奎.井下人员定位管理系统数据库设计及优化[J].能源技术与管理,2007(6):133-134.
[3]杜文涛.基于WEB的井下人员定位信息系统的研究[D].西安科技大学,2010.