我有一张滑动(按比例)价目表,我需要从中向客户收费,我想知道最好的设计。例如,我的价目表是这样的:
(用法是整数而不是浮点数)。
Level Usage Rate
----------------------
0 10,000 $2.00
0 20,000 $1.00
0 30,000 $0.50
1 10,000 $4.00
1 20,000 $2.00
1 30,000 $1.00
因此,例如,如果客户在 0 级使用 15,000 个小部件,他们会被收费:
10,000 * 2.00 = $20,000
5,000 * 1.00 = $ 5,000
-----------------------
Total: $25,000
请注意,对于 1-10,000 之间的小部件,客户按 2.00 美元/小部件收费,然后对于 10,001-20,000 之间的小部件按 1.00 美元/小部件收费,依此类推。也就是说,并不是所有小部件都以最便宜的价格收费——“早期”小部件更贵,然后小部件数量越多越便宜。
我正在考虑预先计算费用,这样我就可以在客户和计算的费率之间进行连接。显然,表pre_calc会很大,但磁盘空间很便宜。它会比每次计算成本更快/更容易。
Table pre_calc
==============
Level Usage Cost
----------------------
0 0 $0
0 1 $2.00
0 2 $4.00
... etc
1 0 $0
1 1 $4.00
1 2 $8.00
... etc
允许我做
SELECT c.name, p.cost
FROM customers as c
INNER JOIN pre_calc as p
ON c.level = p.level AND c.usage = p.usage;
对此设计有何评论?有什么更好的方法吗?