项目起初是如图1的状态:实际上此处的结算就是汇款结算.是很简单的设计
1年后....
项目需要增加结算方式,如图2:由于网上结算只作为辅助结算方式,只做了简单的数据库设计.
又1年后....
由于网上汇款开始明显高于汇款结算方式.客户要求项目中的流程也要做很多的调整,包括一些结算属性也要做了重新的设计,于是采用了设计成如图3:
问题1:请问这样演化是正确的吗?
问题2:按如图3后采用NF123后我使用了如下图请问这样设计是合理的吗?
问题3:当复杂查询/新增/修改/删除时,如何设计才能最合理和方便以及性能?请列举优劣.和各位的实际开发经验.
如:采用纯SQL语句查询时采用视图.在新增/修改/删除时都需要执行多次.但程序设计直观,可用动态组装SQL语句,只需修改程序即可,数据库主要做数据存储.需要处理注入问题,效率最低(?)....

解决方案 »

  1.   

    Quote: 引用 1 楼 lixzhong 的回复:
    问题2:网上结算和汇款结算可以使用同一张表,这样可以无限扩展 随便你加结算方式。
    如果两张表合在一起违背NF123.
    如汇款结算没有WebUrl字段,再者当再次增加其他结算方式时,字段也会有出入.希望搞过迁移和深化项目(多期项目)的朋友进来说一下.问题3是希望能听取一下有做过这方面的相关经验.
      

  2.   

    NF123就是最好吗?不见得,有的时候还需要做逆范式,所以一起以实际情况来。
    对于你这个主要做数据存储,确实NF123不错。复杂查询,只有3个表,你来复杂一下看看