Day 49 · 4/5
🌿 중급 DB

컴포지트 키란?

쉽게 이해하기

학교에서 '3학년 2반 15번'처럼 여러 정보를 조합해서 학생을 식별하는 것과 같아요. 한 가지 정보만으로는 구분이 안 될 때, 여러 컬럼을 합쳐서 유일하게 만드는 방식이에요.

핵심 정리

두 개 이상의 컬럼을 합쳐서 만든 고유 식별자예요.

자세히 알아보기

컴포지트 키(Composite Key)는 두 개 이상의 컬럼을 조합해서 레코드를 고유하게 식별하는 키예요. Primary Key가 단일 컬럼일 필요는 없고, 여러 컬럼의 조합으로도 만들 수 있어요. 예를 들어, '수강신청' 테이블을 만든다면 '학생ID'와 '과목ID'를 합쳐서 Primary Key로 지정할 수 있어요. 같은 학생이 여러 과목을 들을 수 있고, 같은 과목을 여러 학생이 들을 수 있지만, (학생ID, 과목ID) 조합은 유일하니까요. 실무에서는 다대다(Many-to-Many) 관계를 표현하는 중간 테이블에서 자주 사용돼요. 예를 들어 '좋아요' 기능을 만든다면, (사용자ID, 게시글ID)를 컴포지트 키로 지정해서 한 사용자가 같은 게시글에 중복으로 좋아요를 누를 수 없게 만들어요. 다만 컴포지트 키는 단점도 있어요. 외래 키로 참조할 때 여러 컬럼을 함께 참조해야 하므로 복잡해지고, 인덱스 크기도 커져요. 그래서 실무에서는 컴포지트 키 대신 자동 증가하는 ID를 Primary Key로 쓰고, 두 컬럼의 조합에 UNIQUE 제약을 거는 방식을 선호하기도 해요.