Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql设计:多列还是多行,哪个更好?_Mysql - Fatal编程技术网

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

mysql设计:多列还是多行,哪个更好?,mysql,Mysql,我需要为我的项目设计一个新表,它基本上包含每个键41个数字的列表。列表中的第一个数字是一些距离测量, 其余数字表示加权的百分比箱,如下所示: 前10个百分位数各为1% 接下来的10个是每个2%的价格 接下来的十个分别是3% 接下来的10个是4% 其总和为1*10+2*10+3*10+4*10=100% 该数据的正常用途是垂直求和箱子。 (即键1-bin1+键2-bin1+…;键1-bin2+键2-bin2+…;等) 现在,假设这永远不会改变,并且始终有40个箱子具有相同的箱子分散度,哪一个更

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

  • 前10个百分位数各为1%
  • 接下来的10个是每个2%的价格
  • 接下来的十个分别是3%
  • 接下来的10个是4%
其总和为1*10+2*10+3*10+4*10=100%

该数据的正常用途是垂直求和箱子。 (即键1-bin1+键2-bin1+…;键1-bin2+键2-bin2+…;等)

现在,假设这永远不会改变,并且始终有40个箱子具有相同的箱子分散度,哪一个更好

  • 表单的每个键一行-键、距离、bin1、bin2。。。宾40

  • 格式-key,bin_number,value的每个键41行,其中bin_number-1表示距离
第一个选项的明显优点是减少了数据重复,而且我真的不喜欢我的“-1”解决方案

但这感觉真的很脏,而且非常“硬编码”,我记得有人告诉我,数据库在某种程度上“更喜欢”第二个选项,并且在压缩、索引等方面比第一个选项处理得更好(另外,第二个选项中的查询可能看起来更好,但我可以接受代码中丑陋的查询)


谢谢

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

MySQL或其他DBMS中没有魔力。他们只是研磨数据。当然,他们做得很有效率。但行数是观测值的41倍是很多


如果每次观测有时有一个、有时有三个、有时有十个数据点,则应选择标准化的短行选项

是的,这是一个强有力的假设,我现在正在努力证明/反驳它,但如果它是真的,我想我会接受你的建议。。谢谢