代码改变世界

数据库设计系列【6】当一个实体包含多个计算列时,如何处理?

2013-11-28 19:48  Mike.Jiang  阅读(1351)  评论(0编辑  收藏  举报

当一个实体包含多个计算列时,如何处理?

 

1 示例需求:

在海外采购时,将产生多种费用,如:班轮费、报关费、卸货费,仓储费、利

息费,银行手续费等等。这些费用的公式如下:

班轮费

No. of FCL x rate

报关费

No. of FCL x rate

卸货费

No. of FCL x rate

仓储费

Qty (MT) x Conversion (MT/m3) x rate

利息费

N/A

银行手续费

Bank Charges = Purchase Amount x 0.003

 

上面仅是一个简单的需求,根据公司所处的国家不同,这些公式也将做相应的调整;并且,隔一段时间,根据政策的变化,公式也需要做相应的调整。

 

2 解决方案

我们抛开国家和时间因素,这样就转为一个简单的公式计算问题:在采购合同模块,根据公式自动计算出多种费用,并存储于合同信息。

具体公式如:仓储费={QtyMT}x{ MTM3}x {rate}。计算时,将对应的值替换成具体值即可。

 

3 总结

类似有很多这样需要根据公式来计算出值的应用场景,可根据实际需要,对费用公式实体做进一步的设计,如加上国家、时间、费用类型、币种等因素。其中如果加上时间的因素,就要考虑加上历史数据如何管理。