웹 애플리케이션을 위해 여러 페이지에서 중첩 토론을 분리하는 가장 좋은 방법은 무엇입니까?
-
06-09-2019 - |
문제
SlashDot 또는 YouTube에 대한 주석과 같이 PHP/MySQL 응용 프로그램에 대한 스레드 메시지 디스플레이를 디자인하고 있으며, 주석을 주문하고 페이지로 분리하여 페이지에 20 개의 의견을 표시 할 수 있도록 어떻게 해야하는지 궁금합니다. 그러나 여전히 그들을 중첩시켰다.
내 앱의 주석은 무제한 레벨 중첩 될 수 있으며이 구조는 내가 믿는 인접성 관계 테이블을 사용하여 표현됩니다. 그 관계 테이블에는 2의 레벨이 "증조부"를 의미하는 Childid, Parentid 및 레벨이 있습니다.
내 질문은 최종 사용자의 유용성과 효율적인 DB 쿼리를 구성하는 실용성 중 하나입니다. 나는 다음 옵션을 고려했다.
트리의 위치에 관계없이 결과를 날짜별로 나누기 때문에 특정 날짜 범위 내의 모든 의견이 부모와 함께 나타나지 않더라도 함께 나타납니다. 부모와 비슷한 시간에 게시 된 모든 의견은 같은 페이지에 표시되며 그러한 경우에는 '중첩'을 표시 할 수 있지만 부모로부터 고아가 된 의견이 있습니다. 이것은 아마도 허용 될 것입니다 - 그것은 YouTube 의견에서 일이 수행되는 방식입니다. 부모보다 훨씬 늦게 작성된 의견은 부모와 같은 페이지에 나타나지 않을 것입니다 (부모가 최신 페이지에 있지 않은 경우). 다른 최신 의견.
트리를 가로 질러 순서대로 노드를 검색합니다. 형제 자매는 여전히 날짜별로 정렬 할 수 있지만 날짜가 아닌 트리 구조에 우선 순위를 부여합니다. 이에 대한 이점은 부모가 가장 최근의 의견에서 많은 페이지 인 경우에도 답장이 항상 부모와 함께 배치된다는 것입니다. 이것은 Icanhascheezburger 블로그와 같은 앱에서 작업이 수행되는 방식입니다. 나는 모든 사람들이 가장 큰 나무 지점에 대한 답변을 추가하려는 유혹을받는 것처럼 그것에 대해 몇 가지를 좋아하지 않습니다.
세 번째 옵션은 Slashdot과 같은 것을하는 것입니다. 여기서 주석을 페이지로 분리하지는 않지만 하나의 큰 트리가있는 것입니다.
첫 번째는 내 관계 테이블이 주어진 가장 간단한 DB 쿼리라고 생각하지만 다른 아이디어에 열려있을 것입니다.
세 종류의 일부 시스템은 어떤 방식 으로든 중첩 수준을 제한합니다. 이는 X 레벨을 통해 재발 한 후에는 다른 모든 것이 형제 인 것처럼 함께 결합 할 수 있습니다. 예를 들어 YouTube 주석은 한 레벨로만 렌더링됩니다. 다른 시스템은 때때로 5 개 정도의 레벨 이후에 "중첩 수준을 초과"한다고 말합니다.
해결책
중첩 된 의견을 전혀 원하는 이유는 사용자가 한 번에 단일 관심사를 읽고 싶어하기 때문입니다. 즉, 사용자가 일관된 사고 사슬의 스레드를 생성 할 것이라고 믿는 이유가 있으며,/또는 한 스레드에서 논의되는 것은 일부 사용자에게 관심을 가질 것입니다.
이 경우, 왜 날짜 (옵션 1)별로 페이지 전체에 스레드를 임의로 분할하고 싶은 이유를 모르겠습니다. 낮은 등급의 주석 (옵션 3)을 컬링하는 단일 페이지를 사용하는 것은 약간 가혹한 것처럼 보이며 사용자가 의견을 게시하는 것을 방해 할 수 있습니다. Slashdot과 같은 잠재 고객 질량이 있다면 좋은 일이지만보다 일반적인 방문률이있는 사이트에는 바람직하지 않을 수 있습니다.
아마도 같은 페이지에 모든 스레드가있는 옵션 2와 같은 것을 가질 수 있지만 스레드가 너무 길어지기 시작하면 사용자를 해당 스레드 전용 페이지로 가져가는 단일 링크로 롤업됩니다. 또는 긴 스레드를 줄이면 제목 줄과 저자를 표시하여 스레드의 전용 페이지의 적절한 위치로 연결됩니다.
사용자가 가장 큰 스레드에 관련없는 의견을 게시하는 경향은 스레드의 끝을 찾기 위해 스크롤을 귀찮게하고 싶지 않은 사용자의 제품이라고 생각합니다. 긴 스레드를 자동으로 압축하여 모든 스레드의 루트를 관리 가능한 길이의 단일 페이지에 표시함으로써 사용자는 관심있는 스레드를 쉽게 스캔하고 원하는 경우 추가 할 수 있습니다.
다른 팁
필요한 것은 계층 적 데이터를 데이터베이스에 저장하는 것입니다. 이 기사로 시작해야합니다.SitePoint의 기사 MySQL 웹 사이트의 기사