[SQL] 엔터티(Entity)
데이터 모델을 이해할 때 가장 명확하게 이해해야 개념 중 하나가 엔터티이다. 엔터티는 우리말로 실체 또는 객체라고도 하며 실무에서는 엔터티라고 많이 쓰인다. 그렇다면 이러한 엔터티가 대체 무엇인지, 또한 어떠한 특징을 가지고 있는지 등등 엔터티에 대한 개념을 알아보자.
엔터티의 개념
엔터티의 정의
- 사람, 장소, 물건, 사건, 개념 등의 명사
- 업무상 관리가 필요한 관심사
- 저장이 되기 위한 어떤 것(Thing)
엔터티란 ‘업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적인 것(Thing)’ 또는 ‘업무 활동상 지속적인 관심을 가지고 있어야 하는 대상으로서 그 대상들 간에 동질성을 지닌 인스턴스들이나 그들이 행하는 행위의 집합’ 을 의미한다.
엔터티는 집합에 속하는 개체들의 특성을 설명할 수 있는 속성을 갖는다. 예를 들어 ‘학생’이라는 엔터티는 학번, 이름, 이수학점, 등록일자, 생일, 주소, 전화번호, 전공 등의 속성으로 특징지어질 수 있다. 이러한 속성 가운데에는 엔터티 인스턴스 전체가 공유할 수 있는 공통 속성도 있고, 엔터티 인스턴스 중 일부에만 해당하는 개별 속성도 있을 수 있다.
또한 엔터티는 인스턴스의 집합이라고도 말할 수 있고, 반대로 인스턴스라는 것은 엔터티의 하나의 값에 해당한다고 정의 할 수 있다. 예를 들어 직업에는 프로그래머, 소방관, 경찰관 등이 있는데 이러한 여러가지 직업들은 각각이 직업이라는 엔터티의 인스턴스들이라고 할 수 있다.
엔터티를 이해할 때 눈에 보이는 것만 엔터티로 생각해서는 안되며, 눈에 보이지 않는 개념 등에 대해서도 엔터티로서 인식할 수 있어야 한다. 실제 업무 상에는 눈에 보이지 않는 것이 엔터티로 도출되는 경우가 많으므로 주의가 필요하다.
엔터티의 특징
엔터티의 특징은 아래와 같으며, 만약 도출한 엔터티가 아래의 성질들을 만족하지 못하면 적절하지 않은 엔터티일 확률이 높다.
- 반드시 해당 업무에서 필요하고 관리하고자 하는 정보이어야 한다.
- 유일한 식별자에 의해 식별이 가능해야 한다.
- 영속적으로 존재하는 인스턴스의 집합이어야 한다.
- 업무 프로세스에 의해 이용돼야 한다.
- 반드시 속성이 있어야 한다.
- 다른 엔터티와 최소 한 개 이상의 관계가 있어야 한다.
엔터티의 분류
엔터티는 엔터티 자신의 성격에 의해 실체 유형에 따라 구분하거나 업무를 구성하는 모습에 따라 구분이 되는 발생 시점에 의해 분류해 볼 수 있다.
유무형에 따른 분류
- 유형엔터티
물리적인 형태가 있고 안정적이며 지속적으로 활용되는 엔터티로, 업무로부터 엔터티를 구분하기가 가장 용이하다. 예를 들면, 사원·물품·강사 등이 이에 해당한다.
- 개념엔터티
물리적인 형태는 존재하지 않고 관리해야 할 개념적 정보로 구분되는 엔터티다. 조직, 보험상품 등이 이에 해당한다.
- 사건엔터티
업무를 수행함에 따라 발생하는 엔터티로서 비교적 발생량이 많으며 각종 통계자료에 이용될 수 있다. 주문, 청구, 미납 등이 이에 해당한다.
- 유형엔터티
발생시점에 따른 분류
- 기본엔터티
그 업무에 원래 존재하는 정보로서 다른 엔터티와 관계에 의해 생성되지 않고 독립적으로 생성이 가능하고 자신은 타 엔터티의 부모 역할을 하게 된다. 다른 엔터티로부터 주식별자를 상속받지 않고 자신의 고유한 주식별자를 가지게 된다. 예를 들어 사원, 부서, 고객, 상품 등이 이에 해당한다.
- 중심엔터티
기본엔터티로부터 발생되고 그 업무에서 중심적인 역할을 한다. 데이터의 양이 많이 발생되고 다른 엔터티와의 관계를 통해 많은 행위엔터티를 생성한다. 예를 들어 계약, 사고, 청구, 주문 등이 이에 해당한다.
- 행위엔터티
두개 이상의 부모엔터티로부터 발생하고, 자주 내용이 바뀌거나 데이터 양이 증가한다. 분석 초기 단계에서는 잘 나타나지 않으며, 상세 설계 단계나 프로세스와 상관모델링을 진행하면서 도출될 수 있다. 예를 들어 주문목록, 사원변경이력 등이 이에 해당한다.
- 기본엔터티
엔터티의 명명
엔터티를 명명하는 일반적인 기준은 다음과 같다.
- 현업업무에서 사용하는 용어 사용
- 약어를 지양
- 단수 명사 사용
- 모든 엔터티에 유일한 명칭 부여
- 엔터티 생성 의미를 기준으로 명칭 부여
읽어주셔서 감사합니다. 😊
Reference
SQL 전문가 가이드 - Kdata 한국데이터산업진흥원