1 데이터 모델링의 이해-  2 엔터티


 

1. 엔터티의 개념


* 엔터티는 사람, 장소, 물건, 사건, 개념 등의 명사

* 엔터티는 업무상 관리가 필요한 관심사에 해당한다.

* 엔터티는 저장이 되기 위한 어떤 것이다.


엔터티란 업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적인 것

엔터티는 업무 활동 상 지속적인 관심을 가지고 있어야 하는 대상으로서 그 대상 들 간에 동질성을 지닌 인스턴스들이나 그들이 행하는 행위의 집합으로 정의할 수 있다.

엔터티는 그 집합에 속하는 개체들의 특성을 설명할 수 있는 속성을 갖는다.

속성 가운데에는 엔터티 인스턴스 전체가 공유할 수 있는 공통속성과 일부에만 해당하는 개별속성이 있을 수 있다.

ex) 과목은 수학, 영어, 국어가 존재할 수 있는데 수학, 영어, 국어는 과목이라는 엔터티의 인스턴스라고할 수 있다.


2. 엔터티와 인스턴스에 대한 내용과 표기법.





 

- 엔터티 - 인스턴스 ERD


엔터티 

인스턴스 

과목

수학 

영어

 강사

이승호 

박우상

 월

2015-08

2015-09


- 과목, 강사, 월은 엔터티에 해당하며 수학,영어는 과목이라는 엔터티의 인스턴스이다.

- 엔터티는 인스턴스의 집합이며 엔터티는 인스턴스를 포함한다.


3. 엔터티의 특징

* 반드시 해당 업무에서 필요하고 관리하고자 하는 정보이어야한다.

유일한 식별자에 의해 식별 가능해야함.

* 영속적으로 존재하는 인스턴스의 집합이여야함.

* 엔터티는 업무 프로세스에 의해 이용되어야한다.

* 엔터티는 다른 엔터티와 최소 한 개 이상의 관계가 있어야 한다.


가. 업무에서 필요로 하는 정보.

- 시스템에서 구축하고자 하는 업무에서 필요로 하고 관리하고자 하는 정보여야 한다.

- 엔터티를 도출할 때는 업무영역 내에서 관리할 필요가 있는지를 먼저 판단하는 것이 중요하다.


나.  식별이 가능해야 함.

- 식별자에 의해 식별이 가능해야 한다는 점.

- 엔터티를 도출하는 경우에 각각의 업무적으로 의미를 가지는 인스턴스가 식별자에 의해 한 개 씩만 존재하는지 검증해 보아야한다.

- 유일한 식별자는 그 엔터티의 인스턴스만의 고유한 이름이다.


다. 인스턴스의 집합

- 영속적으로 존재하는 인스턴스의 집합이 되어야함 (두 개 이상의 집합)

- 인스턴스가 한개밖에 없으면 엔터티는 집합이 아니므로 엔터티 성립이 되지않음.


라. 업무프로세스에 의해 이용

- 업무프로세스가 그 엔터티를 반드시 이용해야한다.

- 업무에서 반드시 필요하다고 생각하여 엔터티로 선정하였으나, 업무프로세스에 이용이 되지 않는다면 업무분석이 정확하게 되지 않아 엔터티가 잘못 선정되거나 업무프로세스 도출이 적절하게 이루어지지 않음을 의미함.

-  데이터 모델링할 때 발견하지 못하다가 프로세스 모델링을 하면서 데이터 모델을 검증하거나, 상관 모델링을 할 때 엔터티와 단위 프로세스를 교차 점검하면서 문제점이 도출된다.

 * 업무 프로세스에 의해 이용되지 않는 엔터티는 그 업무의 엔터티가 아님.


마. 속성을 포함.

- 엔터티는 반드시 속성이 포함되어야 한다.

- 속성을 포함하지 않고 엔터티의 이름만 가지고 있는 경우는 관계가 상략되어 있거나 업무 분석이 미진하여 속성정보가 누락되는 경우에 해당한다.

