본문 바로가기

[게시판] 데이터베이스 설계

작년에 동아리 활동을 하면서 만든 게시판인데, 당시 일련의 사건을 겪게 되면서 '일단 구현이라도 하자'는 생각으로 만들다 보니 DB 설계와 코드가 좀 조악하다. 때문에 포스팅 하기가 부끄러워서 계속 미뤘는데, 아예 가져다 쓰는 것은 무리일지라도 처음 게시판을 만들어 보는 분들이 참고할 정도는 되지 않을까 싶어 일단 써두기로 했다. 
 
사실 친구의 도움이 없었으면 이 조악한 게시판조차 못 만들었다. 방에서 재워주며 도와준 대학 동기 이 모 군에게 진심으로 (이미 소고기로 전했지만) 감사의 말을 전한다. Shout out to Lee!
 
 
 
사용자, 게시글, 댓글의 총 세 개의 테이블이 필요하다고 생각했다. 각 테이블은 다음과 같이 설계했다.
 
1. 사용자: user
 

 

CREATE TABLE user (

seq INT NOT NULL AUTO_INCREMENT,

name varchar(24) NOT NULL,

id varchar(24) NOT NULL,

password varchar(60),

PRIMARY KEY(seq, id)

);

 
seq: 사용자의 고유 번호. auto_increment이므로 1부터 시작해 1씩 증가하며, 식별자로 쓰인다.
name: 사용자 이름.
id: 사용자의 아이디.
password: 사용자의 패스워드.
 
 
 
2. 게시글: post
 

 

CREATE TABLE post (
seq INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
writer VARCHAR(24) NOT NULL,
posted DATETIME NOT NULL,
subject LONGTEXT NOT NULL,
content LONGTEXT NOT NULL,
id VARCHAR(24) NOT NULL
);

 
seq: 게시글 고유 번호.
writer: 게시글 작성자의 이름. user 테이블의 name 필드가 저장된다.
posted: 게시글 최초 작성 날짜. YYYY-MM-dd 형식.
subject: 게시글 제목.
content: 게시글 내용.
id: 게시글 작성자의 아이디.
 
 
 
3. 댓글: comment
 

 

CREATE TABLE comment (
seq INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
postSeq INT NOT NULL,
writer VARCHAR(20) NOT NULL,
content LONGTEXT NOT NULL,
commented DATETIME NOT NULL,
parent INT DEFAULT 0
);

 
seq: 댓글의 고유 번호.
postSeq: 댓글이 속한 게시글의 고유 번호(seq).
writer: 댓글 작성자의 이름.
content: 댓글 내용
commented: 댓글 최초 작성 날짜. 형식은 게시글과 같은 YYYY-MM-dd.
parent: 대댓글일 경우 원댓글의 고유 번호(seq)가 저장된다. 이 때 AUTO_INCREMENT 속성은 1부터 시작해 증가시키므로 디폴트 값은 0으로 두었다. 따라서 parent의 값이 0이라는 것은 이 댓글은 상위 댓글임을 의미한다.

'Programming > Web' 카테고리의 다른 글

[게시판] 게시글 수정  (0) 2019.07.17
[게시판] 게시글 작성  (0) 2019.07.16
[게시판] 회원가입  (0) 2019.07.16
[게시판] DB 연결, 로그인 세션 설정 + 로그인  (0) 2019.07.12
GET 방식과 POST 방식의 차이  (0) 2019.07.09