Engineering Note

[Database] 게시판 테이블 만들기 SQL 본문

Computer Science/Database

[Database] 게시판 테이블 만들기 SQL

Software Engineer Kim 2025. 10. 4. 15:25

프로젝트에서 JPA를 사용하면서 기본적인 쿼리도 같이 익혀야 겠다고 생각해서 정리하고 있습니다. JPA가 대부분 해주지만 문제를 파악하거나 직접 DB에 접근해서 문제를 해결해야할 일도 있기 때문에 SQL도 같이 익혀두는 과정도 필요하다고 생각합니다. 

 

기본적인 게시판의 테이블을 설계해보고 workbench에서 쿼리문을 실행해보면서 SQL을 정리하고 있습니다.

 

오늘은 DDL을 연습했습니다.

CREATE DATABASE blog_test;

use blog_test;

-- 1. Member 테이블 (회원)
CREATE TABLE member (
    member_id BIGINT PRIMARY KEY AUTO_INCREMENT,
    email VARCHAR(100) UNIQUE,
    name VARCHAR(50) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 2. Board 테이블 (게시글)
CREATE TABLE board (
    board_id BIGINT PRIMARY KEY AUTO_INCREMENT,
    title VARCHAR(200) NOT NULL,
    content TEXT,
    member_id BIGINT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (member_id) REFERENCES member(member_id)
);

-- 3. Comment 테이블 (댓글)
CREATE TABLE comment (
    comment_id BIGINT PRIMARY KEY AUTO_INCREMENT,
    content TEXT NOT NULL,
    board_id BIGINT NOT NULL,
    member_id BIGINT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (board_id) REFERENCES board(board_id),
    FOREIGN KEY (member_id) REFERENCES member(member_id)
);

-- 4. Like 테이블 (좋아요)
CREATE TABLE likes (
    like_id BIGINT PRIMARY KEY AUTO_INCREMENT,
    member_id BIGINT NOT NULL,
    comment_id BIGINT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (member_id) REFERENCES member(member_id),
    FOREIGN KEY (comment_id) REFERENCES comment(comment_id),
    CONSTRAINT uk_member_comment UNIQUE (member_id, comment_id)
);

 

 

마지막에 좋아요 기능에는 회원 당 댓글에 한 번만 좋아요를 할 수 있어야 하기 때문에 member_id, comment_id 키에 UNIQUE 설정을 해주었다.

Comments