- 주식별자만 존재하고 일반속성은 전혀 없는 경우에도 적절한 엔터티라고 할 수 없다.

(예외적으로 관계엔터티의 경우는 주식별자 속성만 가지고 있어도 엔터티로 인정한다.)


바. 관계의 존재

- 엔터티는 다른 엔터티와 최소 한 개 이상의 관계가 존재해야한다.

- 업무내에서 업무적인 연관성을 가지고 다른 엔터티와의 연관의 의미를 가지고 있음을 나타낸다.

- 관계가 설정되지 않은 엔터티의 도출은 부적절한 엔터티가 도출되었거나 다른 엔터티와 적절한 관계를 찾지 못했을 가능성이 크다.


* 데이터 모델링을 하면서 관계를 생략하여 표현해야 하는 경우는 통계성 엔터티 도출, 코드성 엔터티 도출, 시스템 처리시 내부 필요에 의한 엔터티 도출과 같은 경우이다.

1) 통계를 위한 엔터티 : 통계업무만을 위해 엔터티를 다시 정의하게되므로 엔터티간의 관계가 생략됨.

2) 코드성 엔터티 : 너무 많은 엔터티간의 관계설정으로 인해 데이터 모델의 읽기효율성이 저하외어 도저히 모델링 작업을 진행할 수 없게된다. 코드성 엔터티는 물리적으로 테이블과 프로그램 구현 이후에도 외부키에 의한 참조무결성을 체크하기 위한 규칙을 데이터베이스 기능에 맡기지 않는 경우가 대부분이기 때문에 논리적으로나 물리적으로 관계를 설정할 이유가 없다.

3) 시스템 처리시 내부에 필요한 엔터티의 경우 시스템 내부적인 필요에 의해 생성된 엔터티이므로 관계를 생략하게 된다.


4. 엔터티의 분류

가. 유무형에 따른 분류

- 유형엔터티 : 물리적인 형태가 있고 안정적이며 지속적으로 활용되는 엔터티로 업무로부터 엔터티를 구분하기가 가장 용이하다. EX)사원, 물품, 강의 등

- 개념엔터티 : 물리적인 형태는 존재하지 않고 관리해야 할 개념적 정보로 구분이 되는 엔터티로 조직, 보험상품 등

- 사건엔터티 : 업무를 수행함에 따라 발생하는 엔터티로 각종 통계자료에 이용할 수 있다. ex) 주문, 청구, 미납  


나. 발생시점에 따른 분류.

1) 기본엔터티: 그 업무에 원래 존재하는 정보로  다른 엔터티와의 관계에 의해 생성되지 않고 독립적으로 생성이 가능하며 자신은 타 엔터티의 부모역할을 한다. 

 다른 엔터티로부터 주 식별자를 상속받지 않고 자신의 고유한 주 식별자를 가지게된다. 

ex) 사원, 부서, 고객, 상품, 자재 등


2) 중심엔터티 :  중심엔터티란 기본엔터티로부터 발생되고 업무에 있어서 중심적인 역할을 한다.

 데이터 양이 많이 발생되고 다른 엔터티와의 관계를 통해 많은 행위엔터티를 생성한다.

ex) 계약, 사고, 예금원장, 청구, 주문, 매출 등.


3) 행위엔터티 : 두 개 이상의 부모엔터티로부터 발생되고 자주 내용이 바뀌거나 데이터양이 증가한다.

 분석초기 단계에서는 잘 나타나지 않으며 상세 설계단계나 상관 모델링을 진행하면서 도출될 수 있다.

 ex)주문목록, 사원변경이력.


5. 엔터티의 명명

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

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

- 단수명사를 사용한다.

- 모든 엔터티에서 유일하게 이름이 부여되어야 한다.

- 엔터티 생성의미대로 이름을 부여한다.