【问题标题】:Is it ok to add a table years in a Relational DataBase?可以在关系数据库中添加表年份吗?
【发布时间】:2020-05-22 17:52:05
【问题描述】:

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

Database diagram picture

他想要一张年份表,因为很多表都有年份值,而且他还想要有名称和年份的关系表,我只是想确保这不是一个好习惯,即使 2NF 这么说。 ..

【问题讨论】:

  • 这可能是dba site of the network的问题
  • 推荐他将idYear值设置为等于year值。让他觉得自己像个傻瓜。
  • use text, not images/links, for text--including tables & ERDs。转述或引用其他文本。只提供您需要的东西并将其与您的问题联系起来。仅将图像用于无法表达为文本或增强文本的内容。无法搜索或剪切和粘贴图像。在图片中包含图例/键和说明。

标签: mysql sql database database-design


【解决方案1】:

这取决于。每年都是您需要在应用程序中管理的“实体”吗?

回答这些问题:

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

如果您对这些问题(以及其他问题)回答“否”,那么它就不是实体。

如果你回答“是”,那就是。如果是,那么您可能需要一个带有属性和主键的额外表;其他表会有外键。

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

【讨论】:

    【解决方案2】:

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

    你会为日期制作一张表格吗?嗯,有一个论点。假设您想列出一个月中的所有日子,甚至是没有数据的日子。在这种情况下,带有日期表的LEFT JOIN 提供了一种创建“报告”的方法,其中缺失数据为零。

    有一个名为YEAR 的数据类型运行良好。您可能没有任何缺失的年份?

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-05
      • 2015-01-25
      • 2012-11-26
      • 1970-01-01
      相关资源
      最近更新 更多