개념적 모델링
요구 사항 분석
쇼핑몰 요구 사항
- 회원 기능
- 회원은 고유한 아이디, 비밀번호, 회원명, 주소(기본 배송지), 연락처 정보를 이용해 가입할 수 있다.
- 회원은 자신의 정보를 어넺든지 수정할 수 있다.
- 회원은 시스템에서 탈퇴할 수 있다.
- 상품 기능
- 관리자(또는 판매자)는 상품을 시스템에 등록할 수 있다.
- 상품은 고유한 상품 코드, 상품명, 상품 가격, 재고 수량을 정보로 가진다.
- 상품의 가격이나 재고 등은 언제든지 변경될 수 있다.
- 주문 기능
- 회원은 여러 상품을 한 번에 주문 할 수 있다.
- 주문 시, 각 상품의 주문 수량을 지정할 수 있다.
- 주문 시, 배송지를 변경할 수 있다. (기본 배송지와 다를 수 있음)
- 주문이 완료되면, 주문은 ‘주문 완료’ 상태가 되며, 고유한 주문 번호가 생서된다.
- 주문에는 주문 일시(주문한 날짜), 최종 결제 금액, 배송지 정보가 기록되어야 한다.
- 관리자는 주문 상태를 ‘배송 중’, ‘배송 완료’ 등으로 변경할 수 있다.
- 회원은 자신의 주문 내역을 목록으로 조회할 수 있다.
명사와 동사 추출
- 명사(Nouns): 우리가 관리해야 할 데이터의 대상, 즉 엔티티(Entity) 또는 그 엔티티가 가지는 속성(Attribute)이 될 확률이 높다.
- 회원, 아이디, 비밀번호, 회원명, 주소, 연락처, 상품, 상품 코드, 상품명, 가격, 재고 수량, 주문, 주문 번호, 배송지, 주문 일시, 결제 금액, 주문 내역, 주문 수량 등
- 동사(Verbs): 데이터들 사이의 행위나 관계, 즉 관계(Relationship)가 될 확률이 높다.
- 가입하다, 수정하다, 탈퇴하다, 등록하다, 변경하다, 주문하다, 조회하다
엔티티 도출하기
- 회원
- 회원은 개개인은 구별되며, 아이디, 회원명, 주소 등의 데이터를 가짐
- 엔티티 확정
- 상품
- 회원이 주문하는 대상
- 가격 재고 등의 데이터를 가짐
- 엔티티 확정
- 주문
- 회원이 성품을 구매하는 사건
- 언제, 누가, 무엇을, 몇 개 주문했는지 등의 중요한 데이터를 담고 있음
- 엔티티 확정
- 아이디, 회원명, 가격, 재고 수량, 주문 일시 등
- 독립적인 데이터 덩어리 X
- 해당 엔티티에 소속된 세부 정보, 즉 속성에 가까움
명사를 찾으라는 규칙의 실질적인 의미
- 우선 눈에 보이는 명사(고객, 상품 등)를 찾아 엔티티 후보로 삼는다.
- 다음으로, 중요한 동사(주문하다, 예약하다, 수강신청하다 등)를 찾는다.
- 그리고 그 동사가 관리해야 할 기록이나 증빙을 남기는가? 라고 질문한다.
- 만약 그렇다면, 그 동사의 명사형(주문, 예약, 수강)을 새로운 엔티티로 만든다.
엔티티란?
- 우리가 데이터를 저장하고 관리해야 할 대상
- 저장할 만한 가치가 있는 정보를 여러 개 가지고 있으면서, 다른 것과 명확히 구분되는 유무형의 모든 것
유형 엔티티
- 사람, 사물, 자옷와 같이 물리적인 형태가 있는, 우리가 직접 만지거나 볼 수 있는 대상을 의미
- 회원, 직원
- 상품, 책
- 건물
무형 엔티티
- 물리적인 형태는 없지만, 개념적으로 존재하는 대상을 의미. 즈로 사건이나 개념을 데이터로 관리할 때 나타남
- 주문, 예약, 수강 신청
- 계좌, 학과
좋은 엔티티
- 업무 관련성(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 객체명을 일관되게 매핑하여 관리하는 문서
- 용어 혼란을 막아 개발 생산성과 시스템 안정성을 높이는 매우 중요한 역할
- 가장 작은 단위의 단일어를 중심으로 정의하고, 이를 조합하여 사용하는 방식이 효율적
- 용어 사전은 프로젝트 진행에 따라 지속적으로 압데이트 되는 살아있는 문서로 관리해야 함



