테이블 생성 가이드
dictionary-api의 실제 테이블(t_board 등) 기준으로 정리한다. 마이그레이션 파일로 테이블을 만드는
방법(디렉토리 구조, 버전 채번)은 데이터 형상관리 가이드
참고 — 이 문서는 테이블/컬럼 설계 규칙에 집중한다.
테이블 규칙
Section titled “테이블 규칙”- 테이블명은
t_접두어 + 소문자 스네이크 케이스로 짓는다(t_board,t_domain). - 기본키는
t_를 뺀 테이블 이름에_id를 붙인BIGINT AUTO_INCREMENT컬럼이다(t_board→board_id). 채번은AUTO_INCREMENT = 1000부터 시작한다. - 모든 컬럼에
COMMENT를 달고, 테이블 설명은ALTER TABLE ... COMMENT = '...'로 남긴다. - MySQL은
ENGINE=InnoDB ROW_FORMAT=DYNAMIC을 쓴다. - 고유 인덱스는
ux_{테이블명}_{컬럼명}으로 짓는다(ux_t_domain_suffix).
컬럼명 규칙
Section titled “컬럼명 규칙”- 컬럼명은 소문자 스네이크 케이스로 쓴다(
board_id,photo_ph) — 애플리케이션 코드(Java 엔티티)의 camelCase(boardId,photoPath)와는 ORM(JPA@Column(name = "..."))이 매핑을 담당한다. Y/N플래그 컬럼(use_yn,admin_yn,lock_yn,guest_yn등)은VARCHAR(1)이 아니라CHAR(1)을 쓴다 — 값 길이가 항상 고정이라는 의미를 컬럼 타입에 그대로 드러내기 위함이다(저장 공간 차이는 길이 1 기준으로 무시할 수준).
공통 감사(audit) 컬럼
Section titled “공통 감사(audit) 컬럼”모든 테이블은 등록/수정 이력을 남기는 공통 컬럼 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 |
create_dt/update_dt는 DEFAULT CURRENT_TIMESTAMP로, 나머지 네 컬럼은 DEFAULT NULL로 선언한다(아래 전체
생성 스크립트 참고).
전체 생성 스크립트 예시
Section titled “전체 생성 스크립트 예시”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 '본문', photo_ph VARCHAR(200) 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 = 'CRUD 샘플 게시판';ALTER TABLE t_board AUTO_INCREMENT = 1000;