엔터티(Entity)는 데이터 모델링의 가장 기본 단위로, 시스템을 구축하고자 하는 업무 영역에서 관리해야 할 정보의 대상을 의미함. 데이터로 저장되고 관리되어야 하는 의미 있는 '정보의 주인공(명사)'으로, 물리 모델에서는 테이블(Table)로 구현됨.
업무에서 사용되는 모든 명사가 엔터티가 될 수 있는 것은 아니며, 엔터티로 정의되기 위해서는 다음의 특징들을 만족해야 함.
특징 | 설명 | 예시 (User 엔터티) |
---|---|---|
업무 관련성 | 해당 업무에서 필요로 하고 관리해야 하는 정보여야 함. | User (사용자)는 시스템의 핵심 주체이므로 필수 정보임. |
식별 가능성 | 유일한 식별자(Primary Key)에 의해 각 인스턴스를 명확하게 구분할 수 있어야 함. | user_id 를 통해 동명이인 사용자도 유일하게 식별 가능함. |
인스턴스 집합성 | 2개 이상의 인스턴스(실제 데이터)를 포함하는 집합이어야 함. | User 엔터티는 '라이언', '춘식이' 등 여러 명의 사용자 데이터를 가짐. |
업무 프로세스 활용 | 반드시 하나 이상의 업무 프로세스에서 사용되어야 함. | User 는 '게시물 작성', '댓글 달기' 등 다양한 업무 프로세스에 관여함. |
속성 포함 | 반드시 하나 이상의 속성(Attribute)을 가져야 함. | User 는 user_id 외에 name , email 등 여러 속성을 가짐. |
관계 설정 | 최소 하나 이상의 다른 엔터티와 관계를 맺어야 함. | User 는 Post 와 1:N 관계, Profile 과 1:1 관계를 맺음. |
엔터티는 성격과 역할에 따라 여러 기준으로 분류할 수 있으며, 특히 발생 시점에 따른 분류가 중요함.
User
, Product
)Course
, Department
)Order
, Enrollment
)종류 | 정의 | 특징 | 예시 (User , Post , Like ) |
---|---|---|---|
기본 엔터티 (Fundamental) | 다른 엔터티에 의존하지 않고, 독립적으로 생성될 수 있는 엔터티. | - 업무의 기반이 되는 정보. - 다른 엔터티의 부모 역할. | User (사용자는 다른 정보 없이도 가입 가능) |
중심 엔터티 (Main) | 기본 엔터티로부터 파생되며, 업무의 중심에서 다양한 행위와 관계를 맺는 엔터티. | - 기본 엔터티와 행위 엔터티의 중간에 위치. - 데이터 양이 많은 경향. | Post (게시물은 User 가 있어야만 생성 가능) |
행위 엔터티 (Associative) | 두 개 이상의 엔터티 사이에서 발생하는 행위를 표현하기 위해 생성된 엔터티. | - 주로 N:M 관계를 해소하기 위해 생성됨. - 시간이 지남에 따라 데이터가 지속적으로 누적됨. | Like (User 와 Post 사이의 '좋아요' 행위) |
모델의 가독성과 의사소통의 명확성을 위해 엔터티 이름을 정할 때 지켜야 할 원칙.
고객
, 주문
)Customer
> CUST
)