상세 컨텐츠

본문 제목

[DB] 데이터 모델링 - ERD 실습 문제 : 판매전표 모델

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

by 사랑짱 2021. 5. 27. 13:55

본문

실습. 판매전표 모델

 

 

 

 

위 내용의 판매전표 모델을 보고 ERD를 작성해보자.

먼저, 관계 정의서를 작성하면서 엔티티 간의 관계를 추출해보자.

기준 엔티티 관계형태  참여방법 관련 엔티티
부서 1 : M --- 선택 ---> 
<--- 필수 ---
판매전표
사원 1 : M --- 선택 ---> 
<--- 필수 ---
판매전표
고객 1 : M --- 선택 ---> 
<--- 필수 ---
판매전표
판매전표 M : N --- 필수 ---> 
<--- 선택 ---
제품

 

 

 

위에 작성한 관계 정의서를 바탕으로 엔티티의 뼈대를 만들어보자.

문제에서 제공된 내용을 바탕으로 주키를 적어두었으며,

판매전표 - 제품의 관계가 M : N 이므로 Mapping 엔티티로 판매전표목록을 추가했다.

 

 

 

 

 

이제 각 엔티티에 해당하는 속성을  모두 찾아 적어보자.

부서 사원 고객 판매전표 판매전표목록 제품
부서코드(PK) 사원번호(PK) 고객번호(PK) 판매부서코드(FK)
판매일자(PK)
판매순번(PK)
판매부서코드(FK)
판매일자(FK)

판매순번(FK)
제품번호(FK)
제품번호(PK)
부서명
부서별 판매실적
사원명 고객명
고객주소
누적판매금액
판매금액
수금액
미수금액
고객번호(FK)
사원번호(FK)
수량
금액
제품명
단가

 

위에 있는 속성을 제대로 정의했는지 다시 한번 확인해보자. 

 

먼저 각 엔티티의 속성 중 추출속성(파생속성)을 찾아보자

부서별 판매실적, 누적판매금액, 미수금액, 금액이다.

그러면 이를 바탕으로 중복을 줄일 수 있는 속성을 정리해보자.

 

미수금액 : 판매금액 - 수금액
금액 : 단가 * 수량

 

※ 부서별 판매실적, 누적판매금액은 부서별/고객별로 관리되어야 하기 때문에

판매전표 내에 판매금액으로 관리가 될 수 없는 부분이다.

 

위 내용을 바탕으로 수정된 속성은 아래 표와 같다.

부서 사원 고객 판매전표 판매전표목록 제품
부서코드(PK) 사원번호(PK) 고객번호(PK) 판매부서코드(FK)
판매일자(PK)

판매순번(PK)
판매부서코드(FK)
판매일자(FK)

판매순번(FK)
제품번호(FK)
제품번호(PK)
부서명
부서별 판매실적




사원명




고객명
고객주소
누적판매금액


판매금액
수금액
미수금액
고객번호(FK)
사원번호(FK)
수량
금액



제품명
단가



 

 

 

 

수정된 속성으로 ERD를 작성해보자.

 

 


하지만, 위와 같이 속성을 작성할 경우 문제가 발생한다.

부서엔티티에 부서별 판매실적이 속성으로 있으면 부서별 판매실적이 일자별로 나올 수가 없다. 

왜? 속성은 한 시점에 한개의 값만을 가져야 하기 때문이다.

하나의 속성이 시간에 따라 여러 개의 값을 가지면서 관리되어야 한다면 새로운 엔티티를 생성하자.

 

따라서, 부서별로 일일판매실적이 관리될 수 있도록 엔티티를 추가한다.

 

 

 

 

이외에도 요구사항에 가격의 변동이 추가된다면 제품엔티티에 가격 관련 엔티티를 추가하면 된다.

엔티티를 작성할 때는 속성에 대한 정의를 제대로 했는데 체크하는 것이 중요하다. 

앞서 정리해둔 속성(Attribute)에 대한 개념을 다시 한번 정리해보자.

 

엔티티가 관리할 특성인가?
의미적으로 독립적인 최소단위인가?
하나의 값만을 가지고 있는가?
원본인가? 파생된 값인가?

 

 

 

 

관련글 더보기