'db설계'에 해당되는 글 1건

  1. 2007/10/23 foleafs [2회] 논리 데이터 모델링 - 하향식 방법
1) 논리 데이터 모델링

논리 데이터 모델링은 앞에서도 언급한 바와 같이 정보 시스템의 데이터베이스에 저장되어야 하는 데이터를 도출하여 최적의 저장 구조로 저장될 수 있는 데이터베이스 구조를 도출하는 것이다 . 논리 데이터 모델링을 수행하는 방법은 하향식 (Top-Down) 방법과 상향식 (Bottom-Up) 방법으로 구분된다 . 하향식 방법은 데이터베이스에 저장되어야 하는 개체를 먼저 도출하고 , 속성을 도출 및 관계를 설정하는 방법으로 논리 개체 - 관계도를 작성하는 방법이다 . 따라서 이는 해당 업무 ( 사업 ) 에 대하여 잘 알고있는 관련자들과 업무 협의를 하며 협의 결과로 도출된 내용을 기준으로 개체를 도출하고 , 도출된 개체들의 관계를 설정하며 , 도출된 개체에 적절한 속성을 추가하는 방법이다 . 상향식 방법은 현재 사용자들이 사용하고있는 업무와 관련된 장표 / 양식 / 관리대장 / 관련문서 등을 분석하여 논리 개체 - 관계도를 작성하는 방법이다 .

1.1) 하향식 방법
하향식 방법은 주로 업무 분석한 내용을 간단 형식의 단 문장으로 정리한 시나리오를 사용한다 . 예를 들면 , 구매발주 부서에서 업무 협의한 내용을 [ 표 1] 과 같이 정리해 볼 수 있다 .

[ 표 1] 구매 발주 업무 시나리오

1)  각 부서에서 구매의뢰를 한다.

2)  구매의뢰에 따라 구매발주가 이루어진다.

3)  구매의뢰는 구매의뢰번호를 주 식별자로 관리하며 구매의뢰일자 및 구매품목과 관련된 내용들을 관리한다.

4)  구매발주는 구매발주번호로 관리되며 , 구매발주일자 등의 내용을 관리한다 .

5)  한건의 구매의뢰는 여러 번 발주될 수 있다.

6)  여러 건의 구매의뢰를 한꺼번에 발주할 수는 없다.

7)  발주되는 품목인 발주자재는 자재- Master 에 주 식별자 자재코드로 관리된다.

8)  자재-Master에는 자재명, 규격, 측정단위 등의 정보가 관리되어야 한다.

9)  한건의 발주는 한 거래처에 한 장의 구매발주서로 발행된다.

10)  거래처에는 거래처코드, 거래처명, 사업자등록번호 등의 정보가 관리된다.

11)  한 장의 구매발주서에는 여러 품목을 발주할 수 있다.

12)  단일 의뢰 및 발주에는 같은 품목을 여러 번 의뢰, 발주할 수 없다.

시나리오를 이용한 하향식 데이터 모델링 방법은 먼저 구축하고자 하는 정보 시스템과 관련이 있는 관련자들로부터 업무 설명 및 업무 협의를 수행하여 도출된 내용을 간단한 문장으로 정리하는 것으로부터 시작한다 . 물론 여기에 제시한 예제는 특정 업무 전체를 정리한 것은 아니지만 , 독자 여러분들에게 하향식 데이터 모델링 방법을 설명하기에는 충분하다고 생각된다 .

다음으로는 정리된 시나리오에 나타나는 모든 명사들 중에서 데이터베이스에 저장되어 정보로 관리되어야 하는 명사들을 도출한다 . 따라서 도출되는 명사들을 정리해보면 [ 표 2] 와 같이 정리할 수 있다 .

[표 2] 구매 발주 업무 명사 도출

1)  부서, 구매의뢰

2)  구매의뢰, 구매발주

3)  구매의뢰, 구매의뢰번호, 구매의뢰일자, 구매품목

4)  구매발주 , 구매발주번호 , 구매발주일자 ,

5)  구매의뢰, 발주

