我应该同时存储生日和年龄吗?

时间:2018-08-18 08:37:37

标签: sql database

我正在制作一个同时使用生日和年龄进行推断的应用, 但是由于可以通过生日和当前日期获得年龄,因此我在问我是否应该同时存储它们和日期,所以我可以使用age属性简化某些查询而无需转换日期,那是什么呢?按照约定做正确的事?

4 个答案:

答案 0 :(得分:9)

基于数据的计算应始终...计算,而不是存储。好吧,并非总是如此,但是 这取决于情况。以下是一些优点和缺点:

缺点:计算逻辑可能会改变,因此存储的值将不再有效。

缺点:或者可能输入了无效数据(查询时您将收到无效数据)。

缺点:或者结果会随着时间而变化,例如年龄。今天您有20年,但一年后将有21年。

专业人士:但是,正如@RonenAriely提到的那样,存储计算数据以提高性能是这种方法的优点之一。

因此,总而言之,您应该像name那样进行计算以得出年龄,因为结果随时间变化,并且函数对性能的影响不大。

答案 1 :(得分:2)

here所说

  

您必须确保得出的值不可能   变得无法检测到过时。

生日永远不会out-of-date,所以您会没事的!

答案 2 :(得分:2)

我会说只存储DOB并计算使用时的年龄。

我主要喜欢这种方法,因为年龄会不断变化,您必须确保根据测量的准确性来更新它。这将超出一次计算和多次使用的目的,因为您将需要多次重新计算。然后,由于它是多余的,它也将不必要地占用表中的空间。

希望有帮助

答案 3 :(得分:1)

通常只存储生日。 您可以创建一个通用的帮助方法来计算年龄。最好是静态的,以避免额外的内存消耗。

在数据库中保存年龄也没有意义,因为在这种情况下,您将需要每天运行cron来查看哪个用户的年龄在一天中增加了1,然后在数据库中进行更新。