**복합키(Composite Key)**란,
**두 개 이상의 속성(Attribute)**을 조합하여 **유일한 식별자(Primary Key 또는 Candidate Key)**로 사용하는 키이다.
즉, 단일 속성만으로는 유일 식별이 불가능할 때, 여러 속성을 조합하여 엔터티의 무결성을 확보하는 방법이다.
엔터티 내에서 단일 속성만으로는 유일성 확보가 어려운 경우
엔터티 간 종속 관계 표현
정규화 및 무결성 유지
구분 | 설명 |
---|---|
식별 관계 (Identifying Relationship) | 부모의 기본키가 자식의 기본키로 포함됨 → 자식의 기본키는 복합키 |
비식별 관계 (Non-Identifying) | 부모의 기본키는 자식의 외래키로만 존재함 → 자식의 기본키는 별도로 존재 가능 |
논리 모델에서의 복합키 구성 예:
주문상세(OrderDetail)
- 주문번호(OrderID) [PK]
- 상품코드(ProductID) [PK]
- 수량(Qty)
물리 모델(Cassandra 등 NoSQL):
PRIMARY KEY ((OrderID), ProductID)
PRIMARY KEY (col1, col2)
CREATE TABLE Enrollments (
student_id INT,
course_id INT,
enroll_date DATE,
PRIMARY KEY (student_id, course_id)
);
NoSQL에서는 복합키 개념이 파티셔닝과 정렬을 동시에 통제하는 도구로 발전함
PRIMARY KEY ((partition_key), clustering_column1, clustering_column2)
키 역할 | 설명 |
---|---|
Partition Key | 물리적으로 데이터 분산(샤딩)의 기준 |
Clustering Column | 파티션 내에서 데이터 정렬 순서를 결정 |
CREATE TABLE user_logs (
user_id TEXT,
log_date DATE,
log_time TIME,
action TEXT,
PRIMARY KEY ((user_id, log_date), log_time)
);
user_id + log_date
→ 파티션 키: 분산 기준log_time
→ 클러스터링 키: 정렬 기준사례 | 설명 |
---|---|
주문 상세 테이블 | 주문번호 + 상품코드 조합으로 고유 식별 |
사용자 활동 로그 | 사용자ID + 날짜 + 시간 → 조회 및 정렬 기반 |
IoT 센서 데이터 | 장비ID + 측정일시 → 고속 수집 및 조회 성능 확보 |