본문 바로가기
공부/데이터 베이스

<핵심 데이터 모델링> - 논리 모델링

by xladmt 2024. 7. 1.

논리 모델링이란?

데이터를 명확하고 구체적으로 정의하는 과정으로, 비즈니스 전체 영역에 대한 상세한 수준의 데이터 구조를 설계

 

엔티티 정의 및 상세화

주문 업무에서 고객, 상품 엔티티는 핵심 엔티티로 볼 수 있고, 주문 엔티티는 중요 엔티티, 주문 상세 또는 주문결제 등은 행위 엔티티로 볼 수 있다.

 

핵심엔티티

업무 처리와 상관없이 독립적으로 이미 정의한 엔티티거나, 업무를 위해 미리 정의한 엔티티다. 고객, 부서, 직원, 상품 등 단독으로 존재하거나 다른 핵심 엔티티에 종속되기도 한다.

 

핵심 엔티티의 데이터 성격)

  • 유형 및 분류(Type & Category) : 고객유형코드, 상품분류코드 등 각종 코드정보
  • 업무규칙 및 지식(Rule & Knowledge) : 직급별 연봉, 보험료 조건, 지역별 담당자
  • 업무주체 및 대상(Subject & Object) : 부서, 사원, 고객, 상품
  • 장소(Where) : 물류창고, 공장, AS센터, 도로, 채널, 지역, 좌표 등

 

* 업무 행위의 주체, 행위의 대상(목적), 육하원칙에 해당하는 부분들

 

중요엔티티

업무 주체(고객, 직원)와 업무 대상(상품) 간의 거래나 업무 행위에 의해 발생하며, 주문, 약정, 입출고처럼 구별 가능한 업무 행위를 대표하는 엔티티

  • 핵심 엔티티 간의 관계 엔티티(종속적인) 성격을 가지면서, 업무영역 내에서는 비교적 독립적인 성격(강한 엔티티)을 가진다.
  • 상위 엔티티의 주 식별자를 상속받지 않고, 계좌번호와 같은 독립적인 주 식별자를 가지고 있다는 점에서 다른 엔티티들과 구분할 수 있다.
  • 주문번호, 계좌번호, 입출고번호처럼 업무행위를 대표하는 별도의 번호 및 번호 구성 체계를 가진다.
  • 업무의 핵심 기능과 밀접한 관련이 있고, 주요 업무에서 반복하여 발생하는 데이터를 관리하는 엔티티다.

 

행위엔티티

업무 행위에 대한 상세내역 및 업무 결과에 대한 상태(Status)를 나타내는 엔티티이며, 중요 엔티티에 종속되거나 다른 행위 엔티티에 종속된다.

  • 주로 중요 엔티티에 인스턴스가 발생함과 동시에 행위 엔티티에도 하나 이상의 인스턴스가 발생한다.
  • 주문내역, 결제내역, 배송지상세내역 등이 해당된다. 
  • 하위에 또 다른 행위 엔티티를 가질 수 있으며, 정규화 과정에서 다른 엔티티로 분리하기도 한다.

 

예시)

- 상세/내역 : 품의 내역, 품의 거래처, 품의 첨부파일, ...
- 상태 : 품의 진행상태
- 이력관리 : 품의 이력

 

 

식별자 지정

  • 식별자는 유일하게 식별 가능한, 최소 속성으로 구성하고, 변하지 않으면서, 반드시 존재하는 값이어야 한다.
  • 모든 엔티티는 식별자를 가져야 하며, 식별자를 가지지 못하면, 정상적인 엔티티가 아니라 임시 저장 성격의 데이터일 가능성이 높다.

 

본질 식별자

  • 엔티티에 원래 존재하는 속성으로 구성된 식별자 (사원번호, 주민등록번호, ...)
  • 그렇지 않은 경우 : 업무 처리나 이벤트 성격의 데이터인 경우 ( 회원ID, 계좌번호)

 

인조 식별자

  • 인위적으로 부여한 일련번호 형식의 식별자

 

<인조 식별자를 정의하는 경우>

⑴  엔티티를 통합할 때 통합 대상 엔티티 식별자가 서로 다르거나, 데이터 집합 단위가 다른 경우

⑵  식별자 속성 개수가 많아져 모델이 복잡해질 때 단순화와 개발 편의성을 위해 인조 식별자를 추가하는 경우

⑶ 개인정보 암호화 대상에 해당하여 본질 식별자를 주 식별자로 사용하지 못하는 경우

⑷ 본질 식별자에 대한 데이터가 들어 오지 않은 상태에서 업무 처리를 위해 인조 식별자를 추가하는 경우

 

코드 표준화

  • 업무에서 통계를 내거나 한정된 데이터 값을 목록화하여 관리하고자 하는 대상을 코드로 식별하여 정의
  • 코드는 공통코드로 통합하여 관리하거나, 개별 테이블 형태로 관리(목록성 코드)

 

코드 사전

  • 코드 사전에서는 코드에 대한 코드유형ID, 코드유형명, 코드, 코드명 등을 정의한다.
  • 코드유형을 정의할 때 업무에서 동일한 의미로 사용하는 코드는 최대한 통합하여 단일 코드유형으로 정의한다.

 

 

코드체계 코드체계 설명 코드 예시
분류형 대/중/소 세분류 형태의 계층형 코드체계를 가지며, 코드 자리수에 의미를 부여하여 사용한다.  한국표준산업분류
01 : 농업
011 : 작물 재배업
0111 : 곡물 및 기타 식량작물 재배업
012 : 축산업
일련번호형 일련번호와 같이 의미없는 번호를 순차적으로 부여한다. 길이만큼 앞에 '0'을 채운다.  고객유형 
01 : 개인
02 : 법인
99 : 기타
약어형 의미를 지니는 영문약어명으로 코드를 부여한다. ▶ 성별
M : 남자
F : 여자
차용형 일반적으로 통용되는 코드를 그대로 사용한다. ▶ 은행코드
001 : 한국은행
002 : 산업은행
003 : 기업은행

<코드 부여>

 

 

[참고]

<핵심 데이터 모델링 - 유동오 저>

https://velog.io/@_soon/%ED%95%B5%EC%8B%AC-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%AA%A8%EB%8D%B8%EB%A7%81-%EB%85%BC%EB%A6%AC-%EB%AA%A8%EB%8D%B8%EB%A7%81