首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在[mysql] DBMS中存储基于树的分层数据?

如何在[mysql] DBMS中存储基于树的分层数据?
EN

Stack Overflow用户
提问于 2019-06-28 13:47:33
回答 1查看 54关注 0票数 1

用户组:

用户1创建用户2,3,4。

用户2创建用户5、6、7。

用户6创建用户8、9、10、...etc

最后,用户1可以管理所有用户。6人能管理8,9,10人。

我打算这样储存,

代码语言:javascript
复制
user - created_by

2   -        1

3    -      1

4    -      1

5    -      2   

这是在MySQL数据库中存储数据的正确方式吗?任何人都可以帮助我改进这个数据库结构。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-28 14:50:26

这可能不是最好的解决方案,但是您可以创建一个属性hierarchy,它表示父树。

例如,用户1创建user2,user2创建user3,user3的属性值为:"1,2“

这张桌子看起来是这样的:

代码语言:javascript
复制
| id | hierarchy |
|----|-----------|
| 1  |  NULL     |
| 2  | "1"       |
| 3  | "1,2"     |
| 4  | "1,2"     |

如果我们想检索所有由user1管理的用户:

代码语言:javascript
复制
SELECT * FROM users WHERE FIND_IN_SET("1",hierarchy) > 0

如果我们想检索所有管理user3的用户:

代码语言:javascript
复制
SELECT * FROM users WHERE FIND_IN_SET (id, SELECT hierarchy FROM users WHERE id = 3) > 0

当然,解决方案是有限的,特别是如果您想要执行复杂的查询,我建议您选择一种XML方法。当你的数据看起来像一棵树时会更好

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56808156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档