엔터티에 속한 속성이 많을 때, 성능이나 관리 측면에서 좋지 않은 영향을 미친다면 일부 속성을 별도의 엔터티로 분리할 수 있다.
이때 속성 성격에 따른 분리가 아닌 사용 빈도에 따른 분리일 경우, 즉 유사한 성격의 속성으로 분리할 수 없고 자주 사용되는 않는 속성, 덜 중요한 속성으로 분리할 때는 엔터티 명을 ‘상위 엔터티 명+상세(Suffix)’ 형식으로 정한다.
이런 속성으로 구성된 엔터티는 특별한 데이터 성격이 없기 때문에 엔터티 명을 정하기가 어렵다. 이때는 상위 엔터티 명에 ‘상세’라는 접미어를 붙어서 정한다.
[그림1] 고객 엔터티에 속성이 많아 일부 속성을 별도의 엔터티로 분리해야 한다고 가정한다.
[그림1]
엔터티를 속성 기준으로 수직 분리할 때는 유사한 성격의 속성을 분리하는 것이 바람직하지만 속성의 성격으로 분리하기 어려울 때는 [그림2] 고객상세 엔터티처럼 덜 자주 사용돼서 중요하지 않은 속성을 분리해서 설계한다.
[그림2]
결혼이나 직장, 학력과 같이 덜 사용되는 속성으로 구성됐기 때문에 엔터티의 성격이 있는 것은 아니어서 엔터티 명을 정하기 애매하며, 고객 엔터티가 이미 존재하기 때문에 구분하기 위해 상위 엔터티인 ‘고객’에 접미어 ‘상세’를 붙인다.
이렇게 분리하면 고객 엔터티에는 자주 사용되는 속성이 존재하며, 고객상세 엔터티에는 자주 사용되지 않는 속성이 존재한다.
엔터티 명을 정하는 기준은 데이터의 성격이다. 데이터의 본질적 성격을 나타내야 한다. 하지만 자주 사용하지 않는 것은 데이터의 성격을 나타내는 것이 아니기 때문에 이런 속성으로 구성된 엔터티는 엔터티 명을 정하는 기준이 없는 것이다. 따라서 데이터 성격이 나타나지 않는 경우에는 엔터티 명을 정하기가 곤란해진다. 그래서 부득이하게 ‘상세’라는 접미어를 정해 이런 경우에 사용한다.
또한 고객 엔터티와 같은 주요 엔터티는 자주 사용되는 속성만으로 구성하는 것이 바람직하다. 가끔 사용되는 속성이나 널(Null) 값이 대부분인 속성은 원 엔터티에서 제외시키는 게 효과적이다.
물론 중요한 속성만을 사용하는 것이 아니고 전체 속성 위주로 사용한다면 굳이 엔터티를 분리할 이유는 없다. 적절한 이유 없이 엔터티가 많은 것은 바람직하지 않다.
주의할 것은 고객상세 엔터티에 자주 사용되지 않는다는 이유로 고객의 본질을 나타내는 기초 속성을 옮기면 안 된다는 것이다.
또한 분리한 속성이 특정 성격을 나타낸다면 해당 데이터 성격에 맞게 엔터티 명을 정해야 한다. 특정 성격의 데이터인데도 불구하고 데이터 성격을 표현하지 않고 ‘~상세’ 접미어를 붙이면 안 된다.
[그림2] 고객상세 엔터티처럼 엔터티 명을 특정하게 정할 수 없을 때만 어쩔 수 없이 ‘상세’ 접미어를 붙여 고객 정보라는 정도만을 알 수 있도록 한다.
'데이터 Story > 모델링 매뉴얼' 카테고리의 다른 글
배타 서브타입 설계 (0) | 2017.02.16 |
---|---|
실체 엔터티 설계 (0) | 2016.12.29 |
기준 엔터티의 엔터티 명 (0) | 2016.12.01 |
역할 엔터티의 엔터티 명 (0) | 2016.11.18 |
소속 엔터티의 엔터티 명 (0) | 2016.11.05 |