엔터티: 무엇을 관리할 것인가

데이터 모델링의 이해 · 엔터티, 속성, 관계

이 페이지의 목차

핵심 요약

업무에서 지속적으로 관리할 대상인 엔터티의 성립 조건과 분류·명명 원칙을 익힌다.

SQLD·SQLP 공통 모델링 범위에서는 엔터티 후보의 업무 필요성·식별 가능성·인스턴스 집합을 판단한다. 특정 DBMS에서 테이블을 만드는 물리 설계 규칙과는 구분한다.

학습 목표

  • 엔터티가 성립하기 위한 조건을 판별한다.
  • 유형·개념·사건 엔터티와 기본·중심·행위 엔터티를 구분한다.

본문

개념 지도

도식
업무 사실→엔터티와 행 단위→속성·도메인→관계·카디널리티→제약

핵심 내용

엔터티는 업무상 관리할 필요가 있고 서로 구별되는 인스턴스의 집합이다. 보통 다음 조건을 확인한다.

  1. 업무에서 반드시 필요한 정보인가?
  2. 유일하게 식별할 수 있는가?
  3. 둘 이상의 인스턴스가 존재할 수 있는가?
  4. 업무 프로세스에서 이용되는가?
  5. 속성과 다른 엔터티와의 관계를 가지는가?

발생 형태로 보면 사원 같은 유형, 조직·보험상품 같은 개념, 주문·계약 같은 사건 엔터티로 나눌 수 있다. 업무 영향에 따라 독립적으로 생기는 기본 엔터티, 핵심 업무의 중심 엔터티, 처리 결과로 생기는 행위 엔터티로도 분류한다.

명칭은 현업 용어를 사용하고, 단수 명사로 짧고 명확하게 정한다. 같은 의미를 여러 이름으로 부르거나 한 이름을 여러 의미로 쓰지 않는다.

엔터티·속성·값을 구분하는 사례

온라인 쇼핑 업무에서 다음 후보를 본다.

후보판단이유
고객엔터티여러 고객 인스턴스와 독립 식별자 존재
고객명속성고객 한 인스턴스를 설명하는 값
VIP값 또는 분류 코드독립 생명주기·속성이 없으면 엔터티가 아님
주문사건 엔터티주문 시점에 발생하고 금액·상태·관계를 가짐
배송주소업무에 따라 엔터티여러 주소 이력·재사용·식별 필요 시 분리

“명사다”라는 이유만으로 엔터티가 되지 않는다. 독립적으로 관리할 인스턴스 집합, 식별자, 속성, 관계와 생명주기가 있어야 한다.

행 단위(Grain) 질문

엔터티를 정할 때 “한 행은 무엇을 의미하는가?”를 한 문장으로 쓴다.

예시·텍스트
주문 한 행 = 고객이 특정 시점에 생성한 하나의 주문 Header
주문상품 한 행 = 주문 안의 특정 상품 Line 한 건

두 사실을 한 테이블에 섞으면 주문 정보가 상품 수만큼 반복되고 갱신 이상이 생긴다. 기본·중심·행위 엔터티 분류보다 먼저 Grain과 식별자를 확정한다.

경계 사례 검증

  • 속성이 여러 값을 가지거나 자체 이력을 가지면 별도 엔터티 후보다.
  • 코드 값이 설명·유효기간·계층을 가지면 코드 엔터티로 관리할 수 있다.
  • 현재 화면에서 한 번만 보인다는 이유로 엔터티를 제거하지 않는다.
  • 다른 엔터티 없이 존재할 수 있는지와 삭제 시 생명주기를 함께 묻는다.

시험 포인트

문항 풀이 보강: 엔터티 판별과 분류

엔터티 후보를 찾았다고 바로 채택하지 않는다. 다음 질문을 모두 통과하는지 확인한다.

  1. 업무에서 반드시 관리할 필요가 있는가?
  2. 같은 종류의 인스턴스가 보통 두 개 이상 존재할 수 있는가?
  3. 각 인스턴스를 식별할 수 있는가?
  4. 업무 프로세스에서 실제 생성·조회·변경되는가?
  5. 속성을 두 개 이상 가지며 다른 엔터티와 관계를 맺는가?

환자는 여러 환자 인스턴스와 이름·주소 속성이 있으므로 엔터티다. 홍길동은 환자 엔터티의 한 인스턴스이며, 화면의 “환자 이름 입력란”은 속성 표현이지 별도 엔터티가 아니다.

발생 시점에 따른 분류

  • 기본/키 엔터티: 다른 엔터티에 의존하지 않고 먼저 존재한다. 사원, 부서, 고객, 상품이 대표적이다.
  • 중심 엔터티: 기본 엔터티에서 발생해 핵심 업무의 중심이 된다. 계약, 사고, 주문 등이 대표적이다.
  • 행위 엔터티: 둘 이상의 부모 사이의 업무 처리 결과로 생긴다. 주문목록, 사원변경이력 등이 대표적이다.

이름을 정하는 규칙

현업의 단수 명사를 사용하고, 약어나 구현 용어 대신 업무 의미가 드러나게 한다. 같은 대상을 화면마다 다른 이름으로 부르지 않으며, 한 이름을 서로 다른 뜻으로 재사용하지 않는다.

문제에 적용하는 순서

지문의 명사가 “사람 한 명”인지 “같은 종류의 정보 집합”인지 먼저 구분한다. 그다음 독립적으로 먼저 생기는지, 핵심 거래인지, 거래의 상세·이력인지 순서로 분류한다.

자주 틀리는 부분

  • 화면의 입력란이나 보고서 항목이 곧바로 엔터티가 되는 것은 아니다.
  • 인스턴스 하나만을 가리키는 명칭과 인스턴스 집합인 엔터티를 혼동하지 않는다.
  • 엔터티는 속성 없이 이름만 존재하지 않으며, 일반적으로 다른 엔터티와 업무 관계를 가진다.

복습 문제

답을 생각한 뒤 정답과 근거를 펼쳐 보세요.

01

주문과 주문상세는 각각 어떤 업무 역할의 엔터티인가?

정답과 근거

주문은 주문 사건의 머리 정보를, 주문상세는 한 주문 안의 상품별 반복 내역을 나타내는 엔터티입니다.

02

사원 홍길동은 엔터티인가, 인스턴스인가?

정답과 근거

사원은 엔터티이고 홍길동이라는 특정 사원은 인스턴스입니다.

03

병원 한 곳과 환자 여러 명 중 관리할 엔터티 후보를 고를 때 인스턴스 수와 속성을 어떻게 확인하는가?

정답과 근거

병원과 환자를 각각 여러 인스턴스로 식별·관리할 필요가 있는지, 고유 식별자와 둘 이상의 독립 속성·관계가 있는지 확인합니다. 현재 한 곳뿐이어도 업무상 반복 가능한 유형이면 엔터티가 될 수 있습니다.