到目前为止,我已经遇到过邻接表、嵌套集和嵌套间隔作为在数据库中存储树结构的模型。我对这些非常了解,并且已经将树木从一棵迁移到另一棵。
其他流行的型号是什么?他们的特点是什么?关于这个主题有哪些好的资源(书籍、网络等)?
我不仅在寻找数据库存储,而且想扩展我对树木的一般知识。例如,我知道嵌套集/间隔特别有利于关系数据库存储,并问自己,在其他情况下它们实际上是一个糟糕的选择吗?
到目前为止,我已经遇到过邻接表、嵌套集和嵌套间隔作为在数据库中存储树结构的模型。我对这些非常了解,并且已经将树木从一棵迁移到另一棵。
其他流行的型号是什么?他们的特点是什么?关于这个主题有哪些好的资源(书籍、网络等)?
我不仅在寻找数据库存储,而且想扩展我对树木的一般知识。例如,我知道嵌套集/间隔特别有利于关系数据库存储,并问自己,在其他情况下它们实际上是一个糟糕的选择吗?
一个变体是您使用直接分层表示(即节点中的父链接),但也存储路径值。
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 现在欠我版税!)