MySQL - 计算值与在字段中存储

时间:2011-09-03 18:53:07

标签: mysql

如果之前有人问过我,我很抱歉,但我对此很陌生,无法找到解决我面临的情况的答案。

我正在尝试整理一个数据库,以便在我们公司的网站后面运行。该数据库将存储有关客户发票和付款的信息。我想弄清楚我是否应该为发票余额创建一个字段,或者我是否应该计算访问客户帐户的时间?我不想创建冗余数据,并且不希望以某种方式不会更新字段,因此是不正确的...但我也不想创建大的服务器上的负担 - 特别是如果我们提取客户帐户的概述 - 然后需要计算每个帐户的余额。现在我们从头开始,所以我想把它设置正确!

我们预计到今年年底会有几百个客户账户,但到明年年底很可能会达到几千个。 (每位客户的平均发票数量大约为每年2-3张。)

3 个答案:

答案 0 :(得分:1)

还有其他事情需要考虑。例如,如果您的发票包含另一个表中的产品ID,并且其他产品的价格发生变化,该怎么办?当你去生成发票时,那个人在6个月前实际支付的费用总额是错误的。因此,如果出现这种情况,您可能希望将总额存储在发票上。如果你走另一条路,我不会太担心做一点数学,它不太可能是一个巨大的瓶颈。

答案 1 :(得分:0)

是的,请记住,物品/商品会随着时间的推移而改变价格。您需要在购买当天获得发票余额。动态计算余额可能导致以后出现错误的余额。

答案 2 :(得分:0)

发票余额是存储的重要数据,但我认为您的帐户余额是因为您稍后提到的。

存储帐户余额会使其非正规化,而这不是会计数据库通常设计的方式。始终从发票减去付款计算帐户余额。非规范化几乎总是一个坏主意,如果您将来需要优化,还有其他地方可以缓存比数据库更高效的数据。

在您的用例中,无论如何,几千行上的查询都可以忽略不计,所以在必要之前不要进行优化。

相关问题