是否可以在关系数据库中添加表年份?



我如何向我的同事解释这是不必要的复杂性和冗余数据?

数据库图图片

他想要一个年份表,因为许多表都有年份值,他还想有一个带有名称和年份的关系表,我只是想确保即使 2NF 这么说,这不是一个好的做法......

这取决于。每年是否需要在应用程序中管理"实体"?

回答以下问题:

  • 年份有属性吗?
  • 它需要关闭吗?(它会改变状态吗?
  • 您是否需要记录谁在何时关闭它,出于什么原因关闭了它?
  • 可以重新打开什么的吗?(是否有相关的工作流程?

如果你对这些问题(和其他问题(回答"否",那么它就不是一个实体。

如果你回答"是",那么它就是。如果是,那么您可能需要一个包含属性和主键的额外表;其他表将具有它的外键。

但最终的答案是...这取决于商业模式。

你会做一个整数表吗? 我认为不是。

你会为日期做一个表格吗? 嗯,这是有道理的。 假设您要列出一个月中的所有日期,甚至是没有数据的日期。在这种情况下,带有日期表的LEFT JOIN提供了一种创建带有零的"报告"的方法,用于丢失数据。

有一种名为YEAR的数据类型运行良好。 你可能没有任何缺失的岁月?

(口头禅:正常化,但不要过度规范化。

最新更新