我需要为我的项目设计一个新表,它基本上包含每个键41个数字的列表。列表中的第一个数字是一些距离测量, 而其余的数字代表加权百分比的百分比:
总计1 * 10 + 2 * 10 + 3 * 10 + 4 * 10 = 100%
这些数据的正常用法是将箱子垂直相加。 (即key1-bin1 + key2-bin1 + ..; key1-bin2 + key2-bin2 + ..等等)
现在,假设这种情况永远不会改变,并且总会有40个箱子具有相同的箱子分散,这更好吗?:
或
第一个选项的明显优势是减少了数据重复,而且我真的不喜欢我的“-1”解决方法。
但是这感觉非常脏并且极其“硬编码”,我记得被教导数据库以某种方式“偏好”第二种选择并且设计为在压缩,索引等方面比第一种更好地处理数据库。查询可能在第二个选项中看起来更好,但我可以在我的代码中使用丑陋的查询)
谢谢!
答案 0 :(得分:2)
您选择答案的关键是“假设这永远不会改变”。如果这是真的,那么你应该使用多列表。你是对的,MySQL和其他dbms系统很好地处理规范化数据(你的第一个选项)。但是,如果我正确理解您的问题,您将始终为每个观察点设置41个数据点。这意味着你的第一个选项总是每次观察有41行。
MySQL或其他DBMS没有任何魔力。他们只是研究数据。当然,他们非常有效地做到了。但是观察的行数是其中的四十一倍。
如果有时每次观察有一个,有时三个,有时十个数据点,你可以选择标准化的短行选项。