ASP3.0 기초 강의실

시삽: 레드플러스 님 
게시판 이동:
 제목 : 답변형 게시판 정열 로직 총정리
글번호: 33
작성자: 관리자
작성일: 2001/08/21 오전 1:17:00
조회수: 5889
답변형 게시판 정열 로직 총정리

순서는 무작위로 생각나는 대로입니다.

※모든 경우에서 리플의 깊이는 생략합니다. 정열에 이부분은 불필요하며 출력에만 필요하므로 로직과는 무
관하니까요.

※같은 깊이의 리플에 대해서 나중에 쓴글이 위나 아래로 가는 것은 약간의 코딩만 바꾸면 되므로 여기서
는 나중에 리플단것이 위로가는 것으로 그냥 설명합니다. 약간 덧붙이자면 리플달때 그 그룹내에서 같은 리
플 깊이의 가장 나중에 써진 글과 여기에 딸린 마지막 리플의 번호등과 연관해서 정열에 필요한 값을 주면
됩니다. 잘 생각해보세요.

----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
1. 그룹과 그룹내 순서(정수형) 부여하기

num - 글의 고유번호
group - 글의 그룹번호
step - 그룹내의 순서

num     group     step
-----------------------------
1             1             1
2             2             1
3             1             2
4             1             5
5             5             1
6             1             3
7             1             6
8             1             4
9             5             2

group DESC, step ASC

5 세번째 부모글
→9 답변글
2 두번째 부모글
1 첫번째 부모글
→3 답변글
   →6 답변글의 답변글
      →8 답변글 깊이 3단계
→4 답변글
   →7 답변글의 답변글

리플을 달 경우 부모글의 그룹을 상속받고 부모글의 스탭에서 +1 한 값을 가지며, 이 값 이상의 스탭값을
가지는 같은 그룹의 모든 스탭에 대해서 +1 해주는 방식을 취한다.

----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
2. 그룹과 그룹내 순서(실수형) 부여하기

num - 글의 고유번호
group - 글의 그룹번호
step - 그룹내의 순서, 실수형

num     group     step
-----------------------------
1             1             0
2             2             0
3             1             0.5
4             1             0.75
5             5             0
6             1             0.625
7             1             0.875
8             1             0.6875
9             5             0.5

group DESC, step ASC

5 세번째 부모글
→9 답변글
2 두번째 부모글
1 첫번째 부모글
→3 답변글
   →6 답변글의 답변글
      →8 답변글 깊이 3단계
→4 답변글
   →7 답변글의 답변글

리플을 달 경우 부모글의 그룹을 상속받고 부모글의 스탭과 부모글 바로 아래의 리플의 스탭값의 평균을 스
탭으로 부여함. 바로 아래의 리플이 존재하지 않을 경우는 +1을 해준후 /2 해줌. 그룹내 다른 글에대해서
업데이트 해줄 필요 없음.

----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
3. 그룹과 그룹내 순서(문자형) 부여하기

num - 글의 고유번호
group - 글의 그룹번호
step - 그룹내의 순서, 문자형

num     group     step
-----------------------------
1             1             <NULL>
2             2             <NULL>
3             1             A
4             1             B
5             5             <NULL>
6             1             AA
7             1             BA
8             1             AAA
9             5             A

group DESC, step ASC

5 세번째 부모글
→9 답변글
2 두번째 부모글
1 첫번째 부모글
→3 답변글
   →6 답변글의 답변글
      →8 답변글 깊이 3단계
→4 답변글
   →7 답변글의 답변글

리플을 달 경우 부모글의 그룹을 상속받고 부모글의 스탭에서 + 순서에 따른 알파뱃을 부여함.
같은 깊이의 3번째 리플일 경우 + C 가 되는 방식. 역시 다른 글의 업데이트가 없이 수행가능.
운영상의 기교가 필요할듯...

----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
4. 한개의 필드로 정열하기 - 순서값이 1부터 글숫자 만큼 쫙 정열되는 로직

