CI4 마이그레이션으로 DDL 관리 — PostgreSQL 특화 타입 마이그레이션 작성법
📋 실습 안내
✏️ CODE EDITOR (JSX)
▶ 실행 버튼을 눌러 코드를 테스트하세요.
👁️ 내 미리보기
내 코드 실행 결과
🎯 완성 미리보기
목표
위 에디터 코드를 수정해서 이 결과물과 똑같이 만들어보세요!
💡 TODO 주석을 채워서 위 결과물처럼 동작하게 만들어보세요
🤖 AI 선생님에게 질문하기
이번 강의 전용
▼
선생님이 답변 중이에요...
⚠️ 학습 관련 질문만 답변합니다. 관련 없는 질문은 자동으로 학습으로 유도됩니다.
Q1. PostgreSQL에서 자동 증가 기본키를 설정할 때 MySQL의 AUTO_INCREMENT에 해당하는 타입은?
💡 PostgreSQL에서는 SERIAL(INT) 또는 BIGSERIAL(BIGINT)을 사용합니다. SERIAL은 내부적으로 SEQUENCE를 생성하고 NOT NULL DEFAULT nextval()을 자동 설정합니다. MySQL의 AUTO_INCREMENT와 동일한 역할을 합니다.
Q2. CI4 마이그레이션에서 PostgreSQL ENUM 타입을 올바르게 사용하는 순서는?
💡 PostgreSQL의 ENUM은 먼저 'CREATE TYPE 타입명 AS ENUM (...)' 문으로 타입을 정의한 후, addField에서 type 키에 해당 타입명을 문자열로 지정합니다. down() 메서드에서는 테이블 삭제 후 반드시 DROP TYPE도 실행해야 합니다.
Q3. PostgreSQL에서 JSON과 JSONB의 차이점 중 올바른 설명은?
💡 JSONB는 JSON을 파싱하여 바이너리 형태로 저장하므로 GIN 인덱스를 생성할 수 있어 검색 성능이 뛰어납니다. 반면 JSON은 원본 텍스트 그대로 저장하여 인덱싱이 불가능합니다. 실무에서는 거의 항상 JSONB를 사용합니다.
Q4. CI4 마이그레이션 `down()` 메서드의 올바른 역할은?
💡 down() 메서드는 up()에서 수행한 DDL 작업을 역순으로 취소합니다. 테이블 생성 → 테이블 삭제, 컬럼 추가 → 컬럼 삭제, ENUM 타입 생성 → ENUM 타입 삭제 순으로 롤백 로직을 작성합니다. 'php spark migrate:rollback' 명령으로 실행됩니다.
Q5. PostgreSQL에서 JSONB 컬럼에 효율적인 인덱스를 생성하는 방법은?
💡 JSONB 컬럼의 전체 키/값 구조를 인덱싱하려면 GIN(Generalized Inverted Index)을 사용합니다. GIN 인덱스는 JSONB의 모든 키와 값을 인덱싱하여 @>, ?, ?& 등의 연산자를 빠르게 처리합니다. BTREE는 JSONB 전체 비교에만 사용 가능합니다.
😅
아쉽네요!
점수: 0점 — 70점 이상이 되어야 통과합니다.