작년에 동아리 활동을 하면서 만든 게시판인데, 당시 일련의 사건을 겪게 되면서 '일단 구현이라도 하자'는 생각으로 만들다 보니 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 |