我正在构建一个数据库,但我不确定应该建立多深的层次结构。
看起来节省空间的最佳情况是三层。 组->子组->项目
在平均情况下,子组有 300 个项目,组有 100 个子组。目前商品已接近 100 万件,并且增长速度正在加快。
我坚持区分 GROUP 和 ITEM,因为它反射(reflect)了现实世界,但 SUB_GROUP 之所以存在,是因为 ITEM 通常在几百行中是相同的。需要明确的是,我可以获取子组的一个实例中的数据并将其附加到项目的每个实例。
在每个查询中至少进行 3 次连接是否会提高性能?或者我是否最好使用更多重复数据制作更少的表格?
最佳答案
这与其说是一个 MySQL 问题,不如说是一个一般的 SQL RDBMS 问题。
您拥有一个标准化的数据库,可以消除重复并最大限度地减少存储。
如果出现以下情况,您可能可以正确地标准化并将子组信息与该项目一起放置:
- 子组数据较小。
- 您经常同时查询子组和项目信息,但仅查看是不够的。
- 您实际上遇到了需要进行更改的性能问题 - 不要过早优化。
可能还有其他考虑因素,但这应该可以帮助您开始。
这里没有绝对的。
关于MySQL:何时分解/分割表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23258759/