2025-08-10 23:55
Tags:
데이터베이스의 주인공, 엔터티 완벽 해부 유형부터 무형까지
데이터베이스를 설계하는 것은 현실 세계를 디지털 공간으로 옮기는 작업과 같습니다. 이 과정에서 가장 먼저 해야 할 일은 우리가 어떤 ‘정보’를 저장하고 관리할 것인지 정의하는 것입니다. 이때 등장하는 핵심 개념이 바로 **엔터티(Entity)**입니다.
엔터티는 단순히 데이터 덩어리가 아니라, 현실 세계의 ‘무엇’인가를 대표하는 논리적 단위입니다. 그리고 이 ‘무엇’은 눈에 보이는 사물일 수도, 보이지 않는 개념일 수도 있습니다. 이 둘을 구분하는 것에서부터 논리적이고 효율적인 데이터 모델링이 시작됩니다.
1. 엔터티(Entity)란 무엇인가?
엔터티는 한마디로 데이터로 표현하고자 하는 현실 세계의 대상입니다.
사람, 사물, 장소처럼 실체가 있는 것뿐만 아니라, 주문, 예약, 계좌처럼 개념적으로만 존재하는 모든 것이 엔터티가 될 수 있습니다. 데이터베이스의 언어에서 엔터티는 문장의 ‘주어’나 ‘목적어’ 같은 명사 역할을 합니다. 예를 들어 ‘어떤 고객이 어떤 상품을 주문했다’라는 문장에서 고객
, 상품
, 주문
이 모두 엔터티가 됩니다.
모든 엔터티는 다음과 같은 특징을 가집니다.
-
식별 가능성: 다른 것과 명확히 구분되는 고유한 식별자(예: 사원번호, 주문번호)를 가집니다.
-
속성: 엔터티가 갖는 구체적인 정보들(예: ‘사원’ 엔터티의 이름, 직급, 입사일)을 가집니다.
-
인스턴스의 집합: 엔터티는 개념 그 자체이며, 실제 데이터 하나하나(예: 사원 ‘홍길동’, ‘김철수’)는 ‘인스턴스’라고 부릅니다.
2. 유형(有形) 엔터티: 손에 잡히는 현실
유형 엔터티는 물리적인 형태를 가진, 즉 눈으로 보고 만질 수 있는 대상을 의미합니다. 데이터 모델링에서 가장 직관적으로 파악하기 쉬운 엔터티입니다.
-
특징: 물리적 실체가 있어 안정적이고, 비교적 정보가 변하지 않고 지속적으로 활용됩니다.
-
비유: 데이터 세계의 ‘배우’나 ‘소품’과 같습니다. 무대 위에서 직접 움직이고 보이는 존재들입니다.
-
예시:
-
사원: 회사에 소속된 사람
-
상품: 판매를 위해 진열된 물건
-
건물: 특정 위치에 존재하는 구조물
-
장비: 업무에 사용되는 기계나 도구
-
3. 무형(無形) 엔터티: 보이지 않는 약속과 사건
무형 엔터티는 물리적 형태는 없지만, 개념적으로나 사건으로 존재하는 대상입니다. 현실 세계의 규칙, 약속, 행동 등을 표현하기 위해 사용됩니다. 무형 엔터티는 다시 ‘개념 엔터티’와 ‘사건 엔터티’로 나눌 수 있습니다.
1) 개념 엔터티 (Conceptual Entity)
물리적 실체는 없지만, 사람들이 인식하고 관리하는 개념적인 정보 단위를 의미합니다.
-
특징: 유형 엔터티처럼 비교적 정적인 정보를 가지며, 주로 관리의 기준으로 사용됩니다.
-
비유: 데이터 세계의 ‘규칙’이나 ‘계약서’와 같습니다. 배우들의 행동을 규정하거나 관계를 정의합니다.
-
예시:
-
부서: 조직도 상의 논리적인 팀 단위
-
계좌: 은행과의 금융 거래 약속
-
보험상품: 보장을 약속하는 개념적 상품
-
강의: 정해진 시간에 이루어지는 교육 과정
-
2) 사건 엔터티 (Event Entity)
업무 프로세스가 진행되면서 발생하는 행위나 사건을 의미합니다.
-
특징: 시간의 흐름에 따라 데이터가 계속해서 쌓이며(발생량이 많음), 각종 통계 및 분석의 중요한 기반이 됩니다.
-
비유: 데이터 세계의 ‘사건’이나 ‘장면’입니다. 배우들이 규칙에 따라 특정 행동을 하면서 만들어내는 결과물입니다.
-
예시:
-
주문: 고객이 상품 구매를 요청하는 행위
-
결제: 주문에 대한 비용을 지불하는 사건
-
예약: 특정 시간과 장소를 선점하는 행위
-
수강신청: 학생이 특정 강의를 듣겠다고 신청하는 사건
-
4. 심화: 강한 엔터티 vs. 약한 엔터티
유형/무형 분류가 엔터티의 **현실 세계 속 ‘본질’**에 대한 구분이라면, 강한/약한 엔터티는 **데이터베이스 내 ‘독립성’**에 대한 구분입니다.
-
강한 엔터티 (Strong Entity): 다른 엔터티에 의존하지 않고 독립적으로 존재할 수 있는 엔터티입니다. 대부분의 유형 엔터티와 개념 엔터티가 여기에 속합니다. (예:
사원
,상품
,부서
) -
약한 엔터티 (Weak Entity): 다른 엔터티(소유 엔터티)가 존재해야만 자신도 존재할 수 있는 의존적인 엔터티입니다. (예:
주문
이 있어야만주문내역
이 존재할 수 있고,사원
이 있어야만부양가족
이 존재할 수 있습니다.)
주문
은 눈에 보이지 않는 무형 엔터티이지만, 독립적으로 존재할 수 있으므로 강한 엔터티입니다. 반면, 부양가족
은 눈에 보이는 유형 엔터티이지만, 사원
없이는 존재 의미가 없으므로 약한 엔터티입니다. 이처럼 두 분류 기준은 서로 다른 차원의 개념입니다.
이처럼 엔터티를 유형과 무형으로 구분하고, 그 관계의 독립성을 파악하는 것은 현실 세계의 복잡한 관계를 명확하고 논리적인 데이터 구조로 만들기 위한 가장 중요한 첫걸음입니다.
엔터티는 단순히 데이터 덩어리가 아니라, 업무의 필요에 의해 탄생하고 관리되는 핵심 정보 단위입니다.
-
업무 중심성 (Business-Driven)
-
“반드시 해당 업무에서 필요하고 관리하고자 하는 정보”
-
엔터티는 그냥 존재하는 데이터가 아닙니다. 우리가 하는 일(업무)과 직접적인 관련이 있어야 합니다. 예를 들어, 쇼핑몰 시스템에서 ‘고객’이나 ‘상품’은 반드시 관리해야 할 정보이므로 엔터티가 됩니다. 하지만 ‘지나가는 행인’은 업무와 관련 없으므로 엔터티가 아닙니다.
-
-
유일한 식별성 (Unique Identifiability)
-
“유일한 식별자에 의해 식별이 가능해야 한다”
-
이것이 엔터티의 가장 핵심적인 특징입니다. 각 엔터티는 다른 것과 명확히 구분될 수 있는 이름표(식별자)를 가져야 합니다. 자료의 예시처럼, ‘학생’에게는 ‘학번’이, ‘사건’에는 ‘사건번호’가 있어 동명이인이라도 구별할 수 있습니다.
-
-
인스턴스 집합 (Instance Set)
-
“영속적으로 존재하는 인스턴스의 집합이다 (2개 이상의 인스턴스를 포함)”
-
엔터티는 단 하나의 사례만 있는 ‘외톨이’가 아닙니다. ‘학생’이라는 엔터티(개념)가 있다면, 그에 해당하는 ‘김민준’, ‘이서아’ 등 여러 실제 학생(인스턴스)들이 존재해야 의미가 있습니다. 즉, 엔터티는 같은 성격을 가진 개체들의 모음입니다.
-
-
업무 프로세스와의 연관성 (Process-Related)
-
“업무 프로세스에 의해 CRUD가 발생”
-
엔터티는 가만히 있는 정보가 아니라, 업무의 흐름에 따라 생성(Create), 조회(Read), 수정(Update), 삭제(Delete)되는 살아있는 데이터입니다. 예를 들어, 신규 고객이 가입하면 ‘고객’ 엔터티의 인스턴스가 생성(Create)되고, 고객이 주소를 바꾸면 정보가 수정(Update)됩니다.
-
-
속성 보유 (Has Attributes)
-
“반드시 속성을 가진다”
-
엔터티는 자신을 설명하는 구체적인 정보들, 즉 **속성(Attributes)**을 가집니다. ‘학생’ 엔터티는 ‘이름’, ‘학과’, ‘학년’과 같은 속성들을 통해 구체화됩니다. 속성이 없는 엔터티는 실체가 없는 껍데기와 같습니다.
-
핵심 요약
캡처 자료를 한 문장으로 요약하면, **“엔터티란, 업무에 필요하며, 고유하게 식별되고, 여러 실제 사례를 가지며, 속성을 통해 구체화되고, 업무 프로세스에 따라 변화하는 정보의 집합체”**라고 할 수 있습니다.