将计算出的数据存储在每一行中是不好的做法,还是每次从数据库读取时在应用程序层进行计算更好。
存储在数据库中避免了多次计算的需要,但如果出现错误,则需要更新数据,而不仅仅是更改应用程序级别的计算。
我认为后者更好,但是有一般的经验法则吗?
例如,我需要计算食物的每日总营养摄入量。因此,各种portions的energy的foods。我可以portion根据相应计算能量food并将energy每个的能量存储portion在portions表中,或者我可以food每次从与相应的连接中计算。
您可以想象,如果您必须在很长一段时间内计算年平均值、月平均值、日平均值等,它可能会变得非常笨拙。
如果使用物化视图,每次旧数据(例如一周或更早)根据触发器或类似内容进行更新时都会重新计算,那又如何呢?
总的来说,我知道即使有加入成本,规范化通常也是有益的。然而,我最近想到了一个有趣的困境。
如果数据重复但不太可能改变怎么办。这是可能的,但我不会预料到。
我有一个nutrients表,一unit列和单位将g,kg,ug,等。
我看不到这些值每次都在变化。
我很想将它们作为表中的一列,而不是规范化并拥有一个units表并使用外键并且在从nutrients表中获取一行时必须加入。同时,我知道总的来说,即使有加入币,我们也应该正常化。
我应该怎么做(以及为什么)?