본문 바로가기
PHP/게시판 만들기

게시판 DB 스키마 재정의

by ethanjoh 2009. 2. 25.

2009/02/12 - [게시판 만들기] - 게시판 DB 스키마 정리

게시판 만들 때 DB의 스키마를 정리를 했었는데 사용하다 보니 문제점이 발견되었다.
한 개의 게시판만 생성해서 사용할 때는 별 관계가 없지만 다수의 게시판을 생성했을 때 여러 가지 복잡하고 미숙한 부분들이 나타나서 스키마를 다시 재정의했다.

#기본 게시판 테이블<

CREATE TABLE IF NOT EXISTS bbs_notice ( 

 main_no int(11) unsigned NOT NULL AUTO_INCREMENT,
 id varchar(11) NOT NULL,
 title varchar(30) NOT NULL,
 name varchar(20) NOT NULL,
 contents mediumtext NOT NULL,
 passwd varchar(41) NOT NULL,
 date datetime NOT NULL,
 count int(10) unsigned NOT NULL default '0',  
 email  varchar(40),
 depth int(3) unsigned NOT NULL default '0',
 filename varchar(255),
 PRIMARY KEY (main_no),
 KEY (title, name)
)TYPE=MyISAM,CHARSET=utf8;


#기본 공지사항 테이블에 대한 답변 테이블
CREATE TABLE IF NOT EXISTS bbs_re_notice ( 
 reply_no int(11) unsigned NOT NULL AUTO_INCREMENT,
 main_no int(11) unsigned NOT NULL,
 id varchar(11) NOT NULL,
 title varchar(30) NOT NULL,
 name varchar(20) NOT NULL,
 contents mediumtext NOT NULL,
 passwd varchar(41) NOT NULL,
 date datetime NOT NULL,
 email  varchar(40),
 PRIMARY KEY (reply_no),
 KEY (main_no)
)TYPE=MyISAM,CHARSET=utf8;

CREATE TABLE IF NOT EXISTS code (
 num int(10) unsigned NOT NULL auto_increment,
 code varchar(20) NOT NULL,
 bbs_name varchar(50) NOT NULL,
 passwd varchar(11) NOT NULL,
 readonly enum('Y', 'N') NOT NULL default 'N',
 PRIMARY KEY (num)	
)TYPE=MyISAM,CHARSET=utf8;

insert into code (code, bbs_name, passwd, readonly) values ('notice', '공지사항', '1111', 'Y');

 

우선 DB 테이블을 생성 시에 공지사항 게시판을 기본으로 생성하도록 했다.
제일 하단에 보면 코드 테이블에 공지사항 게시판 값이 들어간 것을 알 수 있다.
이렇게 부모글과 답변글에 대한 테이블을 분리해놓고 나니 처리하기가 한경 수월해졌다.
여러 개의 게시판을 생성하더라도 호출이나 처리 시에는 게시판 코드값만 넣어서 처리하도록 했다.


$board = 'bbs_'.$code;
$sql = "SELECT * FROM $board WHERE main_no=$main_no";

 

$code 변수에는 예를 들어 앞서 생성한 notice  라는 코드값이 들어가게 된다.
이렇게 하면 여러 개의 게시판을 생성했어도 처리가 가능하다.

지금 구현이 안된 것이 비밀글 작성 기능과 공지글 처리 부분인데, 아마도 스키마가 다시 한번 수정이 될 것이다.


'PHP > 게시판 만들기' 카테고리의 다른 글

PHP RSS feed 만들기  (0) 2009.07.15
MVC 모델로 본 게시판 만들기  (0) 2009.02.15
해결못한 한글입출력 문제  (1) 2009.02.12
게시판 DB 스키마 정리  (0) 2009.02.12
게시판 검색 기능 수정  (0) 2009.02.11