문제

나사산 메시지 보드를 만들고 단순하게 유지하려고 노력하고 있습니다. 메시지 테이블이 있으며, 최상위 레벨 응답을 나타내는 'reply_id'필드 또는 스레드 응답을 나타내는 값이있는 'Reply_id'필드가있는 REPLIES 테이블이 있습니다.

그래도이 유형의 테이블에서 선택 전화를하는 방법에 대해 약간 혼란 스럽습니까?

Reply
-id (every reply gets a unique id)
-message_id (the message it is replying to)
-reply_id (the id of the reply it may be replying to - for threading)
-reply

나는 이것이 특히 성능에있어 복잡한 문제가 될 수 있다는 것을 알고 있지만, 나는 이것에 대한 가장 기본적인 해결책을 찾고 있습니다.

감사해요...

도움이 되었습니까?

해결책

순진한 "교과서"나무를 보관하는 방법을 사용하고 있습니다. 즉, 직계 부모에 대한 참조를 저장하고 있습니다. 이 디자인이 호출됩니다 인접력 목록. 다른 솔루션이 있습니다.

  • 경로 열거, 트리의 각 노드에 모든 직접 조상을 인코딩하는 문자열을 보관합니다.
  • 중첩 된 세트, Joe Celko의 영리한 접근 방식에서 노드 당 두 개의 숫자 값을 사용하여 모든 후손을 결합합니다.
  • 폐쇄 테이블 (또는 인접 관계), 여기서 별도의 테이블을 사용하여 모든 조상 교사 쌍을 나열합니다.

"에 대한 내 응답을보십시오"평평한 테이블을 나무에 구문 분석하는 가장 효율적이고 우아한 방법은 무엇입니까?"폐쇄 테이블 설계의 참조 및 예제.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top