到目前为止,我遇到了邻接列表,嵌套集和嵌套间隔,作为在数据库中存储树结构的模型。我非常了解这些,并将树木从一个迁移到另一个。
还有哪些其他流行款?它们的特点是什么?关于这个主题有哪些好的资源(书籍,网络等)?
我不只是在寻找数据库存储,而是希望扩展我对树木的了解。例如,我理解嵌套集/间隔对于关系数据库存储特别有利,并且问自己,在其他情况下它们实际上是坏选择吗?
答案 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更详细地讨论了您的方法,并提供了代码段。
希望这有帮助。