我有一些我正在尝试存储的死亡数据,并且我正在尝试提出一个合理的方案来存储该人死亡时的年龄。
我没有他们中的任何一个的 DoB 数据,但我确实有一般的死亡日期(尽管并不总是非常精确),并且我有关于他们死亡年龄的不同准确性的数据。
一些典型的源数据可能是:
20 至 29 岁(或“20 多岁”)
5 岁
2 个月大
40 天大
成人
儿童
老人
我通常将其存储在三个字段中...
age_min(整数年)
age_max(整数年)
age_category(枚举 - 婴儿、儿童、成人、老人)
...但显然这并不能很好地捕捉到 2 个月大或 40 天大的数据,在我当前的模式中,这两者都会简单地以 0 年结束,这会不必要地丢弃信息。
数据库对于已知信息的精确度是诚实的,这一点非常重要。因此,例如,将 2 个月转换为 60 天将是一件坏事,因为它暗示了源数据未提供的精度水平 - 将其转换为 60-90 天可能没问题。
我还考虑添加一个单位字段,所以我有......
age_min (integer)
age_min_unit (enum - 天、月、年)
但这样做的问题是它使比较烦人。24 个月 == 2 年,但处理这个问题只会使很多代码比我怀疑的要复杂得多。
我可以以天为单位存储所有年龄,有最小值和最大值,但随后复杂性变成了将其转换回人类可读的东西,这种东西并不笨重,也没有比我实际拥有的精度更高。
因此,例如,40 天可能最终会在 1 个月、10 天时呈现,这实际上比 40 天的精确度要低一些。