num - 글의 고유번호
step - 그룹내의 순서

num     step
-----------------------------
1             6
2             7
3             5
4             2
5             9
6             4
7             1
8             3
9             8

step DESC

5 세번째 부모글
→9 답변글
2 두번째 부모글
1 첫번째 부모글
→3 답변글
   →6 답변글의 답변글
      →8 답변글 깊이 3단계
→4 답변글
   →7 답변글의 답변글

가장 상위의 부모글을 쓰면 가장 큰 step+1 값을 가짐.
리플일 경우 부모의 step값을 상속받고 전체에서 이 값보다 큰 step을 가지는 글에 대해서 step+1 해줌

----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
5. 위로직의 역순 적용

num - 글의 고유번호
step - 그룹내의 순서

num     step
-----------------------------
1             9,999,997
2             9,999,998
3             9,999,996
4             9,999,993
5             10,000,000
6             9,999,995
7             9,999,992
8             9,999,994
9             9,999,999

step ASC

5 세번째 부모글
→9 답변글
2 두번째 부모글
1 첫번째 부모글
→3 답변글
   →6 답변글의 답변글
      →8 답변글 깊이 3단계
→4 답변글
   →7 답변글의 답변글

가장 상위의 부모글을 쓰면 가장 큰 step-1 값을 가짐.
리플일 경우 부모의 step값을 상속받고 전체에서 이 값보다 큰 step을 가지는 글에 대해서 step-1 해줌
미리 전체 글수를 한정지어야 함. 인덱스로 설정하여 ORDER BY 사용하지 않고도 정열시킬수 있음.

----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
6. 한개의 필드로 정열하기 - 리플의 갯수를 한정하는 방식

num - 글의 고유번호
step - 그룹내의 순서

num     step
-----------------------------
1             100
2             200
3             99
4             96
5             300
6             98
7             95
8             97
9             299

step DESC

5 세번째 부모글
→9 답변글
2 두번째 부모글
1 첫번째 부모글
→3 답변글
   →6 답변글의 답변글
      →8 답변글 깊이 3단계
→4 답변글
   →7 답변글의 답변글

가장 상위의 부모글을 쓰면 가장 큰 step+100 값을 가짐. 더해주는 숫자 -1 만큼만 리플이 허용됨.
리플일 경우 부모의 step-1을 가지고, 그룹에서만 이 값보다 작은 step을 가지는 글에 대해서 step-1 해줌

----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
7. 위로직의 역순적용

num - 글의 고유번호
step - 그룹내의 순서

num     step
-----------------------------
1             1,000,000,000
2             999,999,900
3             1,000,000,001
4             1,000,000,004
5             999,999,800
6             1,000,000,002
7             1,000,000,005
8             1,000,000,003
9             999,999,801

step ASC

5 세번째 부모글
→9 답변글
2 두번째 부모글
1 첫번째 부모글
→3 답변글
   →6 답변글의 답변글
      →8 답변글 깊이 3단계
→4 답변글
   →7 답변글의 답변글

글의 한계를 미리 정해놓음. 가장 상위의 부모글을 쓰면 가장 큰 앞 그룹의 부모글 step-100 값을 가짐.
리플일 경우 부모의 step+1을 가지고, 그룹에서만 이 값보다 큰 step을 가지는 글에 대해서 step+1 해줌




 
이전 글   다음 글 삭제 수정 답변 글쓰기 리스트

(댓글을 남기려면 로그인이 필요합니다.)

관련 아티클 리스트
  제       목 파일 작성자 작성일 조회
이전글 16. ASP사용자를 위한 SQL문 - 관리자 2000-12-27 9040
  15. 알고리즘 - 관리자 2000-12-27 6351
현재글 답변형 게시판 정열 로직 총정리 - 관리자 2001-08-21 5889
  계층형 게시판 쿼리 연습 - 관리자 2001-09-06 7401
다음글 14. ASP 사용 종합 예제 - 관리자 2000-12-25 6412
 
손님 사용자 Anonymous (손님)
로그인 Home