随笔- 47  评论- 196  文章- 1 

数据库的另一种设计方法

最近参与了一个项目的开发,在开发的过程中发现数据库的设计有点意思,顺便拿来给大家分享一下。

 

对于一个项目来说,数据库无疑是很重要,如果数据库设计不好,项目就很难开发的优秀,所以一个数据库的设计就显得尤其重要。

在我这个项目中,有一个订单表(orderform),一个商品信息表(googsinfo),一个系统参数表(Syspram)暂且拿这几张表做例子.在表orderformgoogsinfo中,所有的字段一律全部都为WG01, WG02, WG03, WG04…..WG30这样的30个字段,这些字段全都是无意义的,如图:

 

 

 

然后在系统参数表(Sysparam)里就标明这些表的意义,包括表里字段的意义,如图

 

 

这里每个表里的所有字段都被清楚的表述出它的意义,然后我们在操作SQL语句的时候就只操作系统参数表。比如一条select语句:

原句:SELECT WG01,WG02 FROM FreightInfo

改变后的:SELECT (SELECT FIELDNAME FROM SYSParma WHERE SHOWNAME=’配送编号’),

(SELECT FIELDNAME FROM SYSParma WHERE SHOWNAME=’联系人电话’) FROM FreightInfo.

当然,大家现在看起来好像改变后的比原句复杂多了,但是如果我们写一个公共类来解析系统参数表里的字段,那我们在写类似SELECT WG01,WG02 FROM FreightInfo

这样的查询语句时,就完全没有必要硬编码在代码中,只要通过改变你传入的参数就可以获取到不通过的字段,如果你的公共类做得更强大的话,那SQL语句的类型(比如:SELECT,UPDAE,DELETE,INSERT)等你都可以通过传入参数来得到不同的SQL语句,这就有点像HRIBERNATE,不过不同的是HREBERNATE把配置写到了XML文件里,而这里是把配置写到了数据库里,操作起来更方便。在以后我们就根本不用关心表的结构问题,哪怕它换成了其他的系统,我也只要改动一下系统参数表里的数据就可以了,完全不用担心字段的问题,因为所有的字段都是无意义,这样使用的重复性就可以大大提高。

 

这就是我的见解,有什么不足的地方,还请多多请教!

posted on 2008-12-25 17:41 独臂侠 阅读(...) 评论(...) 编辑 收藏