存储树结构的模型是什么?它们的特征是什么?
时间:2020-03-05 18:43:15 来源:igfitidea点击:
到目前为止,我已经遇到了邻接表,嵌套集和嵌套间隔作为在数据库中存储树结构的模型。我对这些知识已经足够了解,并且已经将树木从一棵移植到另一棵。
还有哪些受欢迎的型号?它们有什么特点?关于此主题有哪些好的资源(书籍,网络等)?
我不仅在寻找数据库存储,而且还希望扩展我对树的一般知识。例如,我了解嵌套集/间隔特别适合关系数据库的存储,并问自己,在其他情况下,它们实际上是一个不好的选择吗?
解决方案
回答
变体是在其中使用直接层次结构表示形式(即节点中的父链接),但也存储路径值。
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欠了我版税!)
回答
@lassevk:本文更详细地讨论了方法,并提供了代码片段。
希望这可以帮助。