一种数据库动态字段实现方案

2018-03-01 10:26任毅
无线互联科技 2018年22期
关键词:字段动态数据库

任毅

摘 要:目前在数据库应用中,有时候会遇到列不完全明確的情况,存在增加列或者减少列的情况,例如工资表,可能会根据情况添加新的工资收入列或者去除已经不再适用的列,此时,就需要对字段进行动态处理,以适应不断变化的查询、统计需求。文章以一个实际的应用为例,实现了字段的动态处理。

关键词:数据库;动态;字段

1 动态字段处理方法

动态字段目前主要有以下几种处理方案[1]:

(1)动态增加数据库表字段。动态增加数据库字段会改变表结构,增加维护的难度,有的数据库系统并不支持动态增加字段。

(2)预留足够的空白字段,运行时作动态影射。提前预留field0.field1.....fieldN字段。优点:相较于其他做法,比较稳定,不用行转列,不用解析XML。缺点:会有大量的空余字段,需要记录映射关系,查询时比较复杂。

(3)用XML格式保存在单字段里。添加一个XML格式字段,将动态字段以逗号分隔,所有的字段都在一个列里。优点:扩展容易,维护容易。缺点:在查询或解析时需要大量的用substring等对字符串的处理,性能上有问题。

(4)改列为行,用另外一个表存放定制字段。只用一个表,3个字段id,fieldName,fieldValue,将动态字段的名称和值放进去。优点:扩展容易,结构简单,缺点:数据量比较大,查询时可能比较慢。

2 相关表设计

某单位需要编制一个工资发放管理系统,要求:

(1)本月工资数据由上一月工资数据生成,然后在其基础上修改,以减小工作量。

(2)能添加、删除工资字段,即字段不固定。

(3)员工的工资收入须发到两张卡里,每张卡上工资所涉及的字段统一指定[2]。

在认真分析具体需求后,对数据库进行了设计,准备采用动态字段解决用户的问题,以下是几张关键的数据表设计:

(1)工资字段表(W_GzItem)。

工资字段表反映了每月有哪些工资项,包括ItemID(工资字段编号)、ItemName(工资项名称)、BankCode(银行信息)等字段。

(2)员工工资表(W_Gzdata)。

员工工资表反映员工每月工资情况,在此按照预留字段进行设计,该系统目前需要字段不超过30个,考虑到以后的发展,再预留30个字段,字段名以字母A开始,其后跟一编号,此编号与工资字段表W_GzItem中的ItemID存在一一对应关系,即列与行对应,从而实现动态字段[3],如图1所示。

3 功能实现

在本系统工资数据处理中,关键地方在于生成查询串及更新串,其中查询串还需要判断工资项是“发钱”还是“扣钱”,以计算实发工资,更新串用于用户对数据修改后保存到表中,程序流程如图2所示。

4 结语

动态字段主要应用于用户数据表列(例如工资项)动态变化的情况,并且这些字段数据类型一致,处理方法相同。采用预留字段来处理动态字段,需要构建查询字符串及更新字条串,可节省数据查询时间,提高查询效率,但会多占用一部分数据表存储空间。

[参考文献]

[1]谢国坤,霍爱清,汤楠.Vcard数据的动态字段解析和存储方案的实现[J].计算机工程与设计,2011(9):3231-3234.

[2]黄飞江,卢晓春,边玉敬,等.基于数据窗口的动态字段查询的设计与实现[J].大众科技,2007(2):67-68.

[3]阮国龙,刘铭.在Delphi数据集中实现查找字段的动态创建[J].计算机系统应用,2004(9):66-68.

猜你喜欢
字段动态数据库
国内动态
图书馆中文图书编目外包数据质量控制分析
国内动态
国内动态
CNMARC304字段和314字段责任附注方式解析
无正题名文献著录方法评述
关于CNMARC的3--字段改革的必要性与可行性研究