如何在 [mysql] DBMS 中存储基于树的分层数据? [复制]
Posted
技术标签:
【中文标题】如何在 [mysql] DBMS 中存储基于树的分层数据? [复制]【英文标题】:How to store the tree based hierarchical data in [mysql] DBMS? [duplicate] 【发布时间】:2019-06-28 13:47:33 【问题描述】:用户组:
用户 1 创建用户 2、3、4。
用户 2 创建用户 5、6、7。
用户 6 创建用户 8,9,10,...等
最后,用户 1 可以管理所有用户。 6 可以管理 8,9,10。
我打算这样存放,
user - created_by
2 - 1
3 - 1
4 - 1
5 - 2
这是在 mysql 数据库中存储数据的正确方法吗? 任何人都可以帮助我改进这个数据库结构。谢谢。
【问题讨论】:
【参考方案1】:这可能不是最好的解决方案,但您可以创建一个属性 hierarchy
来表示父树。
例如,用户 1 创建用户 2,用户 2 创建用户 3,则用户 3 的该属性值为:“1,2”
所以表格将如下所示:
| id | hierarchy |
|----|-----------|
| 1 | NULL |
| 2 | "1" |
| 3 | "1,2" |
| 4 | "1,2" |
如果我们要检索由 user1 管理的所有用户:
SELECT * FROM users WHERE FIND_IN_SET("1",hierarchy) > 0
如果我们要检索管理 user3 的所有用户:
SELECT * FROM users WHERE FIND_IN_SET (id, SELECT hierarchy FROM users WHERE id = 3) > 0
当然,解决方案是有限的,特别是如果您想做复杂的查询,我建议您选择 XML 方法。当您的数据看起来像一棵树时会更好
【讨论】:
以上是关于如何在 [mysql] DBMS 中存储基于树的分层数据? [复制]的主要内容,如果未能解决你的问题,请参考以下文章