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

费用延用设计
需求分析:费用延用设计。
比如有个客户A,他7月份购买了保险产品A,保险产品B.
产品A总价为:100元,子产品价格的总和。
产品B总价为:100元,子产品价格的总和。

7月账单:客户购买所有产品总和200元及明细,
8月账单沿用7月费用:客户购买所有产品总和200元及明细。

注意事项:
1、每个产品随时有可能调整价格,价格调整后同时客户产品价格应该变化。
比如A:
7月是200元,
8月沿用7月200元,
9月调整价格为300元,
10月沿用9月价格。
2、客户费用段是不允许用户手动修改。

现在我所想的表结构如下:
客户表:
cusid    cusname
1  测试客户

费用段表:
fid cusid moneytotal beginTime stopTime
1    1        200            2013-07     null   ---------------》如何为空,沿用 

产品A明细表:
id fid proid  money
1   1     1       20
2   1     2       80
产品B明细表:
id fid proid  money
1   1     4       20
2   1     5       80

现在问题是:
1、我调产品A的价格要先去费用段表生成一条记录,然后把产品A,产品B的所有明细重新插入。一般一个客户会购买5种以上产品。
费用段表:
fid cusid moneytotal beginTime stopTime
1    1        200            2013-07     2013-08   终止时间就是产品生效时间的前一个月。
2    1        180            2013-09      null        ---------------》如何为空,沿用 

产品A明细表:
id fid proid  money
1   1     1       20
2   1     2       80

3   2     1       20   
3   2     1       60   ------>调整后的价格

产品B明细表:
id fid proid  money
1   1     4       20
2   1     5       80

3   2     4       20     ---->重新对应fid(费用段id)
4   2     5       80

2、如果产品B的价格应该8月调,而我先调了产品A9月,这里就存在跨费用段了,现在应该怎么办?,这儿有个问题就是调每个产品价格先后顺序。

有没有更好的建表方式或设计思路?
------解决方案--------------------
引用:
建议产品表的设计:
id          -- 产品ID
begindate   -- 起始时间
enddate     -- 结束时间
money       -- 价格

例如
7月是200元,
8月沿用7月200元,
9月调整价格为300元
则表数据为
id  begindate   enddate       money
-----------------------------------
 1  2013/07/01  2013/08/31    200
 1  2013/09/01  2099/12/31    300