2009-12-22 3 views
0

효율적인 방식으로 부모 자식 관계를 구현할뿐만 :
ChildID 이름 ParentID
1 A1 널
2 A2 1
3 B1 널
4 A3 2
5 A4 1
나는 목적 C에 워킹 해요 난 방식으로 텍스트 파일 생성해야합니다
이름 = A1> 이름 = A2> 이름 = A3 /> 이름 = A2 />
이름 = A4 />
이름 = B1 /> 내가 먼저 내가 마지막 요소 (ID = 5)를 잡을 approch을 사용하고 부모 노드를 얻기 위해 다른 모든 노드를 확인했다로직 I는 부모 자식 관계 선박이 저장된 테이블이

. n 복잡도는 n * n-1이됩니다. 데이터베이스에 lasrge 데이터가있을 때이 접근법이 성공하지 못하는 다른 방법이 있습니까? 뭔가 더있을 경우

데이터베이스 구조가 유연, 우리는

당신의 도움과 지원을 찾고 ... 그 변경할 수 있습니다.

답변

0

출력 구조에서 사용자 데이터가 트리를 나타내는 것으로 가정합니다. 따라서 간단한 "노드의 자식 가져 오기"요청은 SELECT childId, name FROM tree WHERE parentId = ?으로 표준 트리 순회를 수행 할 수 있습니다. 의사 코드 :

def displayNode(node) 
    children = selectChildren(node.id) 
    if (empty(children)) 
    print '<'+node.name+'/>' 
    else 
    print '<'+node.name+'>' 
    for (child in children) 
     displayNode(child) 
    print '</'+node.name+'>' 

최적 -가, 노드 당 하나 개의 쿼리를 실행하면 것은 (아마도 경우 인) 너무이며 최적화 된 데이터 구조에있는 모든 데이터를 가져하여 배치 단일 쿼리를 실행하는 것입니다 :

for (node in selectAllNodes()) 
    nodes[node.parent].append(node); 

def selectChildren(id) 
    return nodes[id] 
관련 문제