RDBMS:有效访问数据库中保存的树结构数据的方法

时间:2010-02-09 12:38:51

标签: sql-server tree

有关该方案的一些细节:  1.我们有一个MS SQL Server 2008数据库,它将“资源”记录存储在一个表中。  2.资源可以有多个子资源。  3.子资源可以属于多个父资源。  资源通过中间表彼此链接,即资源 - >链接 - >资源。  5.父母\子关系可以有'n'级,但实际上这可能只有3或4个深度。  6.应用程序需要呈现数据视图,该数据显示给定父级及其所有子级的整个树,其中子级可能更远离父级的1个后代,即资源(父级) - >链接 - >资源 - >链接 - >资源(儿童)  7.最终用户理想地需要根据他们对资源关系执行的操作来查看树中的实时更改。实时我的意思是在几秒钟的时间内,因为变化需要在UI中反映出来。

我使用一系列视图完成了一些探索性工作,但必须使用外连接意味着它们的视图无法编入索引,因此可能无法很好地扩展。

我正在研究的下一个解决方案是创建一个或多个包含资源树平面视图的特殊表。但是,这不太可能支持我们需要的那种实时更新。

有没有人处理类似的情况?

1 个答案:

答案 0 :(得分:1)

这取决于您如何访问树木。例如,如果您需要传入一个ID并获取该资源及其所有嵌套子级,您可能需要使用递归公用表表达式来考虑表值函数。

Recusive CTE example