게시판을 만들 때 답글 기능이 있잖아요?
물론 요즘은 댓글에 밀려서 조금 적긴 하지만, 아직까지도 답글이 필요한 게시판이 있습니다.
이 답글 기능을 만들어보려고 하는데 알고리즘이 여러가지더라구요.
그중에 제가 제일 관심이 갔던건 소수점을 활용하는 방법인데,
bo_no, bo_order, bo_depth, bo_title 이란 컬럼을 가진 테이블이 있을 때
1depth의 bo_order = bo_no,
2depth의 bo_order = 1depth의 bo_order + ((1/10^(depth-2)) / no) - 1,
(3.....n)depth의 bo_order = 2depth의 bo_order - ((1/10^(3-2)) / no)
insert 당시에 이런 형식으로 넣으면 어떨까요?
bo_no |bo_order | bo_depth | bo_title
1 |1 |1 |첫 번째 글
2 |0.5 |2 |첫 번째 글의 답글 1
3 |3 |1 |두 번째 글
4 |0.25 |2 |첫 번째 글의 답글 2
5 |0.48 |3 |첫 번째 글의 답글 1의 답글 1
6 |2.166 |2 |두 번째 글의 답글 1
7 |0.2357... |3 |첫 번째 글의 답글 2의 답글 1
8 |0.125 |2 |첫 번째 글의 답글 3
9 |0.3888... |3 |첫 번째 글의 답글 1의 답글 2
10 |0.2347... |4 |첫 번째 글의 답글 2의 답글 1의 답글 1
결과는 이런식으로 나오는데,,,
bo_order 순으로 desc 정렬하면 이와 같습니다. (게시판에 출력되는 형식)
3 두 번째 글
6 두 번째 글의 답글 1
1 첫 번째 글
2 첫 번째 글의 답글 1
5 첫 번째 글의 답글 1의 답글 1
9 첫 번째 글의 답글 1의 답글 2
4 첫 번째 글의 답글 2
7 첫 번째 글의 답글 2의 답글 1
10 첫 번째 글의 답글 2의 답글 1의 답글 1
8 첫 번째 글의 답글 3
여기까지는 정상적으로 정렬 될 것 같은데,
혹시 이 알고리즘에 문제가 될만한 부분이 있을까요?
프게분들의 의견 좀 부탁드리겠습니다!