Composite Key

복합 키는 행을 식별하는 컬럼 조합이다

수강처럼 두 개 이상의 부모 개체가 함께 행을 정하면, 그 외래키 조합이 기본키 후보가 된다.

컬럼
역할
식별 참여
student_id
FK
PK part 1
course_id
FK
PK part 2
term
속성
PK part 3
grade
일반 속성
식별에는 참여하지 않음
복합 자연키 DDL
CREATE TABLE enrollments (
  student_id NUMBER NOT NULL,
  course_id  NUMBER NOT NULL,
  term       VARCHAR2(10) NOT NULL,
  grade      VARCHAR2(2),
  PRIMARY KEY (student_id, course_id, term)
);

PK에 들어간 컬럼은 함께 모였을 때만 한 행을 식별한다.

복합 자연키 유지 업무 의미가 안정적일 때

주문상세의 주문번호+상품번호처럼 조합 자체가 의미를 가진다.

대리키 + UNIQUE 조합이 길거나 바뀔 수 있을 때

id를 PK로 두고 자연키 조합은 UNIQUE 제약으로 중복만 막는다.