본문 바로가기

데이터 Story/모델링 이론

관계 엔터티의 장점 1

관계 엔터티의 장점은 유연하다는 것입니다. 반면에 다수의 관계 속성을 사용하는 방식의 단점은 유연하지 않다는 것입니다.

 

이전 글에서 설명했듯이 관계 속성을 사용하다 당사자 유형 중에서 연대보증인이 늘어날 때, 보험료 납부자와 같은 당사자 유형(서브타입) 자체가 늘어날 때 난감해집니다. 관계 엔터티를 사용하면 당사자구분코드에 ‘납부자’를 추가하면 약간의 수정이 발생할 뿐이죠. 어플리케이션이나 SQL의 수정을 최소화시키는 유연한 모델이 되는 것입니다.

 

관계 엔터티에서는 다른 속성(부가 데이터)을 관리하기 수월해집니다. [그림1] 모델과 같이 관계 엔터티도 고유의 속성을 가지게 될 때가 있습니다. 계약자와 피보험자의 신용정보 활용에 대한 동의 데이터를 관리할 수 있습니다.


 

[그림1]

 

만약 관계 속성을 사용하면 [그림2] 정도가 될 거 같습니다.


 

[그림2]

 

드물긴 하지만 관계 엔터티의 하위 엔터티가 생길 수 있습니다. [그림3]은 창작한 모델인데요. 만약 보험과 연관된 피보험자의 법정대리인을 관리해야 된다면 관계 엔터티의 하위 엔터티를 생성해 관리할 수 있습니다.


 

[그림3]

 

그런데 관계 엔터티와 같은 역할을 관리하는 교차 엔터티는 하위 엔터티가 존재하지 않는 것이 일반적이라는 게 제 경험입니다. 케이스별로 달라질 것이지만 대체로요. 위의 가상 모델에서도 법정대리인은 고객 엔터티의 하위 데이터라고 봐야 될 거 같습니다.

 

[그림3]을 관계 속성으로 관리하려면 스키마는 [그림4] 정도가 될 것이고요. 대략 a관계는 보험계약 속성이 피보험자고객번호일 때만 성립한다는 로직 정도가 별도로 관리돼야겠네요. 이 정도 되면 그야말로 끼워맞추기식 모델이 됩니다. 일반적으로 알고 있는 표기법대로 해석해서는 알 수 없는 암호와 같은 모델이 되죠.


 

[그림4]

 

제가 약간 소설을 쓰긴 했지만 위와 같은 모델을 실무에서 종종 봅니다. 일반적으로 생각하면 이해할 수 없는 모델이요. 다수의 모델러가 이해할 수 없는 모델은 일단 의심해봐야 됩니다.