테이블 설계 - comment(자게 댓글), monthly_bakery(이달의빵집)

·2024년 11월 19일

개인프로젝트

목록 보기
2/11

comment 테이블 (자유게시판 댓글)

CREATE TABLE reply (
    cidx INT AUTO_INCREMENT PRIMARY KEY,        -- 댓글 고유 번호
    midx INT NOT NULL,                          -- 회원 ID
    bidx INT NOT NULL,                          -- 게시글 ID
    ccontents TEXT NOT NULL,                    -- 댓글 내용
    cwriter VARCHAR(50) NOT NULL,               -- 댓글 작성자 이름
    cip VARCHAR(45) NOT NULL,                   -- 작성자 IP
    writeday DATETIME DEFAULT CURRENT_TIMESTAMP, -- 작성일
    delyn CHAR(1) DEFAULT 'N'                   -- 삭제 여부 ('N' 또는 'Y')
);

애초에 테이블 생성할 때 외래키 연결하고 싶다면 이렇게 넣어라
FOREIGN KEY (midx) REFERENCES member(midx), -- 회원 테이블과 연결
FOREIGN KEY (bidx) REFERENCES board(bidx) -- 게시글 테이블과 연결

외래 키 추가

외래 키 제약 조건을 추가하려면 ALTER TABLE 구문을 사용하여 외래 키를 추가합니다. 이 예시에서는 midx와 bidx 컬럼에 대한 외래 키를 추가합니다:

-- 회원 테이블과 외래 키 연결 (midx)
ALTER TABLE reply
ADD CONSTRAINT fk_reply_member
FOREIGN KEY (midx) REFERENCES member(midx);

-- 게시글 테이블과 외래 키 연결 (bidx)
ALTER TABLE reply
ADD CONSTRAINT fk_reply_board
FOREIGN KEY (bidx) REFERENCES board(bidx);

추가 해야할지?

댓글 수정 시간 (modifyday)

댓글이 수정될 수 있으므로 수정 시간을 기록하는 컬럼을 추가하는 것이 유용할 수 있습니다. 댓글을 수정한 시간을 추적하면, 댓글의 변화를 관리할 수 있습니다.

modifyday DATETIME DEFAULT NULL -- 댓글 수정 시간

수정 시간이 없다면 댓글이 수정된 적이 있는지 알 수 없게 되기 때문에, 이 컬럼을 추가하는 것이 좋습니다.

2. 댓글의 상위 댓글 여부 (parent_cidx)

댓글 시스템이 대댓글을 지원하는 경우, 부모 댓글 ID를 추가하여 대댓글 구조를 만들 수 있습니다. 이를 통해 한 댓글에 대한 여러 대댓글을 계층적으로 관리할 수 있습니다.

parent_cidx INT DEFAULT NULL -- 상위 댓글의 cidx (NULL이면 일반 댓글)

이 컬럼은 댓글이 대댓글인 경우, 그 댓글이 참조하는 부모 댓글의 cidx 값을 저장합니다. 이 컬럼을 통해 댓글과 대댓글의 관계를 명확히 할 수 있습니다.


monthly_bakery(이달의빵집) 테이블

viewcnt나 recom, filename 같은거 컬럼명 중복되면 안되겠지 ?

CREATE TABLE monthly_bakery (
    mbidx INT AUTO_INCREMENT PRIMARY KEY,  -- 게시물 고유 ID
    msubject VARCHAR(255) NOT NULL,        -- 제목
    mcontents TEXT NOT NULL,               -- 내용
    filename VARCHAR(255),                 -- 파일명 (이미지나 첨부파일)
    writeday DATETIME DEFAULT CURRENT_TIMESTAMP, -- 작성일 (현재 시간 자동 입력)
    viewcnt INT DEFAULT 0,                 -- 조회수 (기본값 0)
    delyn CHAR(1) DEFAULT 'N',             -- 삭제 여부 (Y: 삭제, N: 정상)
    ip VARCHAR(45),                        -- IP 주소
    FOREIGN KEY (midx) REFERENCES members(midx) -- 관리자만 글쓰기가 가능하므로 회원 테이블과 연결
);

혹시 추가할 컬럼..?

게시물 노출 상태 (Is Visible)

관리자가 특정 게시물을 숨길 수 있도록 "노출 상태"를 제어할 수 있는 컬럼을 추가할 수 있다. 관리자가 검토 후 게시물을 잠시 숨기거나, 비공개로 설정할 수 있다.

is_visible CHAR(1) DEFAULT 'Y', -- 'Y'는 공개, 'N'은 비공개

추천수

게시물에 대한 "추천수"를 기록할 수 있는 컬럼을 추가하여, 사용자가 해당 게시물에 추천(좋아요 등)을 할 수 있도록 할 수 있다.

like INT DEFAULT 0, -- 좋아요

0개의 댓글