6)  구매의뢰, 발주

7)  발주, 품목, 발주자재, 자재- Master, 자재코드

8)  자재-Master, 자재명, 규격, 측정단위

9)  발주, 거래처, 구매발주서

10)  거래처, 거래처코드, 거래처명, 사업자등록번호

11)  구매발주서, 품목, 발주

12)  의뢰, 발주, 품목, 의뢰, 발주

다음은 도출된 명사들을 정리하는 단계이다 . 이 단계는 도출된 명사들이 같은 의미를 갖는 여러 가지 명사로 표현할 수 있으므로 이러한 명사들은 한 개만 남기고 모두 제거하거나 , 대체하는 과정이다 .

먼저 , ‘ 의뢰 ' 와 ‘ 발주 ' 는 각각 ‘ 구매의뢰 ' 와 ‘ 구매발주 ' 를 의미하므로 이를 ‘ 구매의뢰 ' 와 ‘ 구매발주 ' 대체하고 , ‘ 구매발주서 ' 는 ‘ 구매발주 ' 의 결과 산출물이므로 ‘ 구매발주 ' 로 대체한다 . 그리고 ‘ 품목 ', ‘ 구매품목 ', ‘ 발주자재 ', ‘ 자재 -Master' 는 같은 내용을 서로 다른 명칭으로 설명한 것이므로 이들을 모두 ‘ 자재 -Master' 로 대체한다 . 이를 정리하면 [ 표 2] “ 구매 발주 업무 명사 도출 ” 에 나타난 내용을 기준으로 [ 표 3] “ 구매 발주 업무 명사 대체 ” 와 같이 된다 .

[ 표 3] 구매 발주 업무 명사 대체

1)  부서, 구매의뢰

2)  구매의뢰, 구매발주

3)  구매의뢰, 구매의뢰번호, 구매의뢰일자, 자재- Master

4)  구매발주 , 구매발주번호 , 구매발주일자 ,

5)  구매의뢰, 구매발주

6)  구매의뢰, 구매발주

7)  구매발주, 자재- Master , 자재- Master , 자재- Master, 자재코드

8)  자재-Master, 자재명, 규격, 측정단위

9)  구매발주, 거래처, 구매발주

10)  거래처, 거래처코드, 거래처명, 사업자등록번호

11)  구매발주, 자재- Master , 구매발주

12)  구매의뢰, 구매발주, 자재- Master , 구매의뢰, 구매발주

이를 다시 간략히 정리하면 [ 표 4] “ 구매 발주 업무 명사 정리 ” 와 같이 정리된다 .

[ 표 4] 구매 발주 업무 명사 정리

1)  부서, 구매의뢰

2)  구매의뢰, 구매발주

3)  구매의뢰, 구매의뢰번호, 구매의뢰일자, 자재- Master

4)  구매발주 , 구매발주번호 , 구매발주일자 ,

5)   

6)   

7)  구매발주, 자재- Master , 자재코드

8)  자재-Master, 자재명, 규격, 측정단위

9)  구매발주, 거래처

10)  거래처, 거래처코드, 거래처명, 사업자등록번호

11)   

12)  구매의뢰, 구매발주, 자재- Master

다음 단계는 속성화 대상 명사의 정리이다 . 이 단계는 남아있는 명사들 중에서 속성 , 즉 해당 개체의 데이터 항목으로 존재해야 할 명사들을 파악하여 정리하는 단계이다 . 속성화 대상 명사들을 정리해보면 [ 표 5] 와 같이 표현된다 .

[ 표 5] 구매 발주 업무 속성화 대상 명사 정리

1)  부서, 구매의뢰

2)  구매의뢰, 구매발주

3)  구매의뢰(구매의뢰번호, 구매의뢰일자), 자재- Master

4)  구매발주 ( 구매발주번호 , 구매발주일자 )

5)  

6)   

7)  구매발주, 자재- Master( 자재코드, 자재명, 규격, 측정단위)

8)  자재-Master,

9)  구매발주, 거래처(거래처코드, 거래처명, 사업자등록번호)

10)  거래처,

