0

我遇到了一个小难题,我希望 SO 社区可以帮助我解决这个问题。

我目前处于一种情况,我们正在为订单折扣编写自定义逻辑,这些逻辑基于可配置的规则。以下是最简单的表格:

命令

OrderID int

订单折扣

OrderID int
DiscountID int

折扣

DiscountID int

我们正在使用实体框架(但这个问题可能适用于任何数据模型)。我觉得我的选择很简单,但都有各自的缺点:

  1. 在我的 SQL订单中添加一列“折扣”表中缺点:每次更新订单时,我们都需要记住重新计算折扣并更新此列。这可能会导致数据不一致,但性能会更好。还将允许覆盖折扣金额。
  2. 将“折扣”属性添加到我的订单数据模型代码中。缺点:任何时候访问此属性都需要计算,但总是准确的。

我应该走哪条路线,为什么?

4

2 回答 2

1

您忽略了两个关键的会计要求

  1. 每个订单的折扣以及如何计算每个折扣的详细信息必须存储在每个相应的订单中;因为一旦订单过帐到 GL,就不得更改。已发布的订单可以取消或撤销,但不能更改。
  2. 然而,虽然订单正在构建,但尚未发布到 GL,但规则不同 - 必须实时重新计算折扣,通过不将其存储在记录中最容易执行。
于 2013-03-17T16:00:14.167 回答
0

通常,数据库中的故事计算字段不被认为是最佳实践,除非计算所消耗的时间很长,我选择在构造函数中实现计算,而不是在每次更改折扣值时存储一个新值。查看此链接以获取有关该主题的扩展视图。 这里

于 2013-03-17T15:40:06.333 回答