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

时间:2008-08-26 12:11:05

标签: data-structures modeling

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

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

我不只是在寻找数据库存储,而是希望扩展我对树木的了解。例如,我理解嵌套集/间隔对于关系数据库存储特别有利,并且问自己,在其他情况下它们实际上是选择吗?

3 个答案:

答案 0 :(得分: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's 存储在这样的字符串中的地方。

答案 1 :(得分:1)

这方面的开创性资源是SQL for Smarties的第28-30章。

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

答案 2 :(得分:0)

@lassevk:This article更详细地讨论了您的方法,并提供了代码段。

希望这有帮助。