11)   

12)  구매의뢰, 구매발주, 자재- Master

‘ 구매의뢰번호', ‘구매의뢰일자'는 ‘구매의뢰'의 속성이 되고, ‘ 구매발주번호 ', ‘ 구매발주일자 ' 는 ‘구매발주'의 속성이 된다. 그리고 ‘자재코드', ‘자재명', ‘규격', ‘측정단위'는 ‘자재- Master' 의 속성이 되고 , ‘ 거래처코드', ‘거래처명', ‘사업자등록번호'는 ‘거래처'의 속성이 된다.

이제 “4) 구매발주 ”, “8) 자재 -Master” 그리고 “10) 거래처 ” 는 개체 - 관계도를 작성하기에는 의미 없는 명사이므로 제거해도 된다 . 왜냐하면 현재 도출된 명사 중에서 개체로 도출되는 명사는 “ 부서 ”, “ 구매의뢰 ”, “ 구매발주 ”, “ 자재 -Master”, “ 거래처 ” 라는 것을 알 수 있기 때문에 독자적으로 존재하는 개체는 다른 부분에 이미 포함되어 개체화 할 필요가 없는 명사로써 제거의 대상이다 . 이를 근거로 개체를 도출하여 도식해보면 [ 그림 2] “ 구매 발주 업무 개체 도출 ” 과 같이 표현 할 수 있다 .

[ 그림 2] 구매 발주 업무 관계 도출

[ 그림 2] 의 경우에 시나리오에는 나타나 있지 않은 ‘ 부서코드 ' 와 ‘ 부서명 ' 속성을 ‘ 부서 ' 개체의 속성으로 설정했다 . 그 이유는 개체들은 개체에 존재하는 모든 인스턴스들을 유일하게 식별할 수 있어야 한다는 개체 무결성 제약조건이 존재하기 때문이다 . 그리고 개체들 간의 관계를 설정하기 위해서는 모든 개체에 주 식별자가 존재해야 하기 때문이다 .

이제 도출된 개체들의 관계를 설정해야 하는데 , 데이터 모델링이 익숙하지 않거나 , 업무를 잘 모르는 사람들에게는 관계를 설정하는 것이 너무 막연한 일이다 . 그러나 주어진 시나리오에 존재하는 동사들이 데이터베이스에 존재하는 개체들 간의 관계를 결정한다는 사실만 기억한다면 여러 독자들은 개체들 간의 관계 설정이 어렵지 않은 일이라는 것을 파악할 수 있다 .

다음은 주어진 시나리오를 분석하여 동사를 도출해서 관련 개체를 정리한 예제이다 . 동사를 정리할 때에는 [ 표 5] “ 구매 발주 업무 속성화 대상 명사 정리 ” 와 같이 개체를 도출하기 바로 전 상태의 정리된 시나리오를 활용하는 것이 보다 바람직하다 . [ 표 6] 은 동사를 정리한 것이다 .

[표 1] 구매 발주 업무 시나리오의 동사 정리

1)  한다. (부서, 구매의뢰)

2)  이루어진다. (구매의뢰, 구매발주)

3)  관리한다. (구매의뢰, 자재- Master)

4)   

5)   

6)   

7)  관리된다. (구매발주, 자재- Master)

8)   

9)  발행된다. (구매발주, 거래처)

10)   

11)   

12)  없다. (구매의뢰, 구매발주, 자재- Master)

이제 동사 뒤에 위치시킨 개체들 간에 관계를 설정하면 된다 . 예를 들어 “1) 한다. (부서, 구매의뢰)”를 살펴보면 ‘부서' 개체와 ‘구매의뢰' 개체가 관계를 맺어야 한다는 것을 알 수 있다. 또 다른 예제로 “3) 관리한다. (구매의뢰, 자재- Master)” 를 살펴보면 ‘ 구매의뢰' 개체와 ‘자재- Master' 개체는 관계를 갖는다는 것을 알 수 있다 . 이때 주의해야 하는 점은 관계 설정의 차수를 정확하게 표현하는 것이다 . 차수의 종류 및 자세한 설명은 여러분들이 참조할 수 있는 많은 관련 서적들에 정리되어 있으므로 여기에서는 생략하기로 한다 .

