插入订单总价值,还是每次计算?

时间:2012-08-17 05:31:00

标签: php database database-design e-commerce

我正在建立一个简单的电子商务网站,我对订单确认和创建有一些疑问......

这是good practices的问题,然后是一个真正的问题......

我是否应该:计算总订单价值,并在数据库中插入,或者我应该在每次读取订单/ dosomething时计算它?

由于

3 个答案:

答案 0 :(得分:3)

数据库目录中的最佳实践意味着标准化数据,并且存储可以计算的值违反了该数据。

永远不会存储你可以计算的东西,除非你绝对确定这两个值之间不会有差异。

例如,如果您的订单包含两个100美元的商品但订单设置为150美元,您认为会发生什么?

有时,存储可以以其他方式计算的值的理由(通常与性能相关)但性能增益必须是重要必要,和可能性不一致的要么被删除或计划用于。

您可以删除触发器或物化视图等内容,或者您​​可以通过更改业务逻辑来检测和修复问题,或者通过其他方式来规划它们。

但通常,性能提升不值得减轻潜在问题的额外努力。毕竟,你看到数百万个别项目的订单数量是多少?除了美国国防部,当然: - )

答案 1 :(得分:3)

在您的交易数据库(即主要数据库)中,您不应存储计算值。总结十几行是没有的。

但是,在您的分析数据库(也称为商业智能数据库,数据仓库)中,您应该存储计算的总数。

答案 2 :(得分:1)

作为一种良好做法,您不应存储可从表中现有列派生的值。

有许多理由不这样做,例如

  1. 如果要更新任何基础列,则还必须更新派生列。

  2. 表的大小将会增加

  3. 等等..等等。