본문 바로가기

Data architecture/Model

[Model] 식별자(Unique Identifier)란?

1. 식별자란?

 - 엔터티 내 인스턴스를 유일하게 구별하기 위한 속성 혹은 속성의 집합

 - 엔터티 내 속성의 결정자(Determinant) 역할

 - 유일성(Unique), 최소성, 불변성, 존재성(Not null)

 

2. 식별자 종류

 - 업무식별자(Business Identifiers)

  → 업무적으로 인스턴스를 유일하게 구분할 수 있도록 하는 식별자

  → 데이터를 쌓는 기준, 즉 인스턴스 발생 기준을 알 수 있도록 함

 

 - 주식별자(Primary Identifiers) 

  → 엔터티(Entity) 내 대표성을 갖는 식별자(하나의 엔터티 내 주식별자는 하나만 존재해야 함)

   ※ 주식별자가 하나만 존재한다는 것은 주식별자를 꼭 1개의 속성으로만 구성해야 한다는 것이 아님!

  → 주키(Primary Key)가 되는 식별자

 

 - 후보식별자(Candidate Identifiers)

  → 릴레이션 내 인스턴스의 유일성을 보장해주는 식별자

  → 주식별자가 될 수 있는 후보

  → 릴레이션 내 함수 종속의 개념으로 결정자(Determinant)는 전부 후보식별자가 됨

  → 후보식별자는 엔터티 내 여러개 존재할 수 있음

  → 정규화 수행 시 기준이 되므로 기본적으로 정의해야 하는 대상

 

 - 외래(외부)식별자(Foreign Identifiers)

  → 본인 엔터티에서 필요한 속성이 아닌, 타 엔터티와 관계에 의해 발생하는 속성

  → 식별자의 특징인 유일성과 무관

  → 상위(부모) 엔터티의 주식별자가 하위(자식) 엔터티의 외래식별자 속성이 됨

  → 데이터베이스 생성 시 FK(Foreign Key) 역할

 

 - 인조식별자(Artificial Identifiers)

  → 후보식별자 중 주식별자로 사용할 마땅한 대상이 없을 때  단독속성으로 새롭게 만드는 속성(일련번호 등)

  → 인조식별자 채택 시 모델 및 SQL이 단순해짐

  → 인조식별자 채택 시 인스턴스 생성 기준 및 업무 파악이 어려움

  → 단순히 인스턴스를 유일하게 식별하기 위함이 주 목적이기에, 체계 없이 무의미한 일련번호 형태 사용 권고 

  → 인조식별자를 채택한 엔터티는 업무식별자를 무조건 관리해야 함

 

 - 대체(보조, 대체)식별자(Alternate Identifiers)

  → N개의 후보식별자 중 주식별자로 채택되지 않은 나머지 후보식별자

  → 인조식별자 채택 시(후보식별자 중 주식별자 미채택 시) 대체식별자=후보식별자

  → 후보식별자 중 주식별자 채택 시 DISTINCT(주식별자+대체식별자)=후보식별자

 

 - 슈퍼식별자(Super Identifiers)

  → 후보식별자에 속성을 추가해서 만든 식별자(식별자를 최소한의 속성으로 구성하지 않은 것)

  → 슈퍼식별자 사용은 정규형에 위배되며, 엔터티 성격을 불분명하게 만듬

  → 슈퍼식별자는 절대 사용하지 않는 것이 원칙

 

 - 본질식별자(Natural Identifier)

  → 인조식별자의 반대 개념으로, 업무에 의해 만들어지는 식별자

 - 단일식별자(Single Identifiers)

  → 복합식별자의 반대 개념으로, 단일 속성으로 구성된 식별자

 - 복합식별자(Composit Identifiers)

  → 단일식별자의 반대 개념으로, 둘 이상으로 구성된 식별자

 - 내부식별자(Super Identifiers)

  → 외부식별자의 반대 개념으로, 엔터티 내부에서 스스로 만들어지는 식별자