식별자(UID, Unique Identifier) 확정
- 엔티티 내의 모든 인스턴스는 유일하게 구분되어야 한다. 이러한 유일성을 보장하기 위해서 필요한 것이 식별자이다.
- 식별자에는 크게 본질 식별자, 실질 식별자, 대체 식별자로 구분할 수 있다.
본질 식별자
- 엔티티에는 인조 식별자가 있고, 진주어에 해당하는 관계나 속성이 어딘가에 있다.
- 행위 엔티티를 정의하는 방법에는 상황에 따라 하향식과 상향식으로 접근하는 방식을 적용할 수 있다.
- 키 엔티티는 부모가 없이 창조된 집합이므로 식별자 또한 창조시켜 주어야 한다.
- 행위 엔티티는 항상 부모가 누구인지를 확인하는 방식으로 진행된다.
- 키 엔티티의 본질 식별자
- 키 엔티티는 사원, 고객, 상품과 같이 부모 엔티티 없이도 혼자서 정의될 수 있는 엔티티이다.
- 절대 종속/상대 종속 의미
- 절대 종속과 상대 종속은 나를 태어나게 하는 데 절대적인 영향을 주었는지, 그렇지 않는지를 따지는 것이다.
- 직접 종속/간접 종속 의미
- 부모 엔티티와의 관계가 1촌이면 직접 종속이고, 1촌 이상이면 간접 종속이다.
- 행위 엔티티의 본질 식별자
- 절대 종속이면서도 직접 종속인 것을 찾고자 하는 것이다.
- 육하원칙을 이용하여 본질 식별자를 찾을 수 있다.
후보 식별자 도출
- 하나의 엔티티 내에서 식별자로 사용할 수 있는 하나 이상의 식별자가 있다. 이 중에서 하나가 식별자로 선택되게 된다.
- 나머지 식별자들을 후보 식별자라고 한다.
후보 식별자 조건
- 각 인스턴스를 유일하게 식별할 수 있어야 한다.
- 후보 키들은 유일한 값을 가지고 이를 통해 나머지 인스턴스와 자신을 식별하는 능력을 가져야 한다.
- 후보 식별자는 단일 속성뿐만 아니라 하나 이상의 속성이 모인 집합으로서도 후보 식별자가 될 수 있다.
- 그러므로 속성 혹은 여러 속성이 조합된 속성 집합은 전체 인스턴스에서 유일 값을 가져야 한다.
- 나머지 속성들을 직접 식별할 수 있어야 한다.
- 인스턴스 간에서 뿐만이 아니라 후보 식별자는 나머지 속성을 식별할 수 있는 능력을 가지고 있어야만 한다.
- NULL이 될 수 없다.
- 후보 식별자들은 NULL이 될 수 없다.
- NULL이 할당되었다는 것은 값이 없다는 것이므로 NULL이 있는 속성은 식별할 수 없다.
- 후보 식별자로 속성 집합을 선택하는 경우에는 개념적으로 유일해야 한다.
- 집합으로 후보 식별자를 선택하는 경우에는 개념적으로도 유일할 것이라는 판단을 하고서 후보 식별자로 선정해야만 한다.
- 후보 식별자의 데이터는 자주 변경되지 않는 것이어야 한다.
- 데이터가 자주 변경된다고 해서 후보 식별자가 될 수 없는 것은 아니지만 일반적으로 후보 식별자의 값은 자주 변경되지 않는다.
- 어떤 노드의 데이터가 변경되면 트리 구조를 재수정하는 데에 너무나 많은 시간이 필요하게 되어 데이터베이스의 성능을 떨어뜨리게 되므로, 인덱스에 선택되는 컬럼의 데이터가 자주 변경되는 것은 좋지 않다.
대체 식별자
- 대체 식별자란 원래의 식별자를 대신할 수 있는 또 다른 속성들이나 관계를 말한다.
- 특히 대체 식별자는 여러 참조 엔티티 중에서 원래의 식별자보다 대체 식별자로 연결을 맺는 것이 자신에게는 훨씬 유리한 경우에 의미가 있게 된다.
인조 식별자 지정
- 인조 식별자란 식별자 확정 시 기존의 본질 식별자를 그대로 실질 식별자로 인정할 수 없는 여러 가지 상황이 발생했을 때, 전부 혹은 일부를 임의의 값을 가진 속성들로 대체하여 새롭게 구성한 식별자를 말한다.
- 예를 들어, 사원 엔티티에 이미 존재하고 있는 속성 중에서 원래의 본질 식별자를 찾으라고 한다면 주민등록번호가 될 것이다.
인조 식별자 지정 기준
- 최대한 범용적인 값을 사용한다.
- 인조 식별자의 속성은 남들이 알지 못하는 임의의 값일 수 있기 때문에 특별한 결격 사유가 없다면 가능한 한 기존에 범용적으로 사용하던 것을 그대로 사용하는 것이 좋다.
- 유일한 값을 만들기 위한 인조 식별자를 사용한다.
- 본질 식별자는 논리적으로 문제가 없지만 실제적으로는 유일성에 대한 현실적인 문제가 발생하므로 인조 속성의 도입을 검토해야만 한다.
- 하나의 인조 식별자 속성으로 대체할 수 없는 형태를 주의한다.
- 인조 속성을 만들 때 이 속성이 구체적으로 본질 식별자의 어느 부분을 대체하고 있는지를 분명하게 정의해야 한다.
- 편의성, 단순성 확보를 위한 인조 식별자를 사용할 수 있다.
- 속성의 길이가 너무 길거나 기억하기가 어려워 좀 더 쉽고 간편한 이름으로 변경할 목적으로도 인조 속성을 추가시킬 수도 있다.
- 의미의 체계화를 위한 인조 식별자를 사용할 수 있다.
- 내부적으로만 사용하는 인조 식별자
- 업무적으로는 아무런 의미가 없지만 시스템적인 필요성에 의해 인조 식별자를 사용할 수 있다.
식별자 확정
- 식별자는 자기 엔티티를 위해 생성하는 것처럼 보이지만, 나를 참조할 다른 엔티티가 원하는 형태로 결정되어야 하는 것이 중요한 결정 요소이기 때문에 주변 엔티티의 상황을 종합적으로 살피고, 주변 엔티티의 상황도 최대한 수렴할 수 있도록 하는 것이 매우 중요하다.
식별자 확정 절차
- 키 엔티티 식별자 확정
- 부모를 가지지 않는 최상위 엔티티이므로 서로 독립적으로 식별자를 확정할 수 있다.
- 메인 엔티티 식별자 확정
- 메인 엔티티는 해당 업무의 근본이 되는 엔티티라고 할 수 있으므로 자신이 하위에 거느리고 있는 수많은 엔티티의 상황을 종합적으로 감안한 전략적인 결정을 해야 한다.
- 하위 엔티티 식별자 확정
'DAP' 카테고리의 다른 글
[DAP 전문가 가이드] 4.3.4 이력 관리 정의 (0) | 2025.04.29 |
---|---|
[DAP 전문가 가이드] 4.3.3 엔티티 상세화(2) (0) | 2025.04.29 |
[DAP 전문가 가이드] 4.3.2 속성 정의 (0) | 2025.04.29 |
[DAP 전문가 가이드] 4.3.1 논리 데이터 모델링 이해 (0) | 2025.04.29 |
[DAP 전문가 가이드] 4.2.6 개념 데이터 모델 작성 (0) | 2025.04.29 |