복합 키(Composite Key)란 무엇인가?
RDBMS에서 복합 키(Composite Key)란 두 개 이상의 속성, 즉 두 개 이상의 컬럼을 조합하여 구성한 기본 키(Primary Key)를 의미합니다. 하나의 컬럼만으로는 테이블의 각 행(row)을 고유하게 식별할 수 없는 경우, 여러 컬럼의 값을 묶어 하나의 기본 키로 사용하는 방식입니다.
중요한 점은 개별 컬럼의 값이 중복될 수는 있지만, 컬럼들의 조합 전체는 테이블 내에서 반드시 유일해야 한다는 것입니다. 또한 복합 키를 구성하는 모든 컬럼은 NULL 값을 가질 수 없습니다.
예제 1: 주문(Order) 테이블
가장 대표적인 복합 키 예시를 살펴보겠습니다.

아래와 같이 복합 키는 OrderID와 ProductID 두 컬럼의 조합으로 정의됩니다.
| {OrderID, ProductID} |
OrderID 하나만으로는 하나의 주문에 여러 상품이 포함될 수 있어 행을 고유하게 식별하기 어렵습니다. 마찬가지로 ProductID 하나만으로도 동일한 상품이 서로 다른 주문에 반복해서 나타날 수 있습니다. 그러나 두 컬럼을 조합하면 “어떤 주문의 어떤 상품”인지 명확해지므로, 각 주문 상세 항목을 유일하게 식별할 수 있게 됩니다.
예제 2: 학생(Student) 테이블
이번에는 학생 정보를 담은 테이블로 또 다른 예제를 살펴보겠습니다.
<Student>
| StudentID | StudentEnrollNo | StudentMarks | StudentPercentage |
|---|---|---|---|
| S001 | 0721722 | 570 | 90 |
| S002 | 0721790 | 490 | 80 |
| S003 | 0721766 | 440 | 86 |
위 테이블에서는 StudentID와 StudentEnrollNo, 이 두 개의 속성을 조합하여 기본 키로 사용합니다. 즉, 두 컬럼의 값이 함께 모여야 각 학생 레코드를 고유하게 식별할 수 있습니다. 이처럼 테이블이 두 개 이상의 속성을 기본 키로 가질 때, 그 조합이 바로 복합 키가 됩니다.
복합 키의 주요 특징
- 두 개 이상의 컬럼(속성)으로 구성됩니다.
- 개별 컬럼은 중복 값을 가질 수 있지만, 조합된 값 전체는 유일해야 합니다.
- 복합 키를 구성하는 모든 컬럼은 NOT NULL 제약을 가져야 합니다.
- 다른 테이블에서 복합 키를 참조하려면 동일한 컬럼 구성의 복합 외래 키(Foreign Key)가 필요합니다.
- 설계가 지나치게 복잡해질 경우, 자동 증가 값 같은 인조 키(Surrogate Key)를 단일 기본 키로 사용하는 대안도 고려할 수 있습니다.
마무리
정리하면, 두 개 이상의 속성으로 구성된 기본 키를 복합 키(Composite Key)라고 부릅니다. 단일 컬럼만으로 고유성을 보장하기 어려운 테이블을 설계할 때 복합 키는 매우 유용한 도구이며, 데이터의 무결성을 지키는 데 중요한 역할을 합니다.