데이터베이스 설계와 구축(개정판) (2009년)
관계 검토 0 0 40,921

by 구루비스터디 모델검토 관계 검토 [2019.08.11]


관계 검토

엔티티타입간의 관계가 M:N인 속성은 없는가?

주요 오류 유형 사례
(1) M:N 관계를 갖는 엔티티타입에 대해 새로운 부모 엔티티타이비을 생성하여 관계를 연결하는 경우

  • => 이 모델링은 특정 부서에서 특정 시점에 발생한 자재 요청 건이 그대로 구매요청에 반영되어 조정되는 모델이다.
  • => 사위 마스터 엔티티타입 생성을 통한 M:N관계 해결


(2) 두 엔티티 중 하나의 관게를 All Or Nothing 으로 하여 1:N의 관계를 정의하는경우

  • => 업무 협의 후 일부 요청된 구매 품목의 나머지 수량은 재구매할 수 있는 것만 합의한 경우
  • => 엔티티타입간 업무 재정의를 통한 해결


(3) M:N의 관계를 갖는 엔티티타입에 대해 새로운 자식 엔티티타입을 생성하여 관계를 연결하는 경우

  • => 구매요청별 구매 엔티티타입을 통해 요청한 자재 중 일부 수량만 구매되었다면 차기 구매에서 나머지 수량의 재구매를 실시함.
  • => 동일 자재에 대해 여러 번에 걸친 구매 요청을 한번에 묶어 구매하고 싶다는 모든 요구 사항을 반영할 수 있게 된다.
  • => 하위 엔티티타입 도출을 통한 해결


엔티티타입간의 관계는 업무적 흐름과 규약이 일치하는가?

주요 오류 유형 사례
(1) 매출 및 급여에서 발행하는 전표를 통합하여 관리하는 전표 엔티티타입과 매출 엔티티타입 및 급여 엔티티타입과의 관계


  • (문제) 이 문장을 실제 테이블이 만들어진 데이터베이스에서 실행하면 왼쪽 모델에서는, 즉 필수 관게를 가지는 모델에서는 참조 속성이 Null이되므로 에러가 발생할수 밖에 없다.
  • (해결) 오린쪽 모델에서는 급여 테이블의 전표번호가 null을 허용하는 스키마 구조기 때문에 이 문장은 정상적으로 수행된다.


업무적 흐름에 비추어 도출되지 않은 관게는 없는가?

일반적으로 업무적 흐름에 비추어 도출되지 않은 관계는 다음과 같은 경우가 발생한다.
  • 1. 업무적으로 명확히 정의되지 않아 엔티티타입만 도출하고 추후에 관계 정의를 하려는 경우
  • 2. 단위 시스템간에 업무적 연계가 정의되지 않은 경우


주요 오류 유형 사례
(1) 단위 시스템 담당자들의 업무 협의 부족으로 인한 단위 시스템간 연계 엔티티타입간의 관계 미도출
  • 일반적으로 MIS에서 가지는 단위 시스템간의 연계
  • 1. 인사/급여 시스템의 급여 정보가 전표 처리됨으로써 발생하는 회계 시스템의 전표 정보
  • 2. 영업 시스템에서 매출을 통해 발생하는 회계 시스템의 전표 정보
  • 3. 구매 시스템에서 구매를 통해 발생하는 회계 시스템의 전표 및 자산 정보
  • 4. 구매 시스템에서 구매된 제품이 자재 관리 시스템에서 창고로 입고되는 정보
  • 5. 자재 관리 시스템에서 출고된 자재가 부서로 이동할 때 자신 관리 시스템에서의 자산 이동 정보
  • 6. 인사 시스템의 사원 및 부서 정보는 다른 모든 시스템에서 기본적으로 사용됨


관계에 대한 표현은 적절한 수준에서 이루어졌는가?

주요 오류 유형 사례
(1) 코드 및 통계 엔티티타입과의관계 연결

  • 코드성 엔티티타입과의 관계를 모두 표현한 인사 시스템에서 직위, 부서, 사원, 발령, 퇴직,직무 등을 모델링한 것이다.


(2) PK를 상속받은 엔티티타입과 조상 엔티티타입과의 관계 연결
  • 손자는 부모로부터 주식별자를 상속받았음에도 불구하고 원래 주식별자를 새성했던 자신의 할아버지 엔티티타입과 관계를 갖도록 설계한 예이다.

  • (문제) 수당이력과 공제이력 엔티티타입은 자신의 부모 엔티티타입인 급여이력에서 사원번호를 상속받았을 뿐만 아니라 자신의 할아버지 엔티티타입인 사원 엔티티타입에서 도 사원번호를 상속받았다.
  • (해결)수당이력과 공제 이력의 엔티티타입에서 사원번호를 생성하는 사원 엔티티타입과 관계없이 자신의 부모 엔티티타입인 급여이력과의관계를 통해 사원번호를 상속받았다.
"구루비 데이터베이스 스터디모임" 에서 2009년에 "데이터베이스 설계와 구축(개정판)" 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/4236

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입