정보 처리/데이터베이스

사물을 테이블로 작성하기(엔티티 타입의 정의)

본클라쓰 2012. 5. 23. 13:57

전문용어로 사물은 '엔티티타입'입니다.

 

엔티티타입이란 "업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 것으로 영속적으로 존재하는 단위"입니다. 엔티티타입은 정보가 저장될 수 있는 사람, 장소, 물건, 사건 그리고 개념을 정의할 수 있는 것으로, 정보 시스템을 구현할 때 데이터베이스 테이블에 해당되는 데이터 모델링에서 가장 중요한 표기법입니다.

 

엔티티타입을 표시할 때는 네모 박스 형태로 표시합니다.

 

엔티티타입을 정의할 때는 다음과 같은 성질을 만족해야 좋은 엔티티타입이 됩니다.

 

1) 업무에서 필요하고 관리하고자 하는 정보여야 한다.

2) 유일한 식별자(Unique Identifier)에 의해 식별이 가능해야 한다.

3) 영속적으로 존재하는 엔티티의 집합이 되어야 한다.

4) 업무 프로세스(Business Process)는 그 엔티티타입을 반드시 이용해야 한다.

5) 엔티티타입에는 반드시 속성이 포함되어야 한다.

6) 엔티티타입은 다른 엔티티타입과 최소 한 개 이상의 관계가 있어야 한다.

 

 

여기서 6번 같은 경우 실제 프로젝트에서 데이터 모델링을 진행하다 보면 간혹 고립되어 있는 엔티티타입이 있습니다. 물론 엔티티타입이 잘못 선정되어 고립된 엔티티타입이 존재하는 경우도 있지만, 정상적으로 모델링을 진행했어도 통계와 관련된 엔티티타입이나 코드와 관련된 엔티티타입의 경우 고립되어 표현되는 경우를 많이 볼 수 있습니다.

 

통계에 사용하는 엔티티타입의 경우는 업무 진행 엔티티타입에서 통계 업무만을 위해 별도로 엔티티타입을 다시 정의하게 되어 엔티티타입간의 관계가 생략되는 경우에 해당합니다. 코드를 위한 엔티티타입의 경우 너무 많은 엔티티타입과 엔티티타입간의 관계로 인해 엔티티타입간의 관계가 생략되어 나타나는 경우가 많습니다.

 

[코드 엔티티타입과의 관계]

 

이처럼 코드 속성을 포함하는 모든 엔티티타입에서 그림과 같이 관계를 설정해야 하므로 너무 복잡하고 표현할 수 없어서 생략하는 것입니다.

 

 

 

 

엔티티타입의 분류

 

엔티티타입의 분류는 유무형에 따른 분류와 발생 시점에 따른 분류 두 종류가 있지만, 실제 프로젝트에서 엔티티타입을 일부러 구분하는 사례는 드물니다.

 

실제 프로젝트에서 엔티티타입을 분류하지 않지만, 굳이 분류를 한다고 하면 발생 시점에 따른 분류를 사용합니다. 발생시점에 따른 분류방법을 사용하면 프로젝트 내부 추진 인원과 대화할 때나 고객과 대화할 때 많은 도움이 되며, 특히 엔티티타입 중 중심 엔티티타입은 많은 시간과 노력을 들여 토의하고 검증하며 작업을 진행해야 합니다.

 

 

발생 시점에 따른 분류는 엔티티타입의 발생 시점에 따라 기본 엔티티타입(Fundamental Entity Type), 중심 엔티티타입(Main Entity Type), 행위 엔티티타입(Active Entity Type)으로 구분할 수 있습니다.

 

 · 기본 엔티티 타입

 

업무에 원래 존재하는 정보로서 다른 엔티티타입과의 관계에 의해 생성되지 않고 독립적으로 생성되며 자신은 타 엔티티타입의 부모 역할을 한다. (사원, 부서)

 

 · 중심 엔티티 타입

 

기본 엔티티타입에서 발생되고 그 업무에서 중심적인 역할을 한다. 데이터양이 많으며 다른 엔티티타입과 관계를 통해 많은 행위 엔티티타입을 생성한다. (접수, 계약)

 

 · 행위 엔티티 타입

 

두 개 이상의 부모 엔티티타입에서 발생되고 내용이 자주 바뀌거나 데이터양이 증가한다. 분석 초기에는 잘 나타나지 않으며 상세 설계 단계나 프로세스와 상관 모델링을 진행하면서 도출될 수 있다. (주문내역, 계약 진행)

 

 

 

 

엔티티타입의 명명

 

엔티티타입을 명명하는 일반적인 기준은 다음과 같습니다.

 

 · 가능하면 현업에서 사용하는 용어를 사용한다.

 · 가능하면 약어를 사용하지 않는다.

 · 단수 명사를 사용한다.

 · 엔티티타입에 부여되는 이름은 유일해야 한다.

 · 가급적 엔티티타입이 생성되는 의미에 따라 이름을 부여한다.