用于简单乘法的计算列?

时间:2011-01-16 22:32:32

标签: database database-design

我制作了一个简单的库存应用程序。在表格中,我有列数量,价格和总价格。 哪个更好,将TotalPrice设为Computed Column作为数量*价格或在我的应用程序中进行此计算并将其保存在TotalPrice中?

3 个答案:

答案 0 :(得分:2)

数据库设计中的一条规则(通常):不存储也可以轻松检索的信息。

在你的情况下,我不会创建计算列,而是在检索期间进行乘法运算。通过直接选择price * quantity或创建包含此计算的视图。

该视图还有一个额外的好处,即您可以轻松更改公式(例如包含增值税),而无需更改应用程序中的所有语句。

答案 1 :(得分:1)

如果您更新价格或数量,您将被迫在TotalPrice上进行2cd更新。如果其他开发人员忘记2cd更新怎么办?现在你有糟糕的数据。

您可以使用触发器使其保持同步,但仍存在错误数据的可能性。在某些RDMS中,触发器不会针对基于集合的更新中更新的每一行触发。

但有时需要存储计算字段。如果表格很大并且您计划搜索计算字段。 (您必须存储数据以对其进行索引)。在某些设计中,您不仅可以存储计算字段,还可以存储聚合计算。

存储计算字段并不总是错误,只需确保您知道权衡。

*编辑* 还有一点。如果计算“Amount_Paid”,则更改计算公式时,客户支付的实际金额将会丢失。

设计解决问题。如果这意味着违反经验法则,那就打破一些拇指。 * END EDIT *

答案 2 :(得分:0)

为什么在可以在查询中进行计算时存储计算列?

SELECT (Quantity * Price) as TotalPrice FROM my_table