首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >简单乘法的计算列?

简单乘法的计算列?
EN

Stack Overflow用户
提问于 2011-01-16 22:32:32
回答 3查看 3.2K关注 0票数 0

我做了一个简单的清单应用程序。在一个表中,我有Quantity、Price和TotalPrice列。哪个更好,将TotalPrice作为数量*价格,还是在我的应用程序中进行此计算并将其保存在TotalPrice中?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-16 22:36:55

数据库设计中的一条规则是(通常):不要存储也可以很容易检索到的信息。

在您的示例中,我不会创建计算列,而是在检索期间执行乘法。通过直接选择price * quantity或通过创建包含此计算的视图。

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

票数 3
EN

Stack Overflow用户

发布于 2011-01-16 22:48:07

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

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

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

存储计算字段并不总是错误的,只需确保您了解其中的权衡。

编辑*编辑*另一个点。如果您计算的是Amount_Paid,当您更改计算公式时,客户实际支付的金额将会丢失。

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

票数 1
EN

Stack Overflow用户

发布于 2011-01-16 22:36:05

既然可以在查询中进行计算,为什么还要存储计算列呢?

代码语言:javascript
运行
AI代码解释
复制
SELECT (Quantity * Price) as TotalPrice FROM my_table
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4708539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档