답글형 게시판 분석
(2015/3/24 화요일 22:55)

우선 글의 종류를 구분해 두겠다.
1. 최고 조상글: 루트의 루트의… 의 루트. 최고 조상글을 말한다.
2. 루트: 답글달려고 했던 원글을 말한다.
3. 내 글: 내가 쓴 글이다. 내가 쓰는 답글, 내가 삭제하려는 답글을 뜻한다.
1. 새 글을 쓸 경우
| 구분 | 내 글 처리하는 법 | 기타 |
| no |
글쓸 때마다 자동증가 (MAX+1) |
|
| gi |
no |
|
| gs(순서) |
0 |
|
| gt(탭) |
0 |
|
| root |
0 |
|
| depth |
0 |
요약하면, n / n / 0 / 0 / 0 / 0 을 대입하면 된다.
2. 답글을 쓸 경우
| 구분 | 내 글 처리하는 법 | 기타 |
| no |
글쓸 때마다 자동증가 (MAX+1) |
|
| gi |
최고조상의 no |
|
| gs(순서) |
루트gs+1 |
이어서, gi가 내 글의 gi와 같고,(=같은 그룹이고) gs가 내 글의 gs보다 크거나 같은(=내 글보다 순서가 늦는) 모든글의 gs를 +1 —(A) |
| gt(탭) |
루트gt+1 |
|
| root |
루트no |
|
| depth |
0 |
루트의 depth를 +1 —(B) |
요약하면, n / 조상n / 뤁+1 / 뤁+1 / 루트 / 0 이다.
다만, (A)나와 같은 그룹의, 루트보다 순서가 늦는 글의 순서(gs)를 +1 해주고,
(B)루트의 뎁스를 +1 해주면 된다.
3. 삭제한다면
(삭제하는 내 글의 depth가 == 0 이라면)
| 구분 | 내 글 처리하는 법 | 기타 |
| no |
DELETE |
|
| gi | ||
| gs(순서) |
gi가 내 글의 gi와 같고,(=같은 그룹이고) gs가 내 글의 gs보다 큰(=내 글보다 순서가 늦는) 모든글의 gs를 -1 |
|
| gt(탭) | ||
| root | ||
| depth | 루트의 depth를 -1 |
(삭제하는 내 글의 depth가 >0 이라면)
| 구분 | 내 글 처리하는 법 | 기타 |
|
– |
제목만 삭제되었다고 바꾸기 (del=1) |
gi가 내 글의 gi와 같고, root가 내 글의 root와 같은 게시물<A’>이 모두 del=1이고 나의 루트<B’>가 del=1일때 A’,B’ 모두 DELETE 그리고, B’의 루트(루트의 루트) depth를 -1
(=그룹번호 내에서 같은 루트의 게시물들이 모두 삭제당했고, 나의 루트마저 다 삭제되었다면 루트부터 아래까지 싹 삭제한다) |