본문 바로가기
데이타베이스

데이터 모델링[0]-엔티티(entity)

by minimax95 2020. 6. 26.

이번 포스팅에서는 논리적 데이터베이스 설계 과정인 데이터 모델링을 학습하기에 앞서 엔티티의 정의와 분류, 그 성질에 대해서 알아보도록 하겠습니다.

 

데이터 모델링이란 복잡한 현실세계를 약속된 개념, 즉 엔티티(entity)와 속성(attribute), 관계(relationship)로 표현해서 데이터베이스 모델로 표현하는 일련의 과정을 말합니다.

우리가 살펴볼 엔티티는 현실세계를 단순화, 명확화, 추상화로 모델화 시키면서 유형, 무형, 문서, 이력 등 정보 관리의 대상이 되는 개체라 할 수 있습니다. 

 

예를 들어서 인터넷 쇼핑몰 사이트에서 상품을 판매하는 업무를 모델링하기 위해 엔티티를 도출해 낸다고 가정해 보겠습니다. 판매자의 입장에서 상품을 구매하는 구매자 정보가 필요합니다. 또한 판매하는 상품에 대한 사양과 가격 정보 등이 필요할 것입니다. 구매자 입장에서는 구매 중인 상품을 임시로 담아둘 쇼핑 카트 정보를 유지해야 하고 본인이 구매한 목록에 대한 구매이력을 확인할 수 있어야 합니다. 이러한 상황에서 정보 관리의 대상이 되는 개체를 도출해 보면 회원, 상품 같은 사물 엔티티와 인터넷 상에만 존재하는 쇼핑카트나 구매 이력 같은 무형, 문서 엔티티 등도 뽑아낼 수 있습니다. 

이러한 여러 종류의 엔티티의 분류를 표로 정리해 보자면 아래와 같습니다.

구     분 내    용
유형 엔티티 물리적인 형태가 있습니다.(예 : 고객, 상품, 거래처, 학생, 교수 등)
무형 엔티티 물리적인 형태가 없고 개념적으로만 존재하는 엔티티입니다.(예 : 인터넷 장바구니, 부서 조직 등) 
문서 엔티티 업무 절차상에서 사용되는 문서나 장부, 전표에 대한 엔티티입니다.(거래명세서, 주문서 등)
이력 엔티티 업무상 반복적으로 이루어지는 행위나 사건의 내용을 일자별, 시간별로 저장하기 위한 엔티티입니다.( 예 : 입고 이력, 출고 이력, 구매 이력 등)
코드 엔티티 무형 엔티티의 일종으로 각종 코드를 관리하기 위한 엔티티입니다.(예 : 국가코드, 각종 분류 코드)

 

엔티티는 엔티티의 인스턴스(instance)와 구분해야 합니다. 회원을 예로 들어서 실제 회원 정보는 이순신, 홍길동, 강감찬 등과 같은 개인들로 구성됩니다. 이 경우 개개인은 회원 엔티티의 인스턴스라 부르며 물리적 설계 단계에서는 엔티티는 테이블로, 인스턴스는 튜플에 대응합니다. 아래 그림에서 처럼 엔티티는 회원 자체를 나타내며 인스턴스는 개개인을 의미하기 때문에 개념을 명확히 정리해야 할 필요가 있습니다.

엔티티는 현실 세계를 모델링 할 때 어떤 사물이나 형태가 엔티티인지 아닌지를 결정해야 할 시점이 있습니다. 이때 판단의 기준이 될 수 있는 것이 엔티티의 성질입니다. 엔티티가 가져야 할 성질을 정리해 보겠습니다.

  • 업무에서의 필요성 : 엔티티는 업무의 관심 대상이 되는 사물이어야 합니다. 업무의 관심 대상이 아니거나 업무 절차상 사용되지 않는다면 엔티티로 표현할 필요가 없습니다.
  • 두 개 이상의 인스턴스 : 엔티티가 의미 있기 위해서는 두 개 이상의 인스턴스를 갖는 것이 확인되어야 합니다.
  • 속성의 소유 : 엔티티는 속성을 가지고 있어야 합니다. 어떤 엔티티에 대해 마땅한 속성을 찾을 수 없다면 업무 분석을 제대로 하지 못했거나 속성으로 분류해야 할 것을 엔티티로 잘못 분류한 것일 수 있습니다.

엔티티는 데이터 모델링에서 가장 중요한 과정이며 데이터 모델링의 출발이 될 수 있습니다. 엔티티에 대해서 한 번쯤 잘 정리해 둔다면 현실세계에 대한 모델링 작업 시 도움이 될 것이라 생각합니다.

감사합니다.

댓글