存储树形结构的模型有哪些,它们的特点是什么?

5

到目前为止,我已经遇到了邻接列表、嵌套集和嵌套区间作为在数据库中存储树结构的模型。我对这些很熟悉,并且已经从一种模型迁移到另一种模型。

还有哪些流行的模型?它们的特点是什么?有哪些好的资源(书籍、网站等)可以了解这个话题?

我不仅想了解数据库存储,也想扩展我的树知识。例如,我了解到嵌套集/区间在关系数据库存储中特别有利,并且问自己,在其他情况下它们是否实际上是一个不好的选择?

2个回答

2

一种变化是使用直接的层次结构表示(即节点中的父链接),同时还存储路径值。

例如,对于以下目录树:

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存储在字符串中的地方,与此相关的是it技术。请注意保留HTML标签。

那将是邻接表和材料化路径的混合,对吗?在什么情况下会使用它?在我看来,使用嵌套集/区间可以更好地通过一个查询获取所有子项,而且我也不明白您为什么还想存储邻接表呢? - Hanno Fietz

1

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

(我已经推荐了这本书很多次,我想Celko现在欠我版税!)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接