您的位置:首页 > 数据库

应用程序开发总结(7)--用折叠数据库字段的方法保存配置

2014-08-29 17:13 176 查看

第九章 用折叠数据库字段的方法保存配置

对一个对象进行持久化(保存)有很多方法。可以保存到数据库,也可以序列化到xml文件中,也可以用AppSettings的方式写入到程序配置。
使用关系数据库的方式,为对象的每一个属性建立一个字段。如果业务还没有上升到使用使用对象数据库,这种方法或许是大家首选的方式。下面我就来说明我使用这种方法时候遇到的困难和我应对的策略。

在我们的系统有很多模型对象,每个对象有一大批属性。我们将这些对象的属性保存到Access表中。下图是我们最开始的时候设计的数据库字段。


一切都是那么的自然和容易理解,但是某一天,我想添加一个新的字段ReferenceKey。这个字段很重要,但是现有的配置表没有这个字段。没办法,我只能升级系统,把配置的版本提高一个版本,同时更新系统中读取配置的方式。
但是一切没有安静下来,随着功能增强,越来越多的字段需要添加,而且部分字段由于丢失含义,需要删除。如此修改了好几个版本。虽然做的了向下兼容,但是低版本的系统无法支持高版本的配置。如此越来越麻烦。
当系统开始往网络方面发展的时候,本地Access数据库是不能用的。只能换支持网络的数据库。但是不同的数据库字段的格式不同,所以又等于重复设计数据库的配置。

如果工作了2年多吧。就开始着手找一种方法统一解决这个问题。我打算把所有的属性信息放在一个可扩展的字段中,这样数据库的字段长度就固定了,无论你的类有多少个属性,数据库不需要修改了。



如上图,我把字段控制在这5个字段上,其中最重要的是FieldValues。这个字段以特有的方式把所有的字段包容了起来。

这种方式的改变,从此不再考虑类的属性是否存在添加或者修改。而且其他种类的对象也可以使用同样一套表格配置,不再需要重新设计数据库字段了。
当然这种方式也有缺点:1)字段被封装后,基本无法进行过滤。比如原来的表格可以根据Name来进行选择,而现在不行。2)FieldValues字段只能使用变长的或者类似Note这样的数据类型,可能造成数据库空间过大。
具体是否采用类似的方式,取决于你的业务需求。总的来说,这种方式对于常用的配置是非常有用和方便的。

对于如何把一个类的字段融合到FieldValues这个字段,请看下一章。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: