相同的数据,两种不同的存储方式

Tab*_*edo 2 mysql sql database-design

下面的两个表都可以保存相同的数据 - 一整年,包括每个月的一些任意信息

table1 (one row = one month)
------
id
month
year
info
Run Code Online (Sandbox Code Playgroud)


table2 (one row = one year)
------
id
year
jan_info
feb_info
mar_info
apr_info
may_info
jun_info
jul_info
aug_info
sep_info
oct_info
nov_info
dec_info
Run Code Online (Sandbox Code Playgroud)

表A.

  • 看起来更直观,因为月份是数字,但它是
  • 全年数据的行数增加10倍.还有
  • 行更小(列更少)

表B.

  • 全年数据减少10倍,但是
  • 单行要大得多
  • 可能更难以在一个月内添加更多任意信息

在我设置的真实世界测试场景中,table1中有12,000行用于10年的数据,其中table2有150个.我意识到越少越好,一般而言,但总是如此?如果我采取一种方式,我担心我会忽略一些后来发现的警告.我甚至没有考虑过磁盘使用情况或查询可能更快.MySQL更喜欢什么?有"正确"的方式吗?或者,还有更好的方法?

感谢您的输入!

Wel*_*bog 6

不要考虑如何存储它,考虑如何使用它.并考虑将来如何改变.存储结构应反映使用情况.

第一个选项在第二个选项中更加标准化,所以我倾向于选择它.它具有易于更改的优点,例如,如果每个月突然需要存储关于它的第二条信息.通常这种结构更容易填充,但并非总是如此.想想数据的来源.

如果您仅将此数据用于报表,并且不需要跨月汇总数据,请使用第二个选项.

这实际上取决于数据的来源和来源.但一般来说,第一种选择更好.