日期:2014-05-17  浏览次数:20557 次

=100分=求证一个项目数据库设计的演化正确性和设计正确性!经验人员乱入!
项目起初是如图1的状态:

实际上此处的结算就是汇款结算.是很简单的设计
1年后....
项目需要增加结算方式,如图2:

由于网上结算只作为辅助结算方式,只做了简单的数据库设计.
又1年后....
由于网上汇款开始明显高于汇款结算方式.客户要求项目中的流程也要做很多的调整,包括一些结算属性也要做了重新的设计,于是采用了设计成如图3:


问题1:请问这样演化是正确的吗?
问题2:按如图3后采用NF123后我使用了如下图



请问这样设计是合理的吗?
问题3:当复杂查询/新增/修改/删除时,如何设计才能最合理和方便以及性能?请列举优劣.和各位的实际开发经验.
如:采用纯SQL语句查询时采用视图.在新增/修改/删除时都需要执行多次.但程序设计直观,可用动态组装SQL语句,只需修改程序即可,数据库主要做数据存储.需要处理注入问题,效率最低(?)....

------解决方案--------------------
问题1: 这是正常需求的变化,完全正常。
问题2:网上结算和汇款结算可以使用同一张表,这样可以无限扩展 随便你加结算方式。
问题3:不是很明白 具体问题。
------解决方案--------------------
NF123就是最好吗?不见得,有的时候还需要做逆范式,所以一起以实际情况来。
对于你这个主要做数据存储,确实NF123不错。复杂查询,只有3个表,你来复杂一下看看。。。