尽管 SQL 更多地与表类操作相关,而不是递归,但假设我们想要实现链接(或双链接)列表概念(就像我们在 C 中所做的那样)。
考虑到我们可以让项目从任何地方移动到链表上的任何地方,有什么方法可以有效地做到这一点?
一些使用 CLR 的解决方案?
或者它真的不应该被带到 SQL Server 中吗?
请注意,这个问题也演变成链表 VS 树的讨论
虽然我固定了 SQL Server,但这是一个学术问题,所以任何其他的解决方案也很好,即使我们只是得出结论,这是永远不应该被带到数据库的东西。
链表只是一个非常简单的有向无环图。没有任何理由说明这很困难,或者对于 sql server 应该避免。
想想看,树结构比链表更复杂。Internet 上将数据存储在关系数据库中的每个论坛的实现都实现了链表的基础知识。在这个页面上,答案形成了一个链接列表。可以添加和删除它们。他们可以移动位置(又名,按票数排名)。
要使用的特定表示仅取决于您希望在维护列表(插入、更新、删除)和检索之间做出的权衡。
更新:问题是关于 SQL Server 中的树与链表
SQL Server 具有HierarchyId 数据类型,旨在简化树状结构的实现和查询。