规范化问题:日期的附加准确性字段(MySQL数据库)

时间:2013-12-26 23:09:40

标签: mysql sql date normalization

我需要在MySQL数据库中存储具有不同精度的日期。

例如,书籍出版日期可能在特定日期(2007年5月14日),截至月份(2007年5月)或仅截至年份(2007年)之前已知。对于出生日期或作者的死亡日期也是如此。

解决方案#1:一个单独的日期表,其中包含日期字段和精度(日/月/年)字段。在上面的示例中,Book.PublicationDate和Author.BirthDate字段将引用Date表。

解决方案#2:不要添加单独的Date表,只需在有日期的地方添加日期精度字段(在示例中的Book和Author表中)

溶胶。 #1似乎有点尴尬,但提供了一个更规范化的数据库。 #2当然更简单,更自然。我有点被归化,所以我会投票给#1。你觉得怎么样?

谢谢!

2 个答案:

答案 0 :(得分:1)

不要为Dates添加另一个表格,这个表格过于正常化。 见http://joinfu.com/presentations/dqm/legend_drunken_query_master.pdf第16页

答案 1 :(得分:0)

简化回答:我实际上不需要存储比一年更准确的数据,所以这就是我要做的。

更复杂的答案:如果需要更准确的数据,解决方案#2确实过度规范化。但是,如果我们想让许多不同实体使用的日期和/或实体实例在数据库中只出现一次,那就有意义了。