2010-02-09 2 views
0

시나리오에 대한 세부 정보 : 1. 테이블에 '리소스'레코드를 저장하는 MS SQL Server 2008 데이터베이스가 있습니다. 2. 리소스에 여러 자식 리소스가있을 수 있습니다. 3. 하위 리소스는 여러 상위 리소스에 속할 수 있습니다. 4. 리소스는 중간 테이블, 즉 리소스 -> 링크 -> 리소스를 통해 서로 연결됩니다. 5. 'n'수준의 상위/하위 관계가있을 수 있지만 현실적으로는 단지 3 ~ 4 개의 깊이가 될 가능성이 큽니다. 6. 응용 프로그램은 주어진 부모와 모든 자식에 대한 전체 트리를 표시하는 데이터 뷰를 제공해야합니다. 여기에서 자식은 부모로부터 멀리 떨어진 하위 노드 즉, 리소스 (부모) -> 링크 -> 리소스 -> Link -> Resource (Child) 7. 최종 사용자는 리소스 관계에서 수행하는 작업에 따라 트리에서 실시간 변경 사항을 확인하는 것이 이상적입니다. 실시간으로 변경 사항을 UI에 반영해야하므로 몇 초 정도의 순서로 진행됩니다.RDMBS : 데이터베이스에 저장된 트리 구조 데이터에 효율적으로 액세스하기위한 접근 방법

일련의 뷰를 사용하여 일부 탐색 작업을 수행했지만 외부 조인을 사용하면 뷰를 인덱싱 할 수 없으므로 확장이 잘되지 않을 수 있습니다.

내가보고있는 다음 해결책은 리소스 트리의 병합 된보기가 포함 된 하나 이상의 특수 테이블을 만드는 것입니다. 그러나 이것이 우리가 필요로하는 종류의 실시간 업데이트를 지원하지는 않습니다.

누구나 비슷한 시나리오를 다루었습니까?

답변

1

나무에 액세스하는 방법에 따라 다릅니다. 예를 들어, ID를 전달하고 해당 자원과 그 중첩 된 모든 자식을 가져 오는 것이 필요하면 재귀 공통 테이블 표현식을 사용하여 테이블 반환 함수를 고려할 수 있습니다.

Recusive CTE example

관련 문제