6-1. 복합 키란?

복합 키(Composite Key) 는 두 개 이상의 컬럼을 묶어 하나의 키로 사용하는 것을 말한다.

복합 키는 주로 다음 경우에 등장한다.


6-2. 자연 키를 복합 키로 쓸 때 생기는 문제

자연 키를 그대로 묶어서 복합 키를 만들면 다음과 같은 문제가 생긴다.

  1. 키 변경 영향 범위가 더 커진다
  2. 외래 키가 과도하게 비대해진다
  3. ORM 사용이 어려워진다

6-3. 현대적인 복합 키 대안 – 대리 키 + UNIQUE 조합

복합 키 문제를 해결하는 현대적인 대안은 다음과 같다.

  1. 기본 키(PK)는 항상 단일 대리 키를 사용한다.
  2. 비즈니스적으로 유일해야 하는 복합 컬럼 묶음에는 UNIQUE 제약을 건다.

예시를 보자.

CREATE TABLE screening (
  screening_id   BIGINT AUTO_INCREMENT PRIMARY KEY, -- 대리 키
  movie_title    VARCHAR(200) NOT NULL,
  screening_dt   DATETIME     NOT NULL,
  theater_no     INT          NOT NULL,

  -- 비즈니스적으로는 (movie_title, screening_dt, theater_no)가 유일해야 한다.
  UNIQUE (movie_title, screening_dt, theater_no)
);