存储树结构的模型是什么?它们的特征是什么?

时间:2020-03-05 18:43:15  来源:igfitidea点击:

到目前为止,我已经遇到了邻接表,嵌套集和嵌套间隔作为在数据库中存储树结构的模型。我对这些知识已经足够了解,并且已经将树木从一棵移植到另一棵。

还有哪些受欢迎的型号?它们有什么特点?关于此主题有哪些好的资源(书籍,网络等)?

我不仅在寻找数据库存储,而且还希望扩展我对树的一般知识。例如,我了解嵌套集/间隔特别适合关系数据库的存储,并问自己,在其他情况下,它们实际上是一个不好的选择吗?

解决方案

回答

变体是在其中使用直接层次结构表示形式(即节点中的父链接),但也存储路径值。

IE。用于包含以下内容的目录树:

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*

路径已建立索引,可让我们快速进行查询,以拾取节点及其所有子节点,而无需操纵范围。

IE。查找C:\ Temp及其所有子代:

WHERE Path LIKE '*1*2*%'

这种表示法是我唯一能想到的将id存储在这样的字符串中的位置。

回答

精髓的资源是SQL for Smarties的第28-30章。

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

回答

@lassevk:本文更详细地讨论了方法,并提供了代码片段。

希望这可以帮助。