게시판 대댓글 대대댓글 알고리즘 및 DB설계

 알고리즘은 https://vkein.tistory.com/entry/%EB%8B%B5%EB%B3%80%ED%98%95-%EA%B2%8C%EC%8B%9C%ED%8C%90 를 참조하였다.


게시판의 게시글의 경우 최신글이 위로 올라가는게 일반적

게시글내 댓글의 경우 최신댓글이 아래로 내려가는게 일반적

위 링크에는 두가지 방법이 모두 소개되어있다. 

게시글의 시점이지만 댓글에도 적용가능하다.


이론적으로 댓글, 대댓글, 대대댓글, 대대.......댓글, 무한까지 가능하다.

모든 댓글을 sort (정렬순서)와 depth(깊이) 이 두가지의 변수로 저장한다.

대댓글이 작성될때 그 뒤의 모든 댓글의 sort값을 하나씩 늘린뒤 

그 사이 빈 sort값에 depth+1의 댓글을 삽입한다.


당연히 댓글과 게시글을 연결시켜주는 것도 필요하다.


두서없이 작성했는데 위에 아주 잘 설명해놓았으니 한번 보시길.


기본적인 공식은


*공식
1. SELECT NVL(MIN(SORTS),0) FROM BOARD
   WHERE  BGROUP = (원글의 BGROUP)
   AND SORTS > (원글의 SORTS)
   AND DEPTH <= (원글의 DEPTH)

2-1. 1번이 0 일 경우 

3. SELECT NVL(MAX(SORTS),0) + 1 FROM BOARD 
    WHERE BGROUP = (원글의 BGROUP);

4. INSERT INTO BOARD VALUES 
   (번호, (원글의 BGROUP), (3번값), (원글의 DEPTH +1) ,' 제목')

2-2. 1번이 0이 아닐 경우 

3. UPDATE BOARD SET SORTS = SORTS + 1 
  WHERE BGROUP =  (원글의 BGROUP)  AND SORTS >= (1번값)

4. INSERT INTO BOARD VALUES 
   (번호, (원글의 BGROUP), (1번값), (원글의 DEPTH +1) ,' 제목')


출처: https://vkein.tistory.com/entry/답변형-게시판 [Vkein Blog] 


No comments:

Post a Comment