2012-03-17 3 views
1

와 배열 만들기 :값의 많은 (3000)와 나는 다음과 MySQL의 테이블이 무한한 깊이

[id] [parent_id] [string] 

을하고 중첩 된 나무로 인쇄하려면 (예를 들어, 중첩 된 ul의.). 그것은 무한한 깊이를 가지고 있음에 유의하십시오.

SO answer에서와 같이 중첩 기능을 시도했지만 실제로 느립니다. 내 다른 접근법은 무한한 깊이에 복종하지 않고 실패했습니다.

+0

그리고 귀하의 질문은 ...? – j08691

+1

3000 레코드는 꽤 관리하기 쉽고 분명히 ** 유한 ** 깊이입니다. 재귀 함수는 여기서 느릴 수 있지만 '나무'를 추적하는 좋은 방법입니다. 3000 개의 레코드 만 있으면 정말 느려질 수 없습니다. 구현시 문제가있을 수 있습니다. 네스트 된 요소와 같은 레코드를 어떻게 구조화하고 싶습니까? 'parent_id'는 노드입니까? 여기에서 원하는 것을 확신 할 수 없다 ... - 여기에있는 특정 문제 또는 질문은 무엇입니까? 그것은 조금 모호합니다. – Smamatti

+0

무한 깊이의 중첩 트리를 인쇄하고 싶습니까? :) 당신은 "무기한"을 의미 했습니까? –

답변

3

무한 깊이를 원하면 인접성 목록 모델을 사용하지 마십시오. 당신은 당신이 가질 많은 두통에 대한 질문을 여기에 계속 게시 할 것입니다.

대신 중첩 세트 모델을 사용하십시오.

+2

"무한 깊이를 원한다면 인접성 목록 모델을 사용하지 마십시오." - 사실이 아니다. 여기서 문제는 그가 전체 트리를 움켜 잡아야하고 아마도 mysql 외부의 트리를 다시 만들고 싶지 않을 것이라는 것이다. –

+0

중첩 세트 모델은이 문제를 해결합니다. 전체 트리를 인쇄하는 것이 훨씬 쉽습니다. 모든 노드를 인쇄하기 쉬운 순서로 쉽게 얻을 수 있습니다. 인접 목록 모델을 사용하여이 작업을 수행하십시오. – greg0ire

+0

그것은 바로 내가 말한 것입니다. 간접적 인 방식으로. –

관련 문제