본문 바로가기

데이터 Story/모델링 매뉴얼

업무가 변경될 가능성이 있을 때는 이를 감안해서 인조 식별자를 사용

업무가 변경될 가능성이 있을 때는 이를 대비해서 모델을 유연하게 만드는 인조 식별자를 주 식별자로 설계한다.

 

[그림1] 계좌 엔터티의 주 식별자인 세 개 속성을 붙여서 계좌번호로 사용한다.

 

[그림1]

 

현재 업무에 의해서 계좌번호는 10자리 번호이며, 이를 3-2-5 체계로 구성해서 주 식별자를 세 개의 속성으로 설계했지만 향후에 계좌번호 체계가 3-8 등으로 바뀔 수 있으며, 상품번호 자체가 3자리로 변경될 수 있다면 [그림1] 계좌 엔터티로는 대처하기 어렵다.

 

위와 같이 업무가 바뀜으로써 주 식별자까지 변경되는 상황을 방지하기 위한 방법 중 하나가 [그림2] 계좌 엔터티처럼 인조 식별자를 사용하는 것이다.


 

[그림2]

 

[그림2] 계좌 엔터티와 같이 인조 식별자를 사용하면, 체계가 3-2-5에서 3-8 정도로 변경돼도 자릿수만 늘리면 되므로 모델 변경이나 프로그램 변경을 최소화할 수 있다. 상품번호가 3자리로 늘어나면 3-3-4로 할 수 있는 등 [그림1] 계좌 엔터티보다 변화에 대처하기 수월하다.

 

업무가 변경될 가능성이 있을 때는 인조 식별자를 사용하는 것이 모델을 확장하기 좋은 유연한 모델을 만드는 방법이다.

 

만약 업무 식별자를 주 식별자로 사용한 상태에서 주 식별자를 변경해야 할 정도로 업무가 바뀌었을 때 해당 엔터티의 하위 엔터티가 있다면 주 식별자를 변경하기 사실상 어렵다. 이때 인조 식별자를 사용한 상태라면 주 식별자는 변경하지 않고, 업무 식별자에 생성한 유니크 인덱스만 변경하면 된다. 업무가 바뀌더라도 주 식별자가 바뀌지 않는다면 감당할 수 있는 정도다.

 

인조 식별자를 사용하는 주요 이유는 두 가지다. 업무(후보) 식별자가 복잡하면서 하위 엔터티가 많을 때 인조 식별자를 사용해서 모델을 단순하게 만드는 게 주요 이유다.

 

또 다른 이유는 모델을 의도적으로 유연하게 만들기 위해서다. 하나의 속성으로 구성된 인조 식별자는 주로 무의미하게 증가하는 번호를 사용하기 때문에 업무 식별자와 직접 연관이 없다. 따라서 자유롭게 사용할 수 있어 모델이 유연해진다.