5

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

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

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

4

2 回答 2

2

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

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 的地方。

于 2008-08-26T12:18:55.787 回答
1

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

(我非常推荐这本书,我认为 Celko 现在欠我版税!)

于 2008-08-26T14:35:13.760 回答