2010-02-09 70 views
0

有关该场景的一些详细信息: 1.我们有一个MS SQL Server 2008数据库,它在表中存储“资源”记录。 2.资源可以有多个子资源。 3.子资源可以属于多个父资源。 4.资源通过中间表(即资源 - >链接 - >资源)相互关联。 5.可以有'n'级别的父母/子女关系,但实际上这可能最多只有3或4个深度。 6.应用程序需要呈现一个数据视图,该数据显示给定父项及其所有子项的整个树的数据,其中子项可能更多地是远离父项的一个后代,即资源(父项) - >链接 - >资源 - >链接 - >资源(子) 7.最终用户理想情况下需要根据他们在资源关系上执行的操作在树中看到实时更改。实时我的意思是几秒钟的变化需要反映在用户界面中。RDMBS:有效访问数据库中保存的树结构数据的方法

我已经做了一些使用一系列视图的探索性工作,但不得不使用外部联接意味着它们的视图无法被索引,因此可能无法很好地扩展。

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

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

回答

1

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

Recusive CTE example