2010-02-12 81 views
1

我面临的一个常见问题是导出的信息必须显示在详细信息页面和概览表格中。显示/更新派生信息的最佳方式?

例如,根据多个子项目状态值的状态,可能有1个项目的状态。似乎存储主要项目的派生状态将是错误的,但对此信息进行排序和过滤也可能很麻烦。

处理这种情况的最佳方法是什么?

回答

1

我不确定,我正确地得到了您的问题。为了解释我如何理解你的问题,我将使用示例。

例子:我们有车(项目)及其配件:车轮,发动机,车门等(分项)。汽车的状态来源于其零件的状态。例如:如果发动机的状态是“损坏的”,那么汽车的状态是“损坏的”,或者如果车门的状态是“缺失”并且发动机是“好的”,那么汽车的状态是“可用的”。

如果这个例子相当于你的意思,那么你有以下选择:

  1. 每次展示汽车的状态时间计算得出的值,生成报告等优点:模型总是是一致的。 缺点:计算可能需要太多时间和资源。
  2. 首次计算派生值并将其存储在数据库中。每次更改子项目的状态(触发器,存储过程,业务逻辑)时都要更改它。 优势缺点是相同的,如1,但是如果1和2之间选择,你必须考虑什么更经常发生的情况:分项的变化状况,或者关于该项目的信息被请求。
  3. 如果数据库是高负载和有关项目的信息是不是时间关键的,那么你可以重新计算通宵项目的状态时,你的数据库的负载是最小的,并将它们存储在项目现场。 优点:最大限度地减少负载。 缺点:派生字段的返回值可能不正确。
  4. 保存上次计算派生状态时子项的状态。然后比较当前状态(何时请求物品的状态)和保存的状态。如果改变,则重新计算,否则返回存储值。 优点:降低负载。 缺点:需要额外的字段为状态的最后值。

这些是选项,但只有您知道特定信息(数据库负载,派生值计算算法的复杂性,更常见的子项状态更改或项目状态读取等)。所以只有你可以决定什么适合你的情况。

+0

正是我在说什么,谢谢。 – Greg 2010-02-15 17:12:40

相关问题