권순용의 데이터모델링 이야기
근본 Entity의 분할 3 0 0 99,999+

by axiom 엔티티 Entity [2014.05.06]


데이터 모델은 정보화 시스템을 구축함에 있어서 매우 중요하다. 데이터 모델의 최적화는 정보화 시스템의 효과적인 구축과 추후 운영 및 관리에서도 매우 중요한 요소다. 지금은 이러한 점이 많은 사람들에게 인지되고 있는 것 같다.

데이터 모델의 중요한 요소 중의 하나가 Entity는 분리되기도 하고 통합되기도 한다는 것이다. 어떻게 구성하는가에 따라 Entity의 운명은 정해지게 된다. 그럼 Entity의 운명을 좌우하게 되는 항목 중 Entity의 통합에 대해 확인해 보자.

Entity 통합은 2개 이상의 Entity를 하나의 Entity로 합하는 것을 의미한다.

  • [그림1] Entity 통합 이해하기
  • Entity 통합 이해하기

Entity 통합의 개념

이와 같이 Entity 통합을 수행하는 이유는 크게 다음과 같다.

  • - 조인 제거 : 조인의 제거로 랜덤 액세스는 감소하게 되어 성능 향상을 기대할 수 있게 된다.
  • - Entity 감소 : Entity 통합을 통해 Data Modeling은 단순해지므로 관리가 수월해진다.

이와 같은 이유에서 Entity 통합을 수행하게 된다. 하지만 이런 장점의 이면에는 단점도 함께 숨어 있음을 명심하길 바란다. Entity 통합 시에는 다음의 사항에 유의해야 한다([그림 2] 참조).

  • [그림2] Entity 통합시의 유의사항
  • Entity 통합시의 유의사항

  • - Data 구분 필요 : Entity를 통합하면 통합한 Entity에서 통합된 Data를 구별하기 위한 Attribute를 제공해야 한다. 예를 들면 구분 Attribute를 생성해 1은 학생, 2는 교사가 되도록 구분한다. 일반적으로 구분 Attribute는 인덱스 생성에 포함돼야 할 것이다.
  • - 통합 대상의 명확화 : Entity를 통합하는 경우 명확하지 않은 2개의 Entity를 통합하는 것은 엄청난 문제를 발생시킬 수 있게 된다. Entity 통합은 동질성을 가진 Entity에 대해 명확하게 수행해야 한다.
  • - 융통성 증가 : 다른 유형의 Data가 저장될 경우 구분 Attribute를 할당하면 바로 업무에 적용할 수 있기 때문에 융통성은 증가하게 된다.
  • - Data 의미 약화 : 여러 Data가 하나의 Entity에 저장되므로 아무리 동질성이 있다고 해도 Data의 의미가 약화되는 현상이 발생한다.

이와 같은 점에 의해 근본 Entity의 경우에는 많은 통합도 가능하지만 중심 Entity의 경우에는 적게 통합하는 것이 유리하다. Entity의 Primary Key가 동일하며 각 Entity가 가지고 있는 Data가 유사하다면 하나의 Entity로 통합할 수 있다.

  • [그림3] 2개의 Entity 통합 예
  • 2개의 Entity 통합 예

[그림3]의 예제처럼 2개의 Entity를 통합하게 되면 정직원인지 또는 협력직원인지를 구분할 수 있는 Attribute가 필요하며, 해당 Attribute를 보통 구분 Attribute라고 한다.

새로운 Subset이 추가된다면, 통합한 Entity의 구분 Attribute인 사원 구분 Attribute의 값만 정의되면 바로 통합할 수 있다. 그리고 협력직원 Entity에만 존재하는 소속사 Attribute는 한쪽 Subset에만 값이 존재하므로 Attribute의 타입을 Varchar2 Type으로 정의하는 것이 좋다.

이유는 정직원 Data에 대해서는 소속사 Attribute 값이 존재하지 않으며 그렇기 때문에 Varchar로 선언해야만 저장 공간을 차지하지 않기 때문이다. Primary Key가 서로 다르지만 Data에 대해 동질성을 가지고 있다면 하나의 Entity로 통합할 수 있다.

  • [그림4] Primary Key가 서로 다르지만 Data가 대부분 동일한 예
  • Primary Key가 서로 다르지만 Data가 대부분 동일한 예

[그림4]의 경우 본사 직원 Entity와 사이트 직원 Entity는 서로 다른 Primary Key를 가지고 있지만 Data가 대부분 동일하기 때문에 하나의 Entity로 통합을 고려할 수 있다. 물론 Entity를 통합하는 과정에서 서로 Data를 구분하기 위해 구분 Attribute를 구성해야 할 것이다.

- 강좌 URL : http://www.gurubee.net/lecture/2739

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입