日期:2014-05-18  浏览次数:20908 次

求一个查询版本的思路
背景描述:
小第前期做了一个系列的软件,针对几个行业,每个行业又有几个版本
由于前期考虑欠佳(版本多了也不好统一考虑,也不是同一时间做的),数据表结构大致上是相同的
但不完全相同(如,某些表多几个字段少几个字段的,有的是Access,有的是SQLServer),而且
就算是结构相同,对不同的行业来说某些字段的描述也不一样

要做的事:
要做一个查询版软件,希望就一个查询版就能针对上面所有的版本进行查询,而且要符合客户行业,不同
行业的字段描述不能乱,要不然会闹出笑话的。。

分不够可再加




------解决方案--------------------
查询条件动态生成,如字段、连接语句、运算符,一般的查询应该没问题把
查询字段应该是每个版本都知道的吧,只是不一样而已?
------解决方案--------------------
做个配置文件,保存不同行业不同版本的数据库的不同之处,然后据此写查询程序。
------解决方案--------------------
楼主应该简明提出要实现的逻辑过程
------解决方案--------------------
2楼的想法不错!
------解决方案--------------------
关心
------解决方案--------------------
LZ在每个软件进行数据库连接的时候是否用了写注册表的方式?
如果有,可以在注册表中添加版本信息,然后用软件读注册表中的这个版本号。
------解决方案--------------------
看看下面段话,你就会知道了:

假设你是一家百货公司电脑部的开发人员,某天老板要求你为公司开发一套网上电子商务平台,该百货公司有数千种商品出售,不过目前仅打算先在网上销售数十种方便运输的商品,当然,以后可能会陆续在该电子商务平台上增加新的商品出售。现在开始进行该平台数据库的商品信息表的设计。每种出售的商品都会有相同的属性,如商品编号,商品名称,商品所属类别,相关信息,供货厂商,内含件数,库存,进货价,销售价,优惠价。你很快就设计出4个表:商品类型表(Wares_type),供货厂商表(Wares_provider),商品信息表(Wares_info):

商品类型表(Wares_type)
名称     类型    约束条件    说明
type_id   int   无重复   类别标识,主键
type_name   char(50) 不允许为空 类型名称,不允许重复
type_father int 不允许为空 该类别的父类别标识,如果是顶节点的话设定为某个唯一值
type_layer char(6) 限定3层,初始值为000000 类别的先序遍历,主要为减少检索数据库的次数

供货厂商表(Wares_provider)
名称     类型    约束条件    说明
provider_id int   无重复   供货商标识,主键
provider_name char(100) 不允许为空 供货商名称

商品信息表(Wares_info)
名称     类型    约束条件    说明
wares_id int   无重复   商品标识,主键
wares_name char(100) 不允许为空 商品名称
wares_type   int 不允许为空           商品类型标识,和Wares_type.type_id关联
wares_info char(200) 允许为空 相关信息
provider int 不允许为空 供货厂商标识,和Wares_provider.provider_id关联
setnum int 初始值为1 内含件数,默认为1
stock int 初始值为0 库存,默认为0
buy_price money 不允许为空 进货价
sell_price money 不允许为空 销售价
discount money 不允许为空 优惠价

  你拿着这3个表给老板检查,老板希望能够再添加一个商品图片的字段,不过只有一部分商品有图片。OK,你在商品信息表(Wares_info)中增加了一个haspic的BOOL型字段,然后再建了一个新表——商品图片表(Wares_pic):

商品图片表(Wares_pic)
名称     类型    约束条件    说明
pic_id int   无重复   商品图片标识,主键
wares_id int 不允许为空 所属商品标识,和Wares_info.wares_id关联
pic_address  char(200) 不允许为空           图片存放路径

  程序开发完成后,完全满足老板目前的要求,于是正式启用。一段时间后,老板打算在这套平台上推出新的商品销售,其中,某类商品全部都需添加“长度”的属性。第一轮折腾来了……当然,你按照添加商品图片表的老方法,在商品信息表(Wares_info)中增加了一个haslength的BOOL型字段,又建了一个新表——商品长度表(Wares_length):

商品长度表(Wares_length)
名称     类型    约束条件    说明
length_id int   无重复   商品图片标识,主键
wares_id int 不允许为空 所属商品标识,和Wares_info.wares_id关联
length  char(20) 不允许为空           商品长度说明

  刚刚改完没多久,老板又打算上一批新的商品,这次某类商品全部需要添加“宽度”的属性。你咬了咬牙,又照方抓药,添加了商品宽度表(Wares_width)。又过了一段时间,老板新上的商品中有一些需要添加“高度”的属性,你是不是开始觉得你所设计的数据库按照这种方式增长下去,很快就能变成一个迷宫呢?那么,有没有什么办法遏制这种不可预见性,但却类似重复的数据库膨胀呢?我在阅读《敏捷软件开发:原则、模式与实践》中发现作者举过类似的例子:7.3 “Copy”程序。其中,我非常赞同敏捷软件开发这个观点:在最初几乎不进行预先设计,但是一旦需求发生变化,此时作为一名追求卓越的程序员,应该从头审查整个架构设计,在此次修改中设计出能够满足日后类似修改的系统架构。下面是我在需要添加“长度”的属性时所提供的修改方案: