【发布时间】:2011-10-15 02:56:49
【问题描述】:
我想在 mysql 表中对如下所示的层次结构/目录进行建模。你可以在下面看到我在想的表模式。 但是,我所说的目录将由 100.000 个元素组成,深度约为 5-10 级。此外,我们将有一个标签池,目录的每个元素都可以链接到一个或多个标签。所以我想知道是否有更好的方法。我读到有些人决定设计不规范的表来影响高性能,我也在评估这个案例。
ps:有些人使用多向树在编程语言级别对此进行建模,因此问题是如何在数据库中结束的。
hierarchy:
A
| -> 1
|->1
|->2
| -> 2
| -> 3
B
| -> 1
| -> 2
table:
___________________________
| id |element | father |
|---------------------------|
| 000 | A | null |
| 001 | 1 | 000 |
| 002 | 1 | 001 |
| 003 | 2 | 001 |
| 004 | 2 | 000 |
| 005 | 3 | 000 |
| 006 | B | null |
| 001 | 1 | 006 |
| 002 | 2 | 006 |
-----------------------------
【问题讨论】:
-
有什么问题?你为你的问题定义了一个合理的模式。您需要限制方面的帮助吗?存储属性/标签?
-
我的问题是是否有比我提出的方法更好的方法。我担心每个元素与大量标签的链接。加入费用。
-
最好的解决方案是满足您的要求(包括性能要求)的解决方案;你试过你在这里设计的东西吗?哪里失败了?
-
我已经尝试过了,但我不太可能模拟 prod 环境。状况。我只能在我的本地电脑上测试,速度很快。由于层次结构的建模看起来不错,我相信当我将此表与标签表连接时会遇到性能问题。我正在寻找一种非规范方法作为替代方案。
-
好吧,如果您不能模拟类似生产的环境,那么您将在黑暗中拍摄实际设计的结果。你只会在这里得到通用的最佳实践的东西。它纯粹是一个 YMMV 帮助系统......总是留给帮助者来接受建议并用实际数据进行测试。
标签: mysql data-structures tree data-modeling hierarchical