상세 컨텐츠

본문 제목

[DB] 데이터 모델링 - ERD 작성 과정과 예시

DevOps/DB-데이터베이스설계

by 사랑짱 2021. 5. 27. 17:06

본문

<업무 처리 내용>

◆ 많은 전산화 관련 프로젝트를 수행하는 모 SI회사에는 수백 명의 사원들이 재직하고 있다. 각 사원들에 대하여 사원번호(유일함), 이름, 직책, 급여, 주 소, 핸드폰번호를 관리한다. 주소는 우편번호와 세부주소로 나누어서 등록 한다.
◆  사원이 부양하는 부양가족에 관한 정보도 관리하며, 사원은 0명 이상의 부 양가족을 등록할 수 있다. 이 때 부양가족은 오직 한 명의 사원에게만 속한 다. 부양가족에 관한 정보는 부양가족의 이름, 성별, 사원과의 관계, 나이 등의 정보를 관리한다.
◆ 프로젝트를 수주하면 프로젝트명과 발주처, 프로젝트기간(시작일자, 종료일 자), 수주금액, 프로젝트 개요 등을 저장하며, 이때 해당 프로젝트에 대한 프로젝트ID가 자동으로 부여된다.
◆ 등록된 프로젝트에 대해 영업사원은 팀장과 상의하여 PM(프로젝트 매니저) 를 선정하여 등록한다. PM은 PL(프로젝트 리더)와 프로젝트팀원을 선정하 여 역할과 함께 등록한다. 프로젝트 팀에 선정된 인원들은 가급적 프로젝트 기간 동안 유지되지만 여러 가지 사정으로 불가피하게 중간에 교체되거나 추가 또는 프로젝트 기간 중간에 투입 완료될 수도 있어서 투입기간을 관리하여야 한다.
◆ 각 프로젝트를 진행하기 위해서는 여러 물품들이 필요하다. 한 물품이 두 개 이상의 프로젝트에서 사용될 수도 있다. 하나의 물품은 다른 여러 개의 물품들로 구성될 수 있으며, 각 물품에 대해서는 물품번호(유일함), 물품명, 가격, 그 물품이 다른 물품들로 구성되는 경우에는 구성물품에 관한 정보도 관리한다.
◆ 물품을 공급하는 공급자가 있다. 공급자 별로 공급이 가능한 물품 정보도 관리한다. 한 공급자는 여러 물품들을 공급할 수 있고, 각 물품은 여러 공급자들로부터 공급될 수 있다. 각 공급자에 대해서 공급자번호(유일함), 공 급자명, 신용도, 거래시작일자를 관리한다.
◆ 각 공급자에 대하여 그 공급자가 어떤 물품을 어느 프로젝트에 얼마나 공급하였는가를 관리한다.

 

1. 요구사항 정의서

요구사항 ID 요구사항명 상세내용 요구유형 관련엔티티
RQ - 1000 사원 - 회사에 등록된 모든 임직원은 '사원'

- 사원번호, 이름, 직책, 급여, 주소, 핸드폰번호 관리
(주소 : 우편번호 - 세부주소로 나누어 등록/관리)

- 사원이 부양하는 부양가족에 대한 정보를 관리
(부양가족에 대한 정보 : 부양가족의 이름, 성별, 관계, 나이 등)

- 한명의 사원은 여러 명의 부양가족을 가질 수 있으며 한명의 부양가족은 반드시 한명의 사원과 연결
기능 사원
부양가족
RQ - 2000 부서 - 부서에는 여러 명의 사원이 있으며, 사원은 하나의 부서에 소속

- 부서번호, 부서명, 지점, 위치(층) 관리
기능 부서
사원
RQ - 3000 프로젝트 - 회사에는 여러 개의 프로젝트가 수행

- 프로젝트에는 여러 명의 사원이 투입

- 프로젝트ID(자동등록), 프로젝트명, 발주처, 프로젝트 기간(시작/종료일), 수주금액, 프로젝트 개요 관리

- 구성원, 구성원 역할, 투입기간 관리
(구성원 : PM, PL, 프로젝트팀원 / 투입기간 : 중간에 교체, 추가 가능)
기능 프로젝트
사원
RQ - 4000 공급자 - 공급자번호, 공급자명, 신용도, 거래시작일자 관리

- 한 공급자 - 여러 물품 공급 가능

- 각 공급자가 어떤 물품을 프로젝트에 얼마나 공급하였는지 관리
기능 공급자
물품
프로젝트
RQ - 5000 물품 - 하나의 프로젝트에서 여러 가지 물품이 사용

- 하나의 물품은 두 개 이상의 프로젝트에서 사용

- 물품번호, 물품명, 가격, 구성물품 관리
(구성물품 : 다른 물품들로 구성되는 경우 기재)

- 공급자 별로 공급이 가능한 물품 정보 관리
기능 물품
프로젝트
공급자

 

 

2. 엔티티 기본정의서

엔티티명 엔티티 설명 동의어/유의어 관련속성 비고
사원 회사에서 근무하는 임직원 - 사원번호, 이름, 직책, 급여, 주소, 핸드폰번호  
부양가족 사원이 부양하는 가족 - 이름, 성별, 관계, 나이  
부서 회사 내에 존재하는 팀 단위 조직 - 부서번호, 부서명, 지점, 위치(층)  
프로젝트 회사에서 수행되는 과제 - 프로젝트ID, 프로젝트명, 발주처, 프로젝트 기간(시작/종료일), 수주금액, 프로젝트 개요  
물품 프로젝트에 투입되는 자재 - 물품번호(유일), 물품명, 가격, 구성물품  
공급자 물품을 공급하는 개인 또는 조직 - 공급자번호(유일), 공급자명, 신용도, 거래시작일자  

 

 

3. 관계매트릭스

  사원 부서 프로젝트 공급자 물품
사원 - 소속된다 참여한다 - -
부서 배치된다 - - - -
프로젝트 수행한다.   - 물품을 주문한다. -
공급자 - - 물품을 제공한다 - 관리한다
물품 - - - 확보한다 구성물품을
관리한다

 

 

4. 관계정의서

기준 엔티티 관계형태 참여방법 관련 엔티티
부서 1 : M --선택-->
<--필수--
사원
사원 1 : M --선택-->
<--필수--
부양가족
프로젝트 M : N --선택-->
<--선택--
사원
프로젝트 M : N --필수-->
<--선택--
물품
물품 M : N --선택-->
<--선택--
공급자
물품 1 : M --선택-->
<--필수--
구성물품

 

 

5. ERD 작성

 

 

<어려웠던 부분 다시 짚기>

 

◇ 물품 - 구성물품 

    WHY 병렬관계일까?  

   - 엔티티 간 독립적으로 분리되어 있으면서 두개 이상의 관계가 상호 간에 존재하기 때문

     ( 구성된다 - 구성한다 )

 

물품 - 공급자 / 물품 - 프로젝트

    WHY?  둘다 M : N 관계인데 <물품 - 프로젝트> 관계는 명시적으로 나타나지 않았을까?

   "물품을 공급하는 공급자가 있다. 공급자 별로 공급이 가능한 물품 정보도 관리한다. "

   - 물품과 공급자 간 공급이 가능한 물품정보(엔티티)가 있어야 한다고 요청했으며

     공급가능한 물품 중에서 프로젝트에 물품이 공급되었기 때문이다.

 

결국, 요구사항 정의서를 꼼꼼하게 파악하고 작성하는 것이 중요한 것 같다!!

관련글 더보기