기록이 힘이다.

[모델링 노트] 04. 속성이야기 본문

IT서적

[모델링 노트] 04. 속성이야기

dev22 2023. 12. 25. 21:47
728x90

식별자 속성과 비식별자 속성

사원 엔터티에서 사원번호 속성은 주 식별자다. 그리고 사원주민등록번호 속성은 대리 식별자며 소속부서번호 속성은 외래 식별자다. 따라서 사원번호.사원주민등록번호 속성은 식별자 속성이고 사원명.입사일자.소속부서번호.퇴사일자.휴대전화번호 속성은 비식별자 속성이다.

 

후보 식별자

주 식별자가 될 가능성이 있는 식별자를 의미한다. 모든 식별자는 주 식별자가 될 수 있는 후보이므로, 식별자와 후보 식별자는 사실상 동일어다. 후보 식별자가 업무 식별자보다 더 넓은 개념이다. 

 

주 식별자

주 식별자는 엔터티에 하나만 존재하는 대표 식별자다.  흔히 주 식별자와 주 키라는 용어는 동일하게 사용한다. 

 

PK는 테이블에 지정된 물리적인 제약을 의미한다. 이에 반해 주 식별자는 논리적으로 인스턴스를 식별하는 기준을 의미한다. 논리적인 주 식별자에 다른 속성을 추가해서 물리적인PK를 생성할 수도 있다. 따라서 두 용어가 완전히 일치한다고 볼 수 없다. 이 책에서는동일하게 사용.

 

주 식별자의 역할은 두 가지 관점으로 생각할 수 있다. 하나는 자신의 엔터티를 바라보는 관점이고 다른 하나는 다른 엔터티에서 바라보는 관점이다. PK 역할과 FK 역할이다.

 

주 식별자를 선정하는 방법은 두 가지가 있다. 하나 또는 여러 개의 후보 식별자 중에서 대표를 지정하는 방법이 있으며, 적당한 후보 식별자가 없다면 인조 식별자를 만들어 주 식별자로 사용하는 방법이 있다. 

 

주 식별자는 엔터티의 성격(정체성)을 대변할 수 있는 기초 속성이므로 가장 중요한 요소 중 하나다. 

 

시간이 부족할 때 엔터티명과 주 식별자만 바로잡아도 모델이 깔끔해질 때가 있다. 

 

주 식별자가 바뀌는 현상

 

프로젝트가 연기되고 유지.보수가 힘들어지는 이유 중의 하나가 주 식별자의 변경이다. 

- 엔터티 정의가 불명확할 때

- 데이터 분석이 미흡할 때

- 이력 데이터를 고려하지 않았을 때

- 업무가 변경될 때

 

어떤 속성을 주 식별자로 선택해야 하는가?

 

업무 식별자가 주 식별자가 될 수도 있고, 후보 식별자가 주 식별자가 될 수도 있다. 업무.후보 식별자가 주 식별자로 부적절하면 인조 식별자가 주 식별자가 된다. 

 

- 주 식별자 속성의 값이 변경되지 않도록 선정

   -실무에서 통합 고객을 관리하기 위한 요건에 의해서 고객번호도 간혹 변경이 발생한다. 

- 일반 속성에 종속되지 않도록 선정

- 인조 식별자에는 의미를 부여하지 않도록 선정

   - 아무 의미 없이 식별 기능만 하는 순번을 주로 사용한다. 업무적인 의미가 존재하면 속성으로 관리

- 주 식별자 속성에 논리적으로 널 값이 존재하지 않도록 선정

- 최소한의 속성이 포함되도록 선정

- 업무적으로 활용도가 높은 속성으로 선정

   - 많은 화면에서 자주 조회되면 주 식별자로 조회하는 것이 가장 효율적이다. 

- 업무 식별자와 인조 식별자가 혼합되지 않도록 선정

- 슈퍼 식별자가 되지 않도록 선정 

     인덱스와 주 식별자에 대한 인식이 부족하기 때문이다. 같은 개념이 아니다. 인덱스를 설계하는 것은 단순하지 ㅇ낳으며, 최적화되지 않은 인덱스는 더 심각하고 복잡한 성능 문제를 일으킨다. 

- 최소길이가 되도록 선정 

  Varchar 타입보다는 Number 타입이 저장 공간이 절약된다. 몇 가지 제약은 있지만, Number 타입은 Varchar 타입보다 주 식별자에 적용하면 효율적이다. 

- 주 식별자 속성 값은 가능한 고정 길이가 되도록 선정

- 주 식별자 속성은 전사에서 한 번만 사용되도록 선정

- 암호화 대상 속성이 포함되지 않도록 선정

- 업무를 대표할 수 있는 속성으로 선정