mysql设计:哪个更好,很多列还是很多行?

时间:2012-07-24 11:33:51

标签: mysql

我需要为我的项目设计一个新表,它基本上包含每个键41个数字的列表。列表中的第一个数字是一些距离测量, 而其余的数字代表加权百分比的百分比:

  • 前十个百分位数各为1%
  • 接下来的十个是每个2%
  • 接下来的十个是每个3%
  • ,接下来的十个是每个4%

总计1 * 10 + 2 * 10 + 3 * 10 + 4 * 10 = 100%

这些数据的正常用法是将箱子垂直相加。 (即key1-bin1 + key2-bin1 + ..; key1-bin2 + key2-bin2 + ..等等)

现在,假设这种情况永远不会改变,并且总会有40个箱子具有相同的箱子分散,这更好吗?:

  • 表单的每个键一行 - 键,距离,bin1,bin2 ... bin40

  • 表单的每个键41行 - key,bin_number,bin_number -1保存距离的值

第一个选项的明显优势是减少了数据重复,而且我真的不喜欢我的“-1”解决方法。

但是这感觉非常脏并且极其“硬编码”,我记得被教导数据库以某种方式“偏好”第二种选择并且设计为在压缩,索引等方面比第一种更好地处理数据库。查询可能在第二个选项中看起来更好,但我可以在我的代码中使用丑陋的查询)

谢谢!

1 个答案:

答案 0 :(得分:2)

您选择答案的关键是“假设这永远不会改变”。如果这是真的,那么你应该使用多列表。你是对的,MySQL和其他dbms系统很好地处理规范化数据(你的第一个选项)。但是,如果我正确理解您的问题,您将始终为每个观察点设置41个数据点。这意味着你的第一个选项总是每次观察有41行。

MySQL或其他DBMS没有任何魔力。他们只是研究数据。当然,他们非常有效地做到了。但是观察的行数是其中的四十一倍。

如果有时每次观察有一个,有时三个,有时十个数据点,你可以选择标准化的短行选项。