데이터베이스 모델링 - 업무와 업무데이터

데이터베이스 모델링 - 업무와 업무데이터

업무를 이해하는 것과 업무데이터를 이해하는 것과는 다르다. 어떤회사의 구매 업무를 데이터 모델링한다고 가정해보자.

 

절차는 아래와 같을 것이다.

 

1. 다른 팀으로 부터 상품 구매를 의뢰 받는다.

2. 구매팀의 담당자가 상품을 판매하는 회사 가격에 대해서 시장 조사를 한다.

3. 후보 회사들과의 협상이나 입찰을 통해서 최종 구매 회사, 상품, 가격을 결정하거나 기업간 웹사이트에서 주문한다.

4. 선정된 구매건을 품의 한다.(구매팀에게도 통보한다.)

5. 품의 완결 후 엄체와 구매 계약을 맺고 계약금을 지급 한다.

6. 상품을 납품받으면 잔금을 지급하고 구매를 요청한 팀에 해당 상품을 전달한다.

 

업무를 파악하고 이해하는 것 : 단위 업무의 시작과 끝을 일의 경로나 공정을 중심으로 알아간다는 뜻. 

업무 단위 하나하나가 관심의 대상이다

 

데이터 관점으로 업무를 이해하는 것

예를 들어서 상품 구매를 의뢰 받는 과정이 컴퓨터상에서 이루어지지 않고 오프라인으로 처리된다면 상품 구매는 데이터 관점에서 제외될 수 있다. 그렇다면 데이터 관점에서 무엇이 중요 관심 대상이 되어야 하나?

 

그것은 누가, 언제, 어떤 상품을 어느 회사로 부터 구매 했느냐는 비즈니스 행위이다.

 

그래서 업무규칙을 명확히 해야 한다. 같은 상품을 구매팀의 서로 다른 담당자가 여러번 구매 할 수 있는지, 하루에도 여러번 구매 가능한지, 여러 상품을 묶어서 한번에 주문할 수 있는지 말이다. 겉으로 드러나는 업무 처리 방법을 떠나서 그 업무 안에서 데이터가 어떻게 발생을 하고 흘러가는지, 데이터 사이의 선행 관계와 같은 종속성 규칙을 관찰하고 읽어내야 한다. 즉, 업무 데이터를 이해하는 것은 기업의 비즈니스를 데이터 측면에서 처음부터 끝까지 관찰해보는 것이다.

 

즉, 업무 프로세스나 프로세스 지원 시스템의 기능과는 완전히 분리 해서 생각해야 한다. 

 

데이터 모델링 이해순서

업무이해 -> 업무 데이터의 이해 -> 데이터 구조 모델링 -> db생성

 

이전 포스팅에서 고고복싱 김복서가 왜 표를 분리 했는지 생각해보자. 회원개인정보표가 회원명부가 아니라 좋아하는 선수의 정보가 우선시 되어서 좋아하는 선수가 늘어날 때마다 행이 하나 씩 추가가 되었다. 즉 표에서 한줄을 차지하는 정보의 관리 단위가 회원이 좋아하는 선수 한명이 되는 상황을 해결하려고 했다. 정보의 관리 단위는 엔터티의 개체와 밀접한 관련이 있는데, 이 용어에 대해서는 나중에 알아보겠다.

 

상품 주문 데이터 이해

 

고객과 상품을 주문이라는 관계로 직접 연결한 모습

 

"고객과 상품 사이에는 주문이라는 관계가 있다. 한 고객이 여러 상품을 주문할 수 있고, 하나의 상품을 여러 고객이 주문할 수 있는 다대다 관계다. 이를 관계형 데이터베이스로 구현 하기 위해 다대다 관계를 해소 하면 주문이라는 관계 엔터티로만들어 진다. 그리고 주문과 상품은 여전히 다대다 관계이므로 이 것 역시 풀어주면 고객, 주문, 주문상품, 상품이라는 엔터티가 도출된다."

 

 

다대다 관계 해소 후 주문이라는 테이블 생성

 

위의 도출 과정도 주문이라는 엔터티가 도출되며 완전히 잘못됐다고 할 수 없다. 하지만 조금 다르게 주문에 대해서 생각해볼 수 있다. '고객이 특정 상품을 평생 단 한번만 구매 할 수 있다' 라는 요건이 있다면 주문은 고객과 상품의 관계 엔터티로 볼 수 있다. 즉, 구매는 구객이라는 아빠와 상품이라는 엄마 사이에 태어난 자식인 셈이다. 하지만 이건 현실적이지 않다. 현실에서는 고객이 같은 상품을 하루에 여러번 살 수있으므로, 시간이라는 개념이 추가 되어야 한다. 

 

주문을 고객과 상품의 단편적인 관계로 보면 주문이라는 데이터는 고객과 상품에 종속된다. 그래서 주문의 키 값은 <고객번호>와 <상품번호>여야 한다. 만약 동일한 고객이 1시간 후에 같은 상품을 다시 주문하면? <고객번호>와 <상품번호>만으로는 이전 주문과 구별 할 수 없다. 그래서 <주문일시>와 같은 시각 정보가, <주문일련번호> 같은 인조 식별자를 추가할 수 밖에 없다. 이는 주문이 고객과 상품의 관계 엔터티가 아니라 시간이 개입되어야 하는 트랜잭션임을 반증하는 것이다. 정리하면 주문A를 주문B와 구별해주는 식별자는 고객과 시각이다. 누가 ,언제라는 정보가 절대적으로 중요하며, 어떤 상품인지는 주문 트랜잭션을 식별하는 데 직접적인 영향이 없다. 상품은 주문이라는 트랜잭션의 참조 정보일 뿐이다.

 

 

 

주문은 상품품보다는 오히려 주문 시각이라는 시간 개념이 절대적으로 개입되는 고객 행위로 보아야 한다. 이처럼 비즈니스 행위, 즉 트랜잭션에는 반드시 시간의 개념이 들어가며 이 행위 엔터티의 식별자에 타임스탬프와 같은 시각 속성이 존재하는 것에서 확인 할 수 있다. 

 

정리

지금까지 상품 주문 데이터를 이해하고 분석하기 위해 주문이라는 행위를 중심으로 행위의 주체와 대상에 해당하는 데이터를 찾기 위해 노력했다. 이러한 접근과 시선은 앞으로 만나게 될 다양한 문제를 해결하는데 더 큰 도움을 줄것이다.

 

요약

- 업무와 업무데이터는 다르다.

- 비즈니스 행위, 트랜잭션에는 반드시 시간이 들어간다.