복합키(Composite Key)

agnusdei·2025년 7월 22일
0

ICT

목록 보기
27/143

📌 복합키(Composite Key)에 대한 기술사 수준 설명


1. 정의

**복합키(Composite Key)**란,
**두 개 이상의 속성(Attribute)**을 조합하여 **유일한 식별자(Primary Key 또는 Candidate Key)**로 사용하는 키이다.

즉, 단일 속성만으로는 유일 식별이 불가능할 때, 여러 속성을 조합하여 엔터티의 무결성을 확보하는 방법이다.


2. 등장 배경 및 필요성

  1. 엔터티 내에서 단일 속성만으로는 유일성 확보가 어려운 경우

    • 예: 주문 상세(OrderDetail) 테이블에서 주문 번호만으로는 행을 구분할 수 없음 → 상품 ID 등 추가 조합 필요
  2. 엔터티 간 종속 관계 표현

    • 부모 테이블의 식별자 속성(예: 외래키)을 포함하여 자식 테이블의 기본키 구성 시 사용 (식별 관계)
  3. 정규화 및 무결성 유지

    • 복합키는 제2정규형(2NF) 만족을 위한 기준이 되며, 부분 함수 종속 문제를 식별할 수 있는 구조적 기준 제공

3. 데이터 모델링 관점

3.1 식별 관계와 비식별 관계

구분설명
식별 관계 (Identifying Relationship)부모의 기본키가 자식의 기본키로 포함됨 → 자식의 기본키는 복합키
비식별 관계 (Non-Identifying)부모의 기본키는 자식의 외래키로만 존재함 → 자식의 기본키는 별도로 존재 가능

3.2 논리/물리 모델 예

  • 논리 모델에서의 복합키 구성 예:

    주문상세(OrderDetail)
    - 주문번호(OrderID) [PK]
    - 상품코드(ProductID) [PK]
    - 수량(Qty)
  • 물리 모델(Cassandra 등 NoSQL):

    PRIMARY KEY ((OrderID), ProductID)

4. 관계형 데이터베이스(RDBMS)에서의 복합키

  • 기본키 제약조건: PRIMARY KEY (col1, col2)
  • 유일성 및 무결성 확보: 복합키 조합으로만 레코드를 식별할 수 있음
  • 인덱스 생성 기준: 복합 인덱스에서 col1은 선행 조건, col2는 후행 조건 → WHERE 절 조건 순서 주의 필요

RDBMS 예시 (PostgreSQL, Oracle 등)

CREATE TABLE Enrollments (
  student_id INT,
  course_id INT,
  enroll_date DATE,
  PRIMARY KEY (student_id, course_id)
);

5. NoSQL(Cassandra 등)에서의 복합키

NoSQL에서는 복합키 개념이 파티셔닝과 정렬을 동시에 통제하는 도구로 발전함

Cassandra의 복합키 구조

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 → 클러스터링 키: 정렬 기준

6. 복합키의 장단점

✅ 장점

  • 유일성 확보 및 무결성 유지
  • 데이터 정규화 구조와 일치
  • 외래키 연결성 및 관계 표현 용이
  • NoSQL에서는 복합키를 통한 정렬성과 범위 조회 가능

❌ 단점

  • 복잡도 증가: JOIN, 인덱싱 시 복합 조건 필요
  • 성능 저하 가능성: 잘못된 키 순서로 인한 인덱스 미활용
  • NoSQL에서 지나치게 많은 Clustering Key는 쓰기 병목 가능

7. 실무 활용 사례

사례설명
주문 상세 테이블주문번호 + 상품코드 조합으로 고유 식별
사용자 활동 로그사용자ID + 날짜 + 시간 → 조회 및 정렬 기반
IoT 센서 데이터장비ID + 측정일시 → 고속 수집 및 조회 성능 확보

8. 결론

  • 복합키는 유일성 확보와 관계 표현, 정규화 구조 구현의 핵심 개념으로 관계형 데이터 모델의 근간을 이루며,
  • NoSQL에서도 복합키는 파티셔닝 + 정렬 제어를 위한 필수 구조로 활용된다.
  • 실무에서는 단순 식별을 넘어, 데이터 저장 구조 설계, 샤딩 전략, 성능 최적화 등 다양한 요소와 연계되므로,
    논리모델과 물리모델 간 일관성 있는 설계 전략이 요구된다.

profile
DevSecOps ⚙️ + CTF🚩

0개의 댓글