【问题标题】:How to store the tree based hierarchical data in [mysql] DBMS? [duplicate]如何在 [mysql] DBMS 中存储基于树的分层数据? [复制]
【发布时间】: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 数据库中存储数据的正确方法吗? 任何人都可以帮助我改进这个数据库结构。谢谢。

【问题讨论】:

    标签: mysql database hierarchical-data


    【解决方案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 方法。当您的数据看起来像一棵树时会更好

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-19
      • 2010-10-16
      • 2010-09-13
      相关资源
      最近更新 更多