我正在制作一个同时使用生日和年龄进行扣除的应用程序,但由于年龄可以通过生日和当前日期获得,我质疑我是否应该存储它们而不仅仅是日期,我可以使用的一部分在不转换日期的情况下简化某些查询的age属性,遵循约定的正确做法是什么?
基于数据的计算应始终......计算,而不是存储.嗯,通常并非总是如此,但这取决于具体情况.以下是几个优点和缺点:
Con:计算逻辑可能会改变,因此存储的值将不会是孤立的.
Con:或者可以输入无效数据(查询时会收到无效数据).
Con:或者结果随着时间而变化,例如年龄.今天你有20年,但在一年内你将有21年.
Pro:但是,正如@RonenAriely所提到的,存储计算数据以获得性能是这种方法的优点之一.
所以,总而言之,你应该进行计算,比如DATEDIFF(NOW(), DateOfBirth)
得到一个年龄,因为结果会随着时间的推移而改变,而且功能不会对性能产生太大的影响.