Skip to content

테이블 생성 가이드

dictionary-api의 실제 테이블(t_board 등) 기준으로 정리한다. 마이그레이션 파일로 테이블을 만드는 방법(디렉토리 구조, 버전 채번)은 데이터 형상관리 가이드 참고 — 이 문서는 테이블/컬럼 설계 규칙에 집중한다.

  1. 컬럼명은 소문자 스네이크 케이스로 쓴다(board_id, photo_ph) — 애플리케이션 코드(Java 엔티티)의 camelCase(boardId, photoPath)와는 ORM(JPA @Column(name = "..."))이 매핑을 담당한다.
  2. Y/N 플래그 컬럼(use_yn, admin_yn, lock_yn, guest_yn 등)은 VARCHAR(1)이 아니라 CHAR(1)을 쓴다 — 값 길이가 항상 고정이라는 의미를 컬럼 타입에 그대로 드러내기 위함이다(저장 공간 차이는 길이 1 기준으로 무시할 수준).

모든 테이블은 등록/수정 이력을 남기는 공통 컬럼 6개를 포함한다.

No. 컬럼명 데이터 타입 설명
1 create_dt TIMESTAMP 등록 일시
2 create_user_id INTEGER 등록자 ID
3 create_ip VARCHAR(40) 등록 IP
4 update_dt TIMESTAMP 수정 일시
5 update_user_id INTEGER 수정자 ID
6 update_ip VARCHAR(40) 수정 IP
예: t_board 감사 컬럼
create_dt TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '등록일시',
create_user_id INTEGER NULL DEFAULT NULL COMMENT '등록 ID',
create_ip VARCHAR(40) NULL DEFAULT NULL COMMENT '등록 IP',
update_dt TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '수정일시',
update_user_id INTEGER NULL DEFAULT NULL COMMENT '수정 ID',
update_ip VARCHAR(40) NULL DEFAULT NULL COMMENT '수정 IP',
t_board
CREATE TABLE IF NOT EXISTS t_board (
board_id BIGINT AUTO_INCREMENT NOT NULL COMMENT '게시물ID',
title VARCHAR(200) NULL COMMENT '제목',
content VARCHAR(1000) NOT NULL COMMENT '본문',
create_dt TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '등록일시',
create_user_id INTEGER NULL DEFAULT NULL COMMENT '등록 ID',
create_ip VARCHAR(40) NULL DEFAULT NULL COMMENT '등록 IP',
update_dt TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '수정일시',
update_user_id INTEGER NULL DEFAULT NULL COMMENT '수정 ID',
update_ip VARCHAR(40) NULL DEFAULT NULL COMMENT '수정 IP',
PRIMARY KEY(board_id)
) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
ALTER TABLE t_board COMMENT = '게시판';
ALTER TABLE t_board AUTO_INCREMENT = 1000;