1. 엔터티의 개념

  • 엔터티란 ?
    – 업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적인 것(Thing)
    – 엔터티는 그 집합에 속하는 개체들의 특성을 설명할 수 있는 속성(Attribute)을 가진다.
    ex) ‘학생’ 이라는 엔터티는 학번, 이름, 학점, 생일, 주소, 전화번호, 전공 등의 속성을 가지고 있다.

  • 엔터티는 인스턴스의 집합이라고 말할 수 있고, 반대로 인스턴스라는 것은 엔터티의 하나의 값에 해당한다고 정의할 수 있다.
    ex) 수학, 영어, 국어는 각각의 과목이라는 엔터티의 인스턴스들이라고 할 수 있다.

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

엔터티와 엔터티 간의 ERD 를 그리면 [그림 I-1-15] 와 같이 표현할 수 있다.

sqld-1-1-15

– 과목, 강사, 사건은 엔터티에 해당하고, 수학/영어 는 ‘과목’이라는 엔터티의 인스턴스, 이춘식/조시형 은 ‘강사’라는 엔터티의 인스턴스, 2010-001/2010-002 는 ‘사건’ 엔터티에 대한 인스턴스에 해당한다.

– 엔터티와 인스턴스를 표현하면 [그림 I-1-16] 과 같다.

sqld-1-1-16

◇ 참고

  • 오브젝트 모델링에는 클래스(Class) 와 오브젝트(Object) 라는 개념이 있다.
  • 클래스는 여러 개의 오브젝트를 포함하고 있다. 이러한 개념은 엔터티가 인스턴스를 포함하는 것과 비슷하다.

3. 엔터티의 특징

엔터티는 다음과 같은 특징을 가지며, 다음의 성질을 가지지 못하는 경우 적절하지 않은 엔터티일 수 있다.

(1) 반드시 해당 업무에서 필요하고 관리하고자 하는 정보여야 한다.
(2) 유일한 식별자에 의해 식별이 가능해야 한다.
(3) 영속적으로 존재하는 인스턴스의 집합이어야 한다. (한 개가 아닌, 두 개 이상이어야 한다.)
(4) 엔터티는 업무 프로세스에 의해 이용되어야 한다.
(5) 엔터티는 반드시 속성(Attribute)이 있어야 한다.
(6) 엔터티는 다른 엔터티와 최소 한 개 이상의 관계가 있어야 한다.

1) 업무에서 필요로 하는 정보

엔터티 특징의 첫 번째는 반드시 시스템을 구축하고자 하는 업무에서 필요로 하고, 관리하고자 하는 정보여야 한다는 점이다.

– 예를 들어 ‘환자’ 라는 엔터티는 의료시스템을 개발하는 병원에서는 반드시 필요한 엔터티이지만, 일반 회사의 인사시스템에서는 직원들의 환자로서의 정보는 활용하지 않을 것이다. 즉, 시스템 구축 대상인 해당 업무에서 그 엔터티를 필요로 하는가를 판단하는 것이 중요하다.

2) 식별이 가능해야 함

식별자(Unique Identifier)에 의해 식별이 가능해야 한다. 유일한 식별자는 그 엔터티의 인스턴스만의 고유한 이름이다. 두 개 이상의 엔터티를 대변하면 그 식별자는 잘못 설계된 것이다.

– 예를 들어 직원을 구분할 수 있는 방법으로 이름이나 사원번호가 될 수 있다. 이름은 동명이인이 될 수 있으므로 유일하게 식별될 수 없지만, 사원번호로는 회사에 입사한 사람에게 고유하게 부여된 번호이므로 유일한 식별자가 될 수 있는 것이다.

3) 인스턴스의 집합

영속적으로 존재하는 인스턴스의 집합이 되어야 한다.

– 엔터티의 특징 중 ‘한 개’가 아닌, ‘두 개 이상’ 이라는 집합 개념은 매우 중요하다. 두 개 이상이라는 개념은 엔터티 뿐만 아니라 엔터티간의 관계, 프로세스와의 관계 등 업무를 분석하고 설계하는 동안 설계자가 모든 업무에 대입해보고 검증하여 여러 개의 인스턴스를 포함한다.

4) 업무프로세스에 의해 이용

업무프로세스가 그 엔터티를 반드시 이용해야 한다. 이용되지 않는 경우 업무 분석이 정확하게 되지 않아 엔터티가 잘못 선정되거나, 업무프로세스 도출이 적절하게 이루어지지 않았음을 의미한다.

– 이러한 경우는 데이터 모델링을 할 때 미처 발견하지 못하다가 프로세스 모델링을 하면서 데이터 모델과 검증을 하거나, 상관 모델링을 할 때 엔터티와 단위프로세스를 교차 점검하면서 문제점이 도출된다. 이렇게 고립된 엔터티의 경우에는 엔터티를 제거하거나, 누락된 프로세스가 있는지 살펴보고 해당 프로세스를 추가해야 한다.

5) 속성을 포함

엔터티에는 반드시 속성(Attribute)이 포함되어야 한다.

– 속성을 포함하지 않고 엔터티의 이름만 가지고 있는 경우 관계가 생략되어 있거나 업무 분석이 미진하여 속성 정보가 누락되는 경우에 해당한다. 주식별자만 존재하고 일반 속성은 없는 경우도 부적절한 엔터티이다.

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

6) 관계의 존재

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

– 기본적으로 엔터티가 도출되었다는 것은 해당 업무 내에서 연관성을 가지고 다른 엔터티와의 연관의 의미를 가지고 있음을 나타낸다. 관계가 설정되지 않은 엔터티는 부적절하게 도출되었거나, 다른 엔터티와 적절한 관계를 찾지 못한 경우가 많다.

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

4. 엔터티의 분류

1) 유무형에 따른 분류

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

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

  • 사건 엔터티 (Event Entity)
    – 업무를 수행함에 따라 발생되는 엔터티로서, 비교적 발생량이 많으며 각종 통계자료에 이용될 수 있다.
    (예 - 주문, 청구, 미납 등)

2) 발생시점에 따른 분류

  • 기본/키 엔터티 (Fundamental Entity / Key Entity)
    – 업무에 원래 존재하는 정보로서, 독립적으로 생성되며 타 엔터티의 부모 역할을 한다. 다른 엔터티로부터 주식별자를 상속받지 않고 자신의 고유한 주식별자를 가지게 된다.
    (예 - 사원, 부서, 고객, 상품, 자재 등)

  • 중심 엔터티 (Main Entity)
    – 기본 엔터티로부터 발생되며, 그 업무에 있어서 중심적인 역할을 한다. 데이터의 양이 많고 다른 엔터티와의 관계를 통해 많은 행위엔터티를 생성한다.
    (예 - 계약, 사고, 예금원장, 청구, 주문, 매출 등)

  • 행위 엔터티 (Active Entity)
    – 두 개 이상의 부모엔터티로부터 발생되며, 내용이 자주 바뀌거나 데이터량이 증가된다. 분석 초기단계 보다는 상세 설계단계나 프로세스와 상관모델링을 진행하면서 도출된다.
    (예 - 주문목록, 사원 변경이력 등)

5. 엔터티의 명명

(1) 현업 업무에서 사용하는 용어를 사용한다.
(2) 가능한 약어를 사용하지 않는다.
(3) 단수명사를 사용한다.
(4) 모든 엔터티에서 유일하게 이름이 부여되어야 한다.
(5) 엔터티 생성의 의미대로 이름을 부여한다.