일반적인 구매 발주 업무의 경우를 예제로 관계를 설정하면 [ 그림 3] “ 구매 발주 업무 관계 도출 ” 과 같이 표현될 수 있다 .

[ 그림 3] 구매 발주 업무 관계 도출

관계를 설정할 때에는 특정 개체를 대상으로 발생하는 상대 개체의 데이터 발생 비율을 파악해서 차수를 결정해야 한다 . 예를 들어 하나의 부서에서 구매의뢰를 하지 않을 수도 있고 , 한번만 할 수도 있고 , 여러 번 할 수도 있기 때문에 1 : 0, 1 :1, 1 : n 을 모두 표현했다 . 그리고 다른 예제로 시나리오에 나타나있는 내용을 근거로 관계를 설정한 ‘ 구매의뢰 ' 와 ‘ 구매발주 ' 개체의 관계이다 . 이는 “5) 한건의 구매의뢰는 여러 번 발주될 수 있다.”와 “6) 여러 건의 구매의뢰를 한꺼번에 발주할 수는 없다.”라는 내용에서 ‘ 구매의뢰 ' 와 ‘ 구매발주 ' 개체의 관계는 1 : 0, 1 :1, 1 : n 으로 결정되는 것이다 . 특히 ‘ 구매의뢰 ' 와 ‘ 자재 -Master' 개체 , 그리고 ‘ 구매발주 ' 와 ‘ 자재 -Master' 개체의 관계가 n : n 관계로 설정되는 것에 주의를 기울여야 한다 . 이러한 관계는 다 : 다 (Many-to-Many) 관계라고 표현되는데 , 이러한 관계는 교차 개체 (Intersection Entity) 를 삽입하여 제거해야 하는 관계이다 . 교차 개체는 다 : 다 관계를 발생 시킨 개체들 사이에 위치시키며 , 다 : 다 관계를 발생 시킨 개체들의 주 식별자를 새로 생성되는 개체의 주 식별자로 설정한다 . ( 특별한 업무의 경우에는 예외적으로 만들 수 있음 .) 이를 반영하여 [ 그림 3] 을 변경해 보면 [ 그림 4] 와 같은 구매 발주 업무 개체 - 관계도를 작성할 수 있다 .

[ 그림 4] 구매 발주 업무 개체 - 관계도

데이터 모델링의 초보자들은 이 교차 개체를 도출하는 방법과 관계를 설정하는 방법에 특히 주의를 기울여야 한다 .

따라서 독자 여러분들은 여러분들이 구축해야 하는 데이터베이스와 관련된 업무를 수행하는 관련자와 업무 협의를 수행한 후에 [ 표 1] 과 같은 시나리오만 잘 작성할 수 있다면 , 여러분들은 논리 개체 - 관계도를 만들 수 있다는 것을 알 수 있다 . 이러한 방법이 하향식 데이터 모델 설계 방법이다.

출처 : 아이엠데브



 

항상 느끼는 것이지만.. 사용자의 요구사항을 정확한 문장으로 만드는 기술...
그게 가장 어려운거 같다..
이 글에서도 느껴지는게.. 사용자의 요구사항을 단문장으로 만드는 거다..
단문장으로 만들어진다면.. 명사돌출 -> 명사 정리 -> 명사 대체 -> 동사 정리 이러한 순서를 통하여 ERD를 그릴 수가 있다..
이건 정말... 단문장만드는것.. 이게 포인트다!
그러나.. 사용자의 요구사항을 단 문장으로 바로 만들어 갈려면.. 얼마나 많은 사람의 요구사항을 파악 해야 하는 것일까? 어떤 훈련이... 사용자의 요구사항을 하나의 문장으로 나눌 수 있지?
크리에이티브 커먼즈 라이센스
Creative Commons License
2007/10/23 01:10 2007/10/23 01:10
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://dbilove.com/tt/foleafs/rss/response/79