포스트

개념적 모델링

개념적 모델링

요구 사항 분석

쇼핑몰 요구 사항

  • 회원 기능
    • 회원은 고유한 아이디, 비밀번호, 회원명, 주소(기본 배송지), 연락처 정보를 이용해 가입할 수 있다.
    • 회원은 자신의 정보를 어넺든지 수정할 수 있다.
    • 회원은 시스템에서 탈퇴할 수 있다.
  • 상품 기능
    • 관리자(또는 판매자)는 상품을 시스템에 등록할 수 있다.
    • 상품은 고유한 상품 코드, 상품명, 상품 가격, 재고 수량을 정보로 가진다.
    • 상품의 가격이나 재고 등은 언제든지 변경될 수 있다.
  • 주문 기능
    • 회원은 여러 상품을 한 번에 주문 할 수 있다.
    • 주문 시, 각 상품의 주문 수량을 지정할 수 있다.
    • 주문 시, 배송지를 변경할 수 있다. (기본 배송지와 다를 수 있음)
    • 주문이 완료되면, 주문은 ‘주문 완료’ 상태가 되며, 고유한 주문 번호가 생서된다.
    • 주문에는 주문 일시(주문한 날짜), 최종 결제 금액, 배송지 정보가 기록되어야 한다.
    • 관리자는 주문 상태를 ‘배송 중’, ‘배송 완료’ 등으로 변경할 수 있다.
    • 회원은 자신의 주문 내역을 목록으로 조회할 수 있다.

명사와 동사 추출

  • 명사(Nouns): 우리가 관리해야 할 데이터의 대상, 즉 엔티티(Entity) 또는 그 엔티티가 가지는 속성(Attribute)이 될 확률이 높다.
    • 회원, 아이디, 비밀번호, 회원명, 주소, 연락처, 상품, 상품 코드, 상품명, 가격, 재고 수량, 주문, 주문 번호, 배송지, 주문 일시, 결제 금액, 주문 내역, 주문 수량 등
  • 동사(Verbs): 데이터들 사이의 행위나 관계, 즉 관계(Relationship)가 될 확률이 높다.
    • 가입하다, 수정하다, 탈퇴하다, 등록하다, 변경하다, 주문하다, 조회하다

엔티티 도출하기

  • 회원
    • 회원은 개개인은 구별되며, 아이디, 회원명, 주소 등의 데이터를 가짐
    • 엔티티 확정
  • 상품
    • 회원이 주문하는 대상
    • 가격 재고 등의 데이터를 가짐
    • 엔티티 확정
  • 주문
    • 회원이 성품을 구매하는 사건
    • 언제, 누가, 무엇을, 몇 개 주문했는지 등의 중요한 데이터를 담고 있음
    • 엔티티 확정
  • 아이디, 회원명, 가격, 재고 수량, 주문 일시 등
    • 독립적인 데이터 덩어리 X
    • 해당 엔티티에 소속된 세부 정보, 즉 속성에 가까움

명사를 찾으라는 규칙의 실질적인 의미

  1. 우선 눈에 보이는 명사(고객, 상품 등)를 찾아 엔티티 후보로 삼는다.
  2. 다음으로, 중요한 동사(주문하다, 예약하다, 수강신청하다 등)를 찾는다.
  3. 그리고 그 동사가 관리해야 할 기록이나 증빙을 남기는가? 라고 질문한다.
  4. 만약 그렇다면, 그 동사의 명사형(주문, 예약, 수강)을 새로운 엔티티로 만든다.

엔티티란?

  • 우리가 데이터를 저장하고 관리해야 할 대상
  • 저장할 만한 가치가 있는 정보를 여러 개 가지고 있으면서, 다른 것과 명확히 구분되는 유무형의 모든 것

유형 엔티티

  • 사람, 사물, 자옷와 같이 물리적인 형태가 있는, 우리가 직접 만지거나 볼 수 있는 대상을 의미
    • 회원, 직원
    • 상품, 책
    • 건물

무형 엔티티

  • 물리적인 형태는 없지만, 개념적으로 존재하는 대상을 의미. 즈로 사건이나 개념을 데이터로 관리할 때 나타남
    • 주문, 예약, 수강 신청
    • 계좌, 학과

