복잡한 주 식별자

기본 원칙

  • 업무식별자가 주식별자가 되는 것은 가장 기본적인 원칙
  • 많은 엔터티에서 참조되지 않으면 주 식별자가 복잡한 것은 문제되지 않는다.


유형

기준 데이터를 관리할 때
  • 이러한 기준 엔터티는 보통 하위 엔터티가 존재하지 않는다.
  • 그러므로 주식별자가 복잡해지는 것은 문제가 되지 않는다.


집계 데이터를 관리할 때
  • 이러한 집계 엔터티는 보통 하위 엔터티가 존재하지 않는다.
  • 그러므로 주식별자가 복잡해지는 것은 문제가 되지 않는다.


인스턴스를 생성하는 기준이 복잡할 때
  • 기준을 상세하게 가져갈수록 주 식별자는 복잡해 진다.


교차 엔터티일 때
  • 주식별자가 복잡한 두 엔터티 사의에 다대다(M:M) 관계가 존재하면 교차엔터티의 주 식별자는 더욱 복잡해 진다.

  • 이력관리를 위한 주식별자(변경일자) 추가

  • 한쪽 엔터티의 주식별자만 추가하는 방법(인조식별자 순번 추가)
  • 업무식별자와 인조식별자가 혼합된 방법으로 바람직하지 않음

  • 교차엔터티에 인조식별자 채택(교차엔터티에 하위가 존재할 경우)

  • 상위엔터티에 인조식별자 채택(상위엔터티에 다수 하위가 존재할 경우)


슈퍼 식별자가 사용될 때
  • 고객ID만으로도 주식별자여야만 한다, 고객번호는 일반속성으로 변경해야 함.


PK 인덱스(커버링 인덱스)를 사용하려 할 때
  • 인덱스 사용 편의성을 위한 주식별자 선정


주 식별자 상속이 지속적으로 이루어 질 때
  • 복잡한 주식별자가 연속적으로 상속되는 경우
  • 조인 없이 조회하기 편리해 무조건 상속하면 복잡해 지므로 상속과 단절의 적절한 선택이 필요


기본 원칙 + 적절한 판단

  • 업무식별자가 주식별자가 되는 것은 가장 기본적인 원칙
  • 많은 엔터티에서 참조되지 않으면 주 식별자가 복잡한 것은 문제되지 않는다.
    • 오히려 인조식별자를 채택하면 인덱스만 하나 더 늘어나는 샘
  • 복잡한 주식별자가 나쁜것은 아니지만 무조건 좋은 것도 아니다.
    • 업무식별자가 너무 복잡한것은 아닌지? 슈퍼식별자가 포함된것은 아닌지? 인조식별자를 채택하는 것은 어떨지?
    • 다양한 검토 필요