단답형 게시판 알고리즘
단답형 게시판을 구현하기 위해서는 게시물의 그룹번호, 그룹내에서 순서, 그룹내에서 레벨 이 세가지 값이 필요하다. 단답형 게시판을 구현하기 위해서는 새로운 글을 쓸 때와 답변글을 쓸 때 그룹번호, 그룹내에서의 순서, 레벨 이 세 가지의 데이터로 구분한다.
새글을 쓸 경우에는 그룹번호을 현재 테이블에 있는 그룹번호중 제일 높은 번호를 부여하고 그룹내 순서와 레벨은 0으로 지정한다.
하지만, 답변글을 쓸 때는 그룹번호는 그대로 유지하고 그룹내 순서와 레벨을 통해 단답글의 순서를 지정한다. 답변글이 달리때는 답변글이 달리는 글에서 순서와 레벨을 가지고 와서 부모글의 순서값보다 높은 값을 가진 글들에 +1시키고 자신의 글에도 +1시킨다. 그리고 레벨은 부모글의 레벨에서 +1시키면 된다.
groupSeq , sequence , level
1번 1 0 0
[답글] 2번 1 1 1
[답글] 3번 1 2 2
여기까지가 답글이 증가할 경우 그룹번호, 순서, 레벨이 증가하는 방법이다. 이 때 1번글에 다시 답글이 달릴 경우 다음과 같은 값으로 변경된다.
groupSeq , sequence , level
1번 1 0 0
[답글] 4번 1 1 1
[답글] 2번 1 1+1 1
[답글] 3번 1 2+1 2
즉, 그룹번호와 레벨은 그대로 유지하고 글의 순서는 변경해야 한다. 이런 처리후 게시물을 순서대로 불러올때는 다음과 같이 SQL문을 작성한다.
전체 수도 코드
만약 ( SELECT max(그룹번호) FROM table; 값이 있다면 ) {
그룹 번호 = max(게시물번호) + 1
}
아니라면 {
그룹 번호 = 1; // 최초 작성 글에서만 수행
}
만약 ( 그룹번호가 0이 아니라면 ) { // 즉, 답글일 경우 수행
UPDATE table SET sequence=sequence+1 WHERE groupSeq=답글그룹번호
AND sequence > 가져온sequence값;
자신의 sequence, level값을 1씩 증가
}
아니라면 {
그룹번호는 위에서 계산한 번호
sequence = 0
level = 0
}
처리 완료 후 게시물 디비에 저장
'자바(Java) > JAVA 2EE' 카테고리의 다른 글
액션 태그란 (0) | 2009.11.09 |
---|---|
디렉티브 엘레멘트 설명 (0) | 2009.11.09 |
select 태그에 기준부터 현재년도까지 표시하는 코드 (0) | 2009.10.10 |
게시판 페이지 알고리즘 (0) | 2009.10.10 |
페이지 사이에 파라미터 유효범위 (0) | 2009.10.10 |