Notice
Recent Posts
Recent Comments
관리 메뉴

Developer Gonie

[9주차] 28. {게시판} 게시글이 저장되는 테이블 구조(+ 원글, 답글이 DB에 추가되는 알고리즘) 본문

K-DigitalTraining 강의/8. JSP

[9주차] 28. {게시판} 게시글이 저장되는 테이블 구조(+ 원글, 답글이 DB에 추가되는 알고리즘)

이대곤 2022. 7. 21. 17:49

* 아래의 글을 이해한다면 답글의 깊이가 한개인 경우가 되도록 수정할 수도 있을 것이다.

board테이블에서 원글, 답글의 관계를 나타내기 위한 column

num

답글 혹은 원글의 레코드가 삽입된 순서로 자동으로 1씩 증가함

수정 혹은 삭제 할 때 특정 레코드의 정보를 가져오기 위한 용도로 사용됨

 

subject

글의 제목을 갖는 column인데 아래 그림에서는 이해를 돕기위해 아래와 같이 써두었음

ex) a2 : 원글

ex) a21: 제목이 a2인 원글에 달린 첫번째 답글

ex) a211: 제목이 a2인 원글에 달린 첫번째 답글에 추가로 달린 첫번째 답글

ex) a22: 제목이 a2인 원글에 달린 두번째 답글

 

ref

최상위 부모의 모든 자손들은 같은 번호를 갖게하여,

나중에 DB에서 select로 뽑아올 때 가족관계인 얘들은 같은 곳에 뭉쳐서 출력하기 위한 column 값 

 

re_step

같은 ref 값을 갖는 가족들 내에서 마지막에 입력된 레코드를 상단에 출력하기 위함. 그래도 최상위 부모는 맨위 고정.

나중에 DB에서 select로 뽑아올 때 ref 기준 내림차순 정렬로 가족끼리 뭉쳐있게 하고

같은 ref 값을 가질경우 restep으로 오름차순 정렬되게 하여 가져옴.

 

re_level

조상이 존재할 경우 그 깊이에 따라 re 그림 앞에 공간을 넣어주기 위한 column 값

원글, 답글이 DB에 추가되는 알고리즘 설명

* 아래 그림에서 레코드가 새로 추가될 때 실제로는 해당 위치에 추가되지는 않는다는 것을 알아야 한다.

   실제로는 DB에 새로운 레코드가 추가될 때 맨 뒤에 추가된다.
   아래의 그림은 나중에 원글, 답글, 답답글 삽입 후 게시글 데이터를 어떤 정렬된 상태로 가져올지까지 포함했기 때문에 그러하다.

 

* 원글, 답글(답답글)을 추가하면서 존재하는 케이스는 아래와 같이 딱 2가지이며 그 외의 경우는 존재하지 않는다.

 

<원글이 추가될 때>

원글이라면 ref에는 num의 값을 그대로 넣어주고, re_step, re_level는 0으로 넣어준다.

 

<답글이 추가될 때>

1. 부모와 같은 ref를 가지는 것들 중,

   부모의 re_step 값 보다 큰 레코드의 re_step의 값을 1씩 증가시킴

2. 그 다음 ref는 부모의 ref의 값을 그대로 넣어주고,

   Re_step, re_level는 부모의 re_step, re_level 보다 각각 1씩 증가한 값으로 넣어준다.







Comments