식별자(Identifier) 완벽 정리

식별자 정의·특징·분류·식별관계 vs 비식별관계·본질 vs 인조까지 한눈에 정리

1. 식별자의 정의

식별자란?

하나의 엔터티에 구성되어 있는 여러 개의 속성 중에 엔터티를 대표하는 속성으로, 각 인스턴스를 유일하게 구분할 수 있는 속성 또는 속성의 조합이다.

식별자의 4가지 특징

  • 유일성 — 각 인스턴스를 고유하게 구분할 수 있어야 함
  • 최소성 — 최소한의 속성 수로 유일성을 만족
  • 불변성 — 자주 변하지 않는 값이어야 함
  • 존재성 — NULL이 아닌 값이 반드시 존재해야 함 (NOT NULL)

2. 식별자 분류 체계

4가지 분류 기준

분류 기준유형설명
대표성 여부주식별자엔터티를 대표, PK로 구현
보조식별자유일성은 있지만 대표 아님, Unique Key로 구현
생성 여부본질식별자(내부)업무에 의해 자연 발생
인조식별자(외부)인위적으로 만든 식별자
속성 수단일식별자하나의 속성으로 식별
복합식별자두 개 이상 속성의 조합
대체 여부본질식별자업무에서 직접 만들어진 식별자
대리식별자(대체)복합식별자 대신 인위적 단일 속성 부여

3. 주식별자 vs 보조식별자

주식별자와 보조식별자 비교

구분주식별자보조식별자
유일성OO
대표성O (엔터티 대표)X
물리 구현Primary KeyUnique Key(Index)
NULL 허용불가 (NOT NULL)불가 (NOT NULL)
FK 참조다른 엔터티에서 FK로 참조FK 참조 대상 아님

주식별자 선정 기준

  • 해당 업무에서 자주 이용되는 속성을 선정
  • 명칭이나 내역 등은 부적절 (이름은 변경 가능, 중복 가능)
  • 속성의 수가 적은 것을 우선 선정 (복합키보다 단일키 선호)

4. 본질식별자 vs 인조식별자

비교 테이블

구분본질식별자인조식별자
정의업무에 의해 만들어진 식별자인위적으로 만든 식별자
별칭자연키(Natural Key)대리키(Surrogate Key)
예시주민등록번호, 사업자등록번호순번(SEQ), 일련번호, 시스템ID
장점업무 의미 있음, 직관적단순, 불변, 복합키 해소
단점변경 가능성, 복합키 될 수 있음업무 의미 없음, 중복 데이터 발생 가능

인조식별자 사용 시점

  • • 본질식별자가 너무 길거나 복합키인 경우
  • • 본질식별자가 변경 가능성이 있는 경우
  • 성능 향상을 위해 단일 컬럼 PK가 필요한 경우

인조식별자의 문제점

인조식별자를 남용하면 중복 데이터 발생 가능. 본질식별자를 PK로 사용했다면 자연스럽게 방지되는 중복이, 인조식별자에서는 별도 Unique 제약 없이 동일 데이터가 여러 행으로 입력될 수 있다.

5. 복합식별자

복합식별자란?

두 개 이상의 속성을 조합하여 인스턴스를 유일하게 식별하는 식별자이다.

예시:

수강(학번 + 과목코드) → 복합식별자

주문상세(주문번호 + 상품번호) → 복합식별자

복합식별자 해소 → 대리식별자

복합식별자의 속성이 많아지면 대리식별자(인조식별자)로 대체하는 것을 고려한다. 예: (주문번호 + 상품번호 + 옵션코드) → 주문상세번호(SEQ) 하나로 대체.

6. 식별관계 vs 비식별관계

핵심 비교 테이블

구분식별관계비식별관계
정의부모 PK가 자식의 PK에 포함부모 PK가 자식의 일반 속성(FK)
ERD 표기실선점선
FK 위치자식 PK 영역자식 일반 속성 영역
NULL 허용불가 (PK이므로 NOT NULL)가능 (선택 참여 시 NULL)
자식 독립성부모 없이 존재 불가부모 없이도 존재 가능
강한/약한강한 관계약한 관계
예시주문 → 주문상세(주문번호가 PK 일부)부서 → 사원(부서코드가 FK)

식별관계 상세

부모 엔터티의 식별자가 자식 엔터티의 주식별자의 구성요소가 되는 관계. 자식은 부모 없이 존재할 수 없다.

주문(주문번호) → 주문상세(주문번호 + 상품번호)

→ 주문상세의 PK에 주문번호가 포함 = 식별관계

비식별관계 상세

부모 엔터티의 식별자가 자식 엔터티의 일반 속성(FK)으로만 전이되는 관계. 자식은 부모와 독립적으로 존재 가능하다.

부서(부서코드) → 사원(사원번호, 부서코드(FK))

→ 사원의 PK는 사원번호이고, 부서코드는 일반 FK = 비식별관계

식별관계 vs 비식별관계 선택 기준

  • 자식이 부모 없이 존재 불가 → 식별관계 (주문상세는 주문 없이 존재 불가)
  • 자식이 독립적으로 존재 가능 → 비식별관계 (사원은 부서 배치 전에도 존재 가능)
  • 식별관계가 계속되면 PK 속성이 늘어남 → 비식별관계로 전환 고려

7. 대리식별자(Surrogate Key)

대리식별자란?

주식별자의 속성이 두 개 이상인 경우(복합식별자), 인위적으로 만든 단일 속성 식별자로 대체한 것이다. 순번(SEQ), 시스템 생성 ID 등이 해당된다.

대리식별자 사용 조건

  • • 본질식별자가 복합키이고 속성이 많은 경우
  • • 자식 엔터티로 PK 전이가 과다한 경우
  • • 본질식별자의 데이터 길이가 긴 경우

8. 식별자의 물리 구현

논리 → 물리 매핑

논리 모델물리 모델SQL 구현
주식별자Primary KeyPRIMARY KEY
보조식별자Unique KeyUNIQUE
식별관계 FKPK + FKPRIMARY KEY + FOREIGN KEY
비식별관계 FKFKFOREIGN KEY

9. 시험 빈출 포인트

자주 출제되는 유형

  • 식별관계 vs 비식별관계 구분 — ERD를 보고 실선/점선 구분, FK가 PK에 포함되는지 여부
  • 식별자 4가지 특징 — 유일성, 최소성, 불변성, 존재성(NOT NULL)
  • 본질식별자 vs 인조식별자 — 자연키 vs 대리키 개념과 장단점
  • 인조식별자 남용 문제 — 중복 데이터 발생 가능성
  • 주식별자 선정 기준 — 명칭·내역 부적절, 자주 이용되는 속성, 최소 속성 수
  • 식별관계 = 실선, 비식별관계 = 점선 — ERD 표기법 문제

함정 선지 주의

  • "보조식별자는 유일성이 없다" — 틀림. 보조식별자도 유일성이 있다 (대표성만 없음)
  • "식별관계에서 FK는 NULL 가능" — 틀림. PK에 포함되므로 NOT NULL
  • "인조식별자는 항상 사용해야 한다" — 틀림. 본질식별자가 적합하면 본질식별자를 사용

개념을 확인했다면 문제로 실력을 검증해보세요