좋은 엔티티

  • 업무 관련성(Business Relevance)
  • 식별 가능해야 한다(Uniquely Identifiable)
  • 두 개 이상의 정보를 가진다(Has Attributes)
  • 인스턴스(Instance)의 집합이다
  • 다른 엔티티와 관계를 맺는다(Has Relationships)

엔티티 분류: 존재 형태에 따른 분류

유형 엔티티

물리적인 형태를 가지고 있어 눈으로 보거나 만질 수 이는 실체를 표현하는 엔티티

  • 특징
    • 물리적 형태가 존재
    • 업무로부터 식별이 용이
    • 상대적으로 안정적이며 지속적으로 활용되는 정보를 담음
  • 예시
    • 사원, 학생, 고객, 교수 (사람)
    • 상품, 자재, 물품, 차량, 건물 (사물)
    • 강의실, 창고, 지점 (장소)

개념 엔티티

물리적인 형태는 없지만, 업무적으로 관리해야 할 중요한 개념이나 아이디어를 표현하는 엔티티

  • 특징
    • 물리적 형태가 없는 추상적인 개념
    • 업무 규칙이나, 제도, 분류 기준 등을 표현
    • 유형 엔티티와 마찬가지로 비교적 안정적인 정보를 관리
  • 예시
    • 부서, 조직, 팀 (조직 구조)
    • 계좌, 보험상품 (금융 상품 및 장부)
    • 과목, 학과 (교욱 및 분류 체계)

사건 엔티티(이벤트 엔티티)

업무 프로세스가 진행됨에 따라 발생하는 특정 행위나 사건을 표현하는 엔티티

  • 특징
    • 업무 수행에 따라 발생하는 행위를 기록
    • 시간의 흐름에 따라 인스턴스가 계속해서 발생
    • 발생량이 많고, 각종 통계 자료에 활용될 수 있음
  • 예시
    • 주문, 계약 청구, 매출 (판매 및 계약 관련 사건)
    • 결제, 입금, 출금, 미납 (재무 관려 사건)
    • 수강신청, 예약, 취소, 사고접수 (서비스 관련 사건)

엔티티 분류: 역할 및 발생 시점에 따른 분류

기본 엔티티(Fundamental/Key Entity)

원래부터 존재하는 정보로서, 다른 엔티티에 의해 생성되지 않고 독립적으로 존재할 수 있는 핵심적인 엔티티

  • 특징
    • 독립적으로 생성이 가능
    • 주로 다른 엔티티의 부모 역할
    • 자신만의 고유한 주식별자를 가짐
  • 예시
    • 회원, 상품, 사원, 부서, 고객 자재

중심 엔티티(Main/Center Entity)

기본 엔티티로부터 파생되어 생성되며, 해당 업무에서 중심적인 역할을 수행하는 엔티티

  • 특징
    • 기본 엔티티로부터 발생
    • 업무 프로세스의 중심적인 역할을 담당
    • 데이터 발생량이 많고, 많은 행위 엔티티를 파행
  • 예시
    • 주문, 계약, 청구, 매출

행위 엔티티(Action/Behavioral Entity)

두 개 이상의 부모 엔티티(주로 기본 엔티티와 중심 엔티티)로 부터 발생하며, 업무가 흘러가면서 생성되는 상세 정보를 기록하는 엔티티

  • 특징
    • 두 개 이상의 부모 엔티티로부터 발생
    • 데이터 내용이 자주 변경되거나 데이ㅏ터 양이 빠르게 증가
    • 상세 설계 단계에서 도출되는 경우가 많음
  • 예시
    • 주문 이력, 신청변경이력, 결제 내역, 로그, 주문 항목

엔티티 분류: 강한 엔티티와 약한 엔티티

강한 엔티티(String Entity)

다른 어떤 엔티티의 존재 여부와 관계 없이 독립적으로 존재할 수 있는 엔티티를 의미

  • 특징
    • 독립적인 존재가 가능
    • 자신만의 고유한 주식별자를 가짐
    • 다른 엔티티의 존재에 의존하지 않음
  • 예시
    • 사원, 고객, 상품, 부서 등과 같이 독립적으로 관리 될 수 있는 대부분의 엔티티

