我正在制作一个同时使用生日和年龄进行推断的应用, 但是由于可以通过生日和当前日期获得年龄,因此我在问我是否应该同时存储它们和日期,所以我可以使用age属性简化某些查询而无需转换日期,那是什么呢?按照约定做正确的事?
答案 0 :(得分:9)
基于数据的计算应始终...计算,而不是存储。好吧,并非总是如此,但是 这取决于情况。以下是一些优点和缺点:
缺点:计算逻辑可能会改变,因此存储的值将不再有效。
缺点:或者可能输入了无效数据(查询时您将收到无效数据)。
缺点:或者结果会随着时间而变化,例如年龄。今天您有20年,但一年后将有21年。
专业人士:但是,正如@RonenAriely提到的那样,存储计算数据以提高性能是这种方法的优点之一。
因此,总而言之,您应该像name
那样进行计算以得出年龄,因为结果随时间变化,并且函数对性能的影响不大。
答案 1 :(得分:2)
答案 2 :(得分:2)
我会说只存储DOB并计算使用时的年龄。
我主要喜欢这种方法,因为年龄会不断变化,您必须确保根据测量的准确性来更新它。这将超出一次计算和多次使用的目的,因为您将需要多次重新计算。然后,由于它是多余的,它也将不必要地占用表中的空间。
希望有帮助
答案 3 :(得分:1)
通常只存储生日。 您可以创建一个通用的帮助方法来计算年龄。最好是静态的,以避免额外的内存消耗。
在数据库中保存年龄也没有意义,因为在这种情况下,您将需要每天运行cron来查看哪个用户的年龄在一天中增加了1,然后在数据库中进行更新。