관계형데이터모데링노트 요약

업무식별자와 인조식별자의 혼합

mitomi 2023. 11. 14. 10:16
반응형
SMALL

업무식별자와 인조식별자가 혼합된 형식의 주식별자. 고객번호+순번, 계좌번호+순번

 

업무식별자와 인조식별자의 혼합해서 사용하면 바람직하지 않은 이유

업무식별자와 인조식별자 혼합된 주문엔터티

- 요건을 알기 어려워 가독성이 떨어짐

위 모델에서 한고객이 같은 상품을 하루에 두번 이상 주문할 수 없다는 요건이 있는데 이를 알기 어려워진다.

업무식별자와 인조식별자를 섞어쓰는 엔터티에서는 

업무식별자를 알 수 없다 →업무를 알기 어렵다 →  인스턴스 생성기준 알기 어렵다   유니크 인덱스 생성(업무식별자 :고객번호, 상품번호, 주문일자 ) 하지 않으면  데이터 생성기준이 없어짐

 

- 엔터티 성격이 모호해짐

구체적인 속성을 사용하지 않고 주문엔터티에 주문순번처럼  발생순번, 처리순번, 등록순번 같은 일반적이 속성을 사용하면 엔터티 성격이 모호해진다. 많은 엔터티의 주식별자가 동일해져 주엔터티 성격을 파악하기 어려워진다.

 

-모델을 관리하기 복잡해짐

엔터티 성격이 모호해진다는 것은 모델을 관리하기 어려워진다는 것, 즉 가독성이 떨어지기 때문에 관리가 어려워진다.

비슷한 주식별자의 남발로 인해 엔터티 간의 관계를 관리하기가 어려워진다. 

 

 

업무식별자만을 사용한 주문엔터티                                                                  인조식별자만을 사용한 주문엔터티

업무가 확정적이라면 위 모델처럼  업무식별자만을 사용하는 것 좋으며, 업무요건이 (한고객은 하루에 같은 상품을 여러번 구매가능하다) 라고 요건이 바뀔수 있다면 순수 인조식별자를 이용해 모델의 유연성을 확보하는 것이 바람직하다.

주문순번 엔터티는 고객별로 데이터가 여러번 발생하기 때문에 유일성을 보장하기 위한 용도로 사용한 인조식별자다.

부분인조식별자라고 한다. 주문순번 속성이 고객이 주문한 진짜 순서를 의미한다면 업무식별자에 가깝다.

그러나 주식별자에 주문순번 속성을 사용해서 업무식별자인지 혼란을 일으킬 필요는 없다.  (인스턴스 유일성을 보장하기 위한 목적 vs 주문순서를 의미하는 업무식별자 )

 

혼합된 주식별자를 사용해서 업무에 혼란을 주기보다는 , 업무식별자만 아니면 인조식별자만을 사용해야 한다

 

부분인조식별자를 사용할 수 있는 경우

- 교차엔터티 업무식별자 복잡할때

업무식별자가 복잡한 수강엔터티는 양쪽 부모엔터티의 주식별자외에 이력속성까지 포함되어 업무식별자가 복잡하다.

수강엔터티의 하위 엔터티가 많다면 복잡한 주식별자를 단순화 시킬 필요가 있다.
대외업무가 학생번호 속성으로 자주 조회 및 정렬을 한다면 부분인조식별자 사용가능하다.

만약 수강번호 속성으로 인조식별자를 사용한다면, 학생번호 속성이 맨앞에 위치하는 인덱스를 생성해야 한다. 아니면 부분인조식별자를 사용하는 것이 효과적일 떄도 있다

 

- 엔터티 간의 관계가  종속관계이면서 종속엔터티의 업무식별자가 분명하지 않을때

하위엔터티의 업무식별자가 명확하지 않을때 업무식별자+순번 포함하여 식별자 설계가능하다.

부분인조식별자 모델 예시 설명
- 하위엔터터의 업무식별자가 명확하지 않을때
영화이미지 엔터티는 영화별로 여러개 이미지등록이 가능하기 때문에 등록일시 등의 시간속성이 업무식별자에 포함되는게 의미가 없다. 업무식별자가 분명하지 않기 때문에 식별관계상속을 한 상태에서 이미지순번 속성을 사용해 주식별자로 설계할 수 있다.
- 업무식별자가 변경될 가능성이 있을때는 인조식별자를 사용해야 하지만 업무식별자가 자주 조회되는 경우, 업무에서 많이 사용하는 경우 업무식별자를 주식별자에 포함

거래내역 엔터티는 업무식별자에 해당하는 계좌번호속성과 상품번호 속성, 거래일자 속성으로 조회 되는 엔터티이다. 이상태에서 다른 종류의 거래가 통합되면서 업무식별자가 변경될 가능성이 있을때는 부분인조식별자를 사용한다
업무식별자가 변경가능성이 있을때는 인조식별자를 사용하는 것이 명확하지만, 거래내역 엔터티에서 계좌번호등 업무식별자로 조회되는 경우가 많기 때문에 업무식별자를 주식별자에 포함시키기 위해 인조식별자를 사용한 모델이다
- 일시속성이 주식별자에 포함되면 조회나 업무수행 시 불펼할 수 있다. 이럴때 주문번호 같은 인조식별자를 사용하는게 좋지만 업무 식별자로 조회하는 경우가 대부분이여서 부분인조식별자를 추가
일시속성 대신에 순번속성을 사용한 모델이다.  일시속성은 일반속성으로 관리하고 인스턴스를 구별할 수있는 역활을 하는 주문순분속성을 추가한다.

-

 

주식별자에 업무식별자와 인조식별자가 혼합된 방법으로 사용하는 것은 피하는 것이 바람직하다. 부분인조식별자를 사용할때도 있지만 남발하지 않도록 주의해야 한다.

728x90

'관계형데이터모데링노트 요약' 카테고리의 다른 글

식별자 종류 Part 2  (2) 2023.11.19
식별자 종류 Part 1.  (0) 2023.11.18
인조식별자  (0) 2023.11.14
복합속성&교차엔터티 주식별자  (0) 2023.11.13
복잡한 주식별자  (0) 2023.11.13