식별자의 역할은?

  • 정규화 수행의 결정자 역할
  • 종속자 도출하는 결정자 역할


식별자의 도출은 언제?

개념 모델링 단계
  • 중요 엔티티/관계 도출하는 단계이므로
  • 속성까지는 생략해도 되나 업무 식별자 도출은 권고
물리 모델링 단계
  • 주 식별자 도출해야 함


식별자의 종류는?

  • 1. 후보 식별자
  • 2. 주 식별자
  • 3. 대리 식별자
  • 4. 인조 식별자
  • 5. 외래 식별자
  • 6. 슈퍼 식별자


1. 후보 식별자

  • 인스턴스의 유일성을 보장하며 최소 속성으로 구성 된 키
  • 하나의 엔티티에 여러 개 후보 식별자가 있을 수 있다
  • 엔티티 안에서 함수 종속성을 발생시키는 결정자 역할을 한다
  • 후보 식별자를 알면 나머지 속성 값들도 알 수 있다
  • 엔티티 정의/정규화 하는 기준이 된다
  • 정규화 수행 시 다른 후보 식별자가 다른 릴레이션으로 분리될 수도 있다
  • 아래 예시의 경우 사원번호를 주 식별자로 하면 FD1 에 의해 정규화 수행되며 ...어떻게?



  • 후보 식별자들 중 하나가 주 식별자가 될 수 있다
  • 유일성을 보장 하긴 하지만 널을 허용할 수 있다
  • 유니크 인덱스 생성해 주어야 한다


2. 주 식별자

  • 후보 식별자 중 성능/관리 측면에서 가장 좋은 식별자를 주 식별자로 선정
  • 후보 식별자 중 주 식별자가 될 만 한 적당한 식별자가 없으면 인조 식별자 생성
  • 엔티티에서 하나만 존재 할 수 있다
  • PK(Primary Key) 라고 한다


3. 대리 식별자

  • 후보 식별자 중 주 식별자로 선택하고 남은 후보 식별자
  • AK(Alternate Key) 라고 한다


4. 인조 식별자

  • 사용 조건
  • 후보 식별자 중 주 식별자로 선정할 만 한 게 없을 때
  • 후보 식별자 속성 조합이 지나치게 복잡할 때
  • 실체/자립 엔티티에서 사용


  • 주로 "코드" / "번호" 등의 무의미한 번호가 사용됨
  • ~코드 라는 명은 공통코드 속성과 혼동되므로 권장하지 않음


  • 인조 식별자 고려 단계
  • 주요 엔티티는 개념모델 단계에서
  • 일반 엔티티는 논리모델 단계에서


  • 인조 식별자 사용 시 장점은 모델이나 SQL 이 간단해 지는것


  • 인조 식별자 사용 시 단점은
  • 인스턴스 생성 기준을 인조(주) 식별자만으로 판단하기 어렵다
  • 실제 업무 식별자에 유니크 인덱스를 사용하여 추가 키 관리를 해야 한다
  • 모델만 보고 업무를 이해하기 어렵다
  • 특히 행위 엔티티에 인조 식별자 사용 시 가독성이 많이 저하된다


5. 외래 식별자

  • 엔티티 종속 관계에서 상위 엔티티의 주 식별자가 하위 엔티티의 외래 식별자


6. 슈퍼 식별자

  • 후보 식별자에 +a 개념으로 속성이 추가 된 것
  • 이미 유일성이 보장 된 속성 조합에 추가로 속성이 결합되었으므로 쓰지 말기를 권장함