gpt4 book ai didi

sql - 树数据结构的数据库结构

转载 作者:行者123 更新时间:2023-12-03 04:22:49 25 4
gpt4 key购买 nike

在数据库中实现可定制的树形数据结构(即具有未知级别数的树形结构)的最佳方法是什么?

在使用带有外键的表之前,我已经这样做过一次。

您还可以看到哪些其他实现,这个实现是否有意义?

最佳答案

您提到了最常用的实现,即邻接列表: https://blogs.msdn.microsoft.com/mvpawardprogram/2012/06/25/hierarchies-convert-adjacency-list-to-nested-sets

还有其他模型,包括物化路径和嵌套集: http://communities.bmc.com/communities/docs/DOC-9902

Joe Celko 写了一本关于这个主题的书,从一般 SQL 角度来看,这是一本很好的引用书(在上面的嵌套集文章链接中提到过)。

此外,Itzik Ben-Gann 在他的《Inside Microsoft SQL Server 2005:T-SQL 查询》一书中对最常见的选项进行了很好的概述。

选择模型时要考虑的主要事项是:

1) 结构变化的频率——树的实际结构变化的频率。一些模型提供更好的结构更新特性。然而,将结构更改与其他数据更改分开非常重要。例如,您可能想要对公司的组织结构图进行建模。有些人会将其建模为邻接列表,使用员工 ID 将员工与其主管链接起来。这通常是次优方法。通常效果更好的一种方法是对与员工本身分开的组织结构进行建模,并将员工作为该结构的一个属性进行维护。这样,当员工离开公司时,组织结构本身不需要改变,只需改变与离开员工的关联即可。

2)树是重写入还是重读 - 某些结构在读取结构时工作得很好,但在写入结构时会产生额外的开销。

3) 您需要从结构中获取哪些类型的信息 - 某些结构擅长提供有关该结构的某些类型的信息。示例包括查找一个节点及其所有子节点、查找一个节点及其所有父节点、查找满足特定条件的子节点的数量等。您需要知道需要从结构中获取哪些信息来确定最适合的结构您的需求。

关于sql - 树数据结构的数据库结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/935098/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com