【问题标题】:What are models for storing tree structures and what are their characteristics?存储树结构的模型有哪些,它们的特点是什么?
【发布时间】:2010-09-06 20:54:03
【问题描述】:

到目前为止,我已经遇到过邻接表、嵌套集和嵌套区间作为在数据库中存储树结构的模型。我对这些非常了解,并且已经将树木从一棵迁移到另一棵。

还有哪些其他流行的型号?他们的特点是什么?关于这个主题有哪些好的资源(书籍、网络等)?

我不仅在寻找数据库存储,而且还想扩展我对树木的一般知识。例如,我知道嵌套集/间隔特别有利于关系数据库存储,并问自己,在其他情况下,它们实际上是一个糟糕的选择吗?

【问题讨论】:

    标签: data-structures modeling


    【解决方案1】:

    一种变体是您使用直接分层表示(即节点中的父链接),但也存储路径值。

    即。对于包含以下内容的目录树:

    C:\
       Temp
       Windows
           System32
    

    您将拥有以下节点

    Key     Name     Parent     Path
    1       C:                  *1*
    2       Temp       1        *1*2*
    3       Windows    1        *1*3*
    4       System32   3        *1*3*4*
    

    路径已编入索引,可让您快速执行查询以获取节点及其所有子节点,而无需操作范围。

    即。查找 C:\Temp 及其所有子项:

    WHERE Path LIKE '*1*2*%'
    

    这种表示是我能想到的唯一可以将 id's 存储在这样的字符串中的地方。

    【讨论】:

    • 那将是邻接列表和物化路径的混合体,对吧?那会用在什么场景呢?在我看来,使用嵌套集/间隔更好地为所有孩子提供一个查询会更好,我看不出您还想存储邻接列表什么?
    【解决方案2】:

    这方面的重要资源是SQL for Smarties 的第 28-30 章。

    (我已经非常推荐这本书了,以至于现在 Celko 欠我版税!)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-08
      • 1970-01-01
      • 2010-12-03
      相关资源
      最近更新 更多