태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.



2008/06/22 13:25

게시판 DB 구성 방법중 1개

먼저 mysql은 index 필드들을 따로 모아 놓기 때문에 이런방식을 이용해서

쿼리를 날리면 속도를 향상 시킬 수 있습니다.


공지 사항 게시판을 만든다고 가정하겠습니다.


Table Name : bbs_notice


필요한 예제

필드목록


uid : int 고유번호 자동증가

muid : int 회원고유번호

name : varchar 이름

email : varchar 이메일

subject : varchar 제목

ip : varchar IP주소

contents: text 내용

homepage: varchar 홈페이지 주소

singdate: datetime 등록일


위와 같은 정보들이 필요하다면 먼저 테이블을 2개로 나눕니다.


데이타형 테이블 2개 생성


■ bbs_notice // 테이타 형 : 테이블 1

uid,

muid,

name,

email,

subject,

ip,

homepage,

signdate


+-------+--------+-------------+-----------------------+--------------------+

| uid | muid | name | subject | signdate |

+-------+--------+-------------+-----------------------+--------------------+

| 1 | 1 | php사랑이 | 대한민국 코리아 파이팅| 2007-04-12 11:27:21 |

+-------+--------+-------------+-----------------------+--------------------+

| 2 | 1 | php사랑이 | 멋쟁이 php사랑이 | 2007-04-12 12:01:21 |

+-------+--------+-------------+-----------------------+--------------------+



■ bbs_notice_contents : // 데이타형 : 테이블 2


pid, // bbs_notice 의 uid 고유번호 값

conetents

+-------+----------------------------+

| pid | contents |

+-------+----------------------------+

| 1 | apmsoft 멋쟁이 |

+-------+----------------------------+

| 2 | 대한민국 php사랑이 |

+-------+----------------------------+


■ bbs_tableIndex

a. 게시판 테이블 명

b. 테이블명 마다 고유번호값을 붙여서 저장해 놓습니다.


uid, (smallint) (고유번호) (자동증가)

tname (varchar)


+-------+----------------------------+

| uid | tname |

+-------+----------------------------+

| 1 | bbs_notice |

+-------+----------------------------+

| 2 | bbs_faq |

+-------+----------------------------+


■ bbs_index //

a. 모든 게시판 고유번호 모음

b. 검색어 없이 쿼리를 때릴때 사용합니다.


uid, (int) (고유번호) (자동증가)

tid, (int) // bbs_게시판 들 고유번호

tname,(smallint) // bbs_tableIndex 고유번호

signdate(int) // bbs_게시판 등록일을 숫자형으로 변형해서 저장


+-------+-------------+---------+-----------+

| uid | tid | tname | signdate |

+-------+-------------+---------+-----------+

| 1 | 1 | 1 | 3493456789 |

+-------+-------------+---------+-----------+

| 2 | 1 | 2 | 3493456790 |

+-------+-------------+---------+-----------+


■ bbs_keyword

a. 게시판 제목, 내용 단어 저장 검색어 등록 테이블

b. word LIKE '대한%'


uid, (int) (고유번호) (자동증가)

word (varchar)

+-------+----------------------------+

| uid | word |

+-------+----------------------------+

| 1 | 대한민국 |

+-------+----------------------------+

| 2 | 코리아 |

+-------+----------------------------+

| 3 | apmsoft |

+-------+----------------------------+

| 4 | 멋쟁이 |

+-------+----------------------------+

| 5 | php사랑이 |

+-------+----------------------------+

| 6 | 파이팅 |

+-------+----------------------------+


bbs_keyword_list :

a. 검색어에 따른 게시판들 등록

b. 한 단어에 100개 200개 이하 또는 이상의 bbs 게시판 고유번호들이 존재하게 됩니다.


uid, (int) (고유번호) (자동증가)

pid, (int) // bbs_keyword 고유번호 저장

tid, (int) // bbs_게시판 들 고유번호

tname,(smallint) // bbs_tableIndex 고유번호

signdate(int) // bbs_게시판 등록일을 숫자형으로 변형해서 저장


+-------+--------+--------+---------+-----------+

| uid | pid | tid | tname | signdate |

+-------+-----------------+---------+-----------+

| 1 | 3 | 1 | 1 | 3493456789 |

+-------+-----------------+---------+-----------+

| 2 | 3 | 1 | 1 | 3493456790 |

+-------+-----------------+---------+-----------+

| 3 | 1 | 1 | 1 | 3493456789 |

+-------+-----------------+---------+-----------+

| 4 | 5 | 2 | 1 | 3493456790 |

+-------+-----------------+---------+-----------+
index(pid,tname)




검색은 '멋쟁이%' 또는 'php사랑이%' 와 같이 해야

index를 타게되며 속도또한 무지 빠릅니다.


위와 같이 고유번호와 index들로만 연결하면 속도 무지 빠릅니다.

200만개 중에서 하나의 고유번호를 찾아 오는것 일도 아닙니다.

부족하지만 속도향상을 위한 테이블 구성 였습니다.

크리에이티브 커먼즈 라이선스
Creative Commons License

'프로그래밍 > PHP' 카테고리의 다른 글

php이용 PDF 만들기에 대한 생각  (0) 2008/06/22
이미지 워터마크 구현 함수  (0) 2008/06/22
게시판 DB 구성 방법중 1개  (0) 2008/06/22
php-다중 연결 소켓 통신(1)  (0) 2008/06/22
php-다중 연결 소켓 통신(2)  (0) 2008/06/22
php-소켓클래스(소스)  (0) 2008/06/22
Trackback 0 Comment 0

Trackback : http://pringles.org/trackback/21 관련글 쓰기