약한 엔티티(Weak Entity)

다른 엔티티가 존재하지 않으면 독립적으로 존재할 수 없는, 존재 종석적인 엔티티

  • 특징
    • 약한 엔티티는 소유 엔티티가 있어야만 자신의 존재가 의미를 가짐
  • 예시
    • 부양가족: 부양가족 정보는 특정 사원에게 소속될 때만 의미가 있음

구조적 관계 표현을 위한 특수 엔티티

사건(Event)이나 분류(Classification)와 같은 복잡한 관계를 효과적으로 모델에 반영하기 위해 사용하는 것이 바로 연관 엔티티와 슈퍼타입/서브타입 구조

연관 엔티티(Associative Entity)

두 개 이상의 엔티티 간에 발생하는 특정 사건, 행위, 계약 등을 표혀낳기 위해 도출되는 엔티티

  • 개념적 본질
    • 관계에 종속되는 속성을 저장
    • 학생과 과목의 관계에서는 성적이나 수강신청일 같은 데이터가 발생한다. 이 데이터는 학생의 것도 과목의 것도 아닌 수강이라는 행위 자체에 속한다. 이 수강을 표현하는 것이 연관 엔티티이다.
  • 구조적 의미
    • 연관 엔티티는 두 개 이상의 다른 엔티티 간에 존재하는 다대다(M:N)관계를 해소

슈퍼타입/서브타입 엔티티(Supertype/Subtype Entity)

논리적으로 동일한 개념 그룹에 속하지만 일부 속성이나 관계에서 차이가 있는 엔티티들을 효과적으로 표현하기 위한 기법

객체지향의 상속 개념과 매우 유사

  • 슈퍼타입(Supertype): 그룹 내 모든 엔티티(서브타입)들이 공통적으로 가지는 속성과 관계를 정의하는 상위 엔티티
  • 서브타입(Subtype): 슈퍼타입으로 부터 공통 속성을 상속받고, 자신만의 고유한 속성이나 고나계를 추가로 가지는 하위 엔티티

카디널리티와 참여도

  • 카디널리티: 한 엔티티의 인스턴스가 다른 엔티티의 인스턴스와 몇 개나 관계를 맺을 수 있는지를 나타내는 수량 제약

카디널리티 관계의 4가지 종류

  • 1:1
  • 1:N
  • N:1
  • M:N

ERD

  • 까마귀발 표기법

까마귀발 표기법의 핵심 기호

연관 앤티티 - 다대다 관계 해결

문제1: M:N 관계는 물리적으로 구현할 수 없다

하나의 주문에 여러 개의 상품을 주문한다고 하면, 주문 테이블에 여러 행이 들어가야 하는데, 기본 키가 존재하므로 같은 주문은 한 번 밖에 넣을 수 없습니다.

문제2: 관계에 속한 데이터를 저장할 장소가 없다

가격이나, 재고 수량같이 그 순간에만 의미를 갖는 데이터를 저장할 장소가 없습니다.

해결책: 관계를 엔티티로 승격

주문과 상품 사이에 주문 항목이라는 엔티티를 추가하여 이 문제를 해결 할 수 있습니다.

  • 주문 - 주문 항목 관계 (1:N)
    • 하나의 주문 에는 최소 하나 이상의 주문 항목 이 포함된다.
    • 하나의 주문 항목 은 특정한 주문 한 건에만 속한다.
  • 주문 항목 - 상품 관계 (N:1)
    • 하나의 주문 항목 은 반드시 하나의 상품 을 가져야 한다.
    • 하나의 상품 은 여러 번 주문될 수도, 아직 한 번도 주문되지 않을 수도 있다.

용어 사전

  • 프로젝트의 모든 구성원이 사용하느 비즈니스 용어와 실제 DB 객체명을 일관되게 매핑하여 관리하는 문서
  • 용어 혼란을 막아 개발 생산성과 시스템 안정성을 높이는 매우 중요한 역할
  • 가장 작은 단위의 단일어를 중심으로 정의하고, 이를 조합하여 사용하는 방식이 효율적
  • 용어 사전은 프로젝트 진행에 따라 지속적으로 압데이트 되는 살아있는 문서로 관리해야 함

참고

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.