DATOR


엔터티의 분류와 특성 엔터티


데이터 모델링을 진행하면서 항상 신경써야 하는 것 중의 하나가 모든 작업 단계에 대해서 '왜'라는 질문을 하는 것이다. 각 단계의 정확한 목적과 산출물의 용도를 모른다면 그 단계가 어느 수준까지 얼마나 중요도를 가지고 진행해야 하는지 결정할 수 없으므로 적합한 진행을 할 수 없게 될 것이다.

 

엔터티를 분류할 때에도 이런 기준으로 접근하면 본 Lab에서 사용할 엔터티의 분류는 다음과 같다.

 

엔터티erd.JPG

 

1. 타 엔터티와 상관없이 존재할 수 있느냐를 기준으로한 분류 - 약엔터티와 강엔터티

 엔터티에 하나의 인스턴스를 입력하기 위해서는 다른 엔터티의 인스턴스가 존재해야만 하는 경우 약엔터티(weak entity) 또는 종속엔터티(dependent entity)라 부른다. 정의에 따라 primary key를 구성할 때 타 엔터티의 속성을 가져와야 하느냐를 기준으로 약엔터티를 구분하기도 하는데, 사실 둘 다 동일한 의미이다. 약엔터티와 반대되는 개념으로 강엔터티(strong entity) 또는 자립엔터티(independent entity)라는 용어가 사용된다.

 * Erwin에서는 강엔터티와 약엔터티의  박스 모양이 다른데, 강엔터티인 경우에는 모서리 부분이 직각이고,  약엔터티로 지정(또는 sub category로 지정)하면 모서리 부분이 둥글게 변경된다.

 

2. 엔터티의 중요도를 기준으로한 분류 - 핵심엔터티 여부

 엔터티의 중요도를 기준으로 엔터티를 분류하여 두고, 개념모델에는 중요한 핵심 엔터티만 나타내고, 나머지 중요하지 않은 엔터티는 논리모델링이 진행됨에 따라 나타나도록 할 때 사용되는 분류 기준이다.  그런데 엔터티의 중요도를 나누는 기준이 애매할 수 밖에 없으므로 모든 엔터티들의 중요여부를 명확하게 구분할 수 없다는 지적이 제기될 수 있다.  올바른 지적이기는 하지만 너무 걱정할 필요는 없는 것이 중요도를 기준으로 엔터티를 분류하는 이유가 핵심엔터티만을 따로 분류해서 데이터 구조를 조망할 수 있도록 하는 것인데, 몇 개 정도의 중요하지 않은 엔터티가 핵심엔터티에 섞여 있더라도 별 문제가 되지 않기 때문이다. 또, 매우 중요한 엔터티를 핵심엔터티로 분류하지 않으면 데이터 모델의 방향 설정에 문제가 생길 수도 있지만 중요 엔터티라면 모델링 진행 중에도 핵심으로 지정될 가능성이 크므로 어느 정도의 시행착오는 있더라도 큰 문제는 되지 않을 것이다.

 한편, 강엔터티는 모두 핵심엔터티로 분류하는데서 볼 수 있듯이 데이터 모델링에서의 중요도의 기준은 업무적인 중요성이 아니라 얼마나 다른 엔터티의 인스턴스를 생성하는데 필요하냐에 있음도 주의해야 한다.

 *. DataWare DA(구 DA#) 에서는 엔터티를 Key, Main, Action으로 분류하고 있는데,  Key는 강엔터티를 Main은 약엔터티 중 핵심엔터티를, Action은 약엔터티 중 핵심이 아닌 엔터티를 지정하면 적절한 분류가 된다.

 

3. 엔터티들의 특성 분류(inclusive) - 코드엔터티 여부, 이력엔터티 여부

 코드엔터티와 이력엔터티를 지정할 필요성이 있으므로 언급하였다. 특정 엔터티가 코드엔터티면서, 이력엔터티일수도 있으므로 위의 핵심엔터티와 같이 ~여부라는 표현을 사용하였다. 즉 특정 엔터티는 핵심엔터티면서 코드엔터티이고 이력엔터티일 수 있다.

 

TAG

Leave Comments