是否应该保留派生值?

时间:2017-04-13 12:44:04

标签: java

如果我们在DB中存储派生值,我有点困惑吗?例如: - 如果想对员工薪水进行一些计算并在UI上显示。

有两种方法: -

方法1: - 每次我们需要在UI上显示时,我都会计算派生值。

方法2: - 在持久化工资本身时,将派生值保留在单独的列中。

方法2从性能的观点来看是好的但是从可维护性的观点来看是坏的。它的可维护性很差,因为我必须保持额外的列。 类似地,方法1从可维护性的角度来看是好的,但从性能的角度来看是不好的,并且每次我需要得出值时都需要额外的工作。

哪种方法更好?根据我的理解,如果计算复杂并且在多个地方使用,我们应该接近2,否则1.是的吗?

1 个答案:

答案 0 :(得分:2)

您通常不应存储派生值,除非:

  1. 计算复杂/昂贵(例如需要许多其他记录中的值)

  2. 您需要快速查找值的索引。

  3. 存储派生数据称为非正规化。如需进一步研究,您应阅读有关In terms of databases, is “Normalize for correctness, denormalize for performance” a right mantra?数据原因的文章。

    另请参阅此问题:{{3}}

相关问题