🌿 중급 DB
Composite Key가 뭔가요?
쉽게 이해하기
교실에서 학생을 구분할 때 '이름'만으로는 동명이인이 있을 수 있어요. 그래서 '학년 + 반 + 이름'을 조합하면 확실하게 구분할 수 있죠. 여러 정보를 합쳐야 유일하게 특정할 수 있는 경우가 있어요.
핵심 정리
두 개 이상의 컬럼을 조합해서 만든 Primary Key로, 하나의 컬럼만으로는 고유성을 보장할 수 없을 때 사용해요.
자세히 알아보기
Composite Key(복합키)는 둘 이상의 컬럼을 조합해서 만든 Primary Key예요. 하나의 컬럼으로는 유일성을 보장할 수 없지만, 여러 컬럼을 합치면 고유하게 식별할 수 있을 때 사용합니다.
대표적인 예시는 수강신청 테이블이에요. 한 학생이 여러 강의를 들을 수 있고, 한 강의에 여러 학생이 있을 수 있죠. 이때 '학생ID'만으로는 중복되고, '강의ID'만으로도 중복돼요. 하지만 '(학생ID, 강의ID)' 조합은 절대 중복되지 않죠. 이 두 컬럼을 합쳐서 Composite Key로 만들면 됩니다.
다른 예로는 예약 시스템이 있어요. 영화관 좌석 예매에서 '상영관 + 상영시간 + 좌석번호'를 조합해야 유일한 예매가 되죠. 같은 좌석이라도 다른 시간대면 다른 예매이고, 같은 시간대라도 다른 좌석이면 다른 예매니까요.
장점은 별도의 ID 컬럼 없이 자연스러운 키를 사용할 수 있다는 거예요. 하지만 단점도 있어요. 여러 컬럼을 참조해야 하므로 Foreign Key 설정이 복잡해지고, 인덱스 크기가 커지며, JOIN 성능이 떨어질 수 있어요. 그래서 실무에서는 Composite Key 대신 auto_increment ID를 Primary Key로 두고, Composite Key는 Unique 제약으로 설정하는 경우가 많습니다.