CS

[SQLD] 식별자(Identifier)

2026년 02월 10일 04:59

SQLD 1과목 – 식별자(Identifier)

식별자(Identifier)란?

식별자란 하나의 엔터티 안에서 각 인스턴스를 유일하게 구분할 수 있게 하는 속성이다.

  • 엔터티는 여러 인스턴스의 집합이므로 반드시 유일한 식별자 후보가 존재해야 함
  • 여러 후보 중 엔터티를 대표하는 식별자 = 주식별자
  • 논리 모델의 주식별자는 물리 모델에서 기본키(PK) 로 구현됨

  • 학생 엔터티
  • 논리 모델: 주식별자 = 학생번호
  • 물리 모델: PK = 학생번호 컬럼

식별자의 분류

① 대표성 여부에 따른 분류

주식별자

  • 인스턴스를 유일하게 식별
  • 유일성 + 최소성 만족
  • 다른 엔터티와 참조 관계 연결 기준
  • 예: 학생(학번), 도서(ISBN)

보조식별자

  • 유일성·최소성은 만족
  • 대표성은 없음
  • 참조 관계 연결에는 사용 ❌
  • 예: 학생(주민번호), 고객(이메일)

② 생성 여부(발생 시점)에 따른 분류

내부식별자

  • 다른 엔터티 참조 ❌
  • 엔터티 내부에서 자체 생성
  • 예: 주문번호, 상품번호

외부식별자

  • 다른 엔터티의 식별자를 상속
  • 외래키(FK) 형태로 구현
  • 예: 주문(고객번호, 상품번호)

③ 속성 수에 따른 분류

단일식별자

  • 하나의 속성으로 구성
  • 예: 학생(학번)

복합식별자

  • 두 개 이상의 속성 조합
  • 예: 주문(주문번호 + 상품번호)

④ 대체 여부에 따른 분류

본질식별자 (원조식별자)

  • 업무적으로 자연스럽게 존재
  • 실제 업무에서 의미 있음
  • 예: 학번, 주민번호, ISBN

인조식별자

  • 업무적 의미 ❌
  • 관리 편의를 위해 인위적으로 생성
  • 주로 자동 증가 번호
  • 예: 주문번호, 수강ID

주식별자의 특징 ⭐⭐⭐

① 유일성

  • 모든 인스턴스를 유일하게 구분 가능
  • 이름 ❌ / 학번 ⭕

② 최소성

  • 유일성을 만족하는 최소한의 속성
  • 사번만으로 되는데 사번+이름 ❌

③ 불변성

  • 시간이 지나도 값이 변경되지 않음
  • 고객번호 ⭕

④ 존재성

  • NULL ❌
  • 반드시 값 존재

주식별자 도출 기준 (PK 선정 기준)

① 업무에서 자주 사용되는 속성 우선

  • 활용 빈도 높은 속성이 PK로 적합
  • 학생: 학번 ⭕ / 주민번호 ❌

② 이름·설명 같은 텍스트 기반 속성 피하기

  • 변경 가능성 큼
  • 가능하면 코드형 속성 사용

③ 속성 수는 최소화

  • PK가 너무 길면 조인 성능 저하
  • 보통 7~8개 이상 필요하면 인조식별자 생성 고려

  • 주문일자 + 고객번호 + 상품코드 ❌
  • 주문번호 ⭕

식별 관계 vs 비식별 관계 ⭐⭐

① 식별 관계 (Identifying Relationship)

  • 부모 PK가 자식 PK에 포함
  • 자식 엔터티는 부모 없이는 식별 ❌
  • 대부분 복합키
  • 자식은 독립 존재 ❌

  • 사원(사번)
  • 교육이력(사번 + 교육일련번호)

identify

② 비식별 관계 (Non-Identifying Relationship)

  • 부모 PK는 자식의 일반 속성(FK) 로만 존재
  • 자식 엔터티는 독립적인 PK 보유

  • 부서(부서번호)
  • 사원(사번, 부서번호(FK))

non-identify

강한 개체 vs 약한 개체

강한 개체 (Strong Entity)

  • 독립적으로 존재 가능
  • 자체 PK로 식별
  • 예: 고객, 사원, 상품

약한 개체 (Weak Entity)

  • 식별 관계를 통해서만 정의
  • 부모 PK 없이는 식별 ❌
  • 대부분 복합키
  • 예: 교육이력, 주문상세

Key 종류

key설명
PK테이블의 대표 식별자 (NULL ❌, 중복 ❌)
Candidate KeyPK가 될 수 있는 후보 키
Super Key유일성은 만족, 최소성은 불필요
Alternate Key후보키 중 PK로 선택되지 않은 키
FK다른 테이블의 PK를 참조하는 키

식별자 표기법

구분IE표기법Baker 표기법
주식별자와 일반속성- 주식별자: 최상단에 배치
- 일반 속성: 그 아래에 배치
- 주식별자: 속성명 앞에 # 기호
- 일반 속성: 속성명 앞에 •(점) 기호 붙임
식별/비식별 관계- 식별관계: 실선
- 비식별관계: 점선
- 식별관계: 약한 개체 쪽에 |(바)표시
- 비식별관계: 표시 생략

인조식별자의 단점 ⚠️

  1. 업무 의미 상실
  2. 본질식별자 검증 소홀
  3. 중복 데이터 발생 가능
  4. 불필요한 인덱스 생성 가능

👉 따라서 본질식별자를 먼저 검토한 후 정말 필요할 때만 인조식별자 사용