用户组:
用户1创建用户2,3,4。
用户2创建用户5、6、7。
用户6创建用户8、9、10、...etc
最后,用户1可以管理所有用户。6人能管理8,9,10人。
我打算这样储存,
user - created_by
2 - 1
3 - 1
4 - 1
5 - 2 这是在MySQL数据库中存储数据的正确方式吗?任何人都可以帮助我改进这个数据库结构。谢谢。
发布于 2019-06-28 14:50:26
这可能不是最好的解决方案,但是您可以创建一个属性hierarchy,它表示父树。
例如,用户1创建user2,user2创建user3,user3的属性值为:"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方法。当你的数据看起来像一棵树时会更好
https://stackoverflow.com/questions/56808156
复制相似问题