본문 바로가기
개발/데이터베이스

[RDB] 데이터 모델 검증

by Devsong26 2023. 11. 27.

Validation & Verification

  • Validation
    • 고객 요구 사항에 대해 구축된 소프트웨어가 조건을 만족하였는지를 체크하는 것입니다.
  • Verification
    • 기본적인 시스템의 요건을 만족하는지를 확인하는 것입니다.

 

데이터베이스 구축할 때까지 데이터 모델의 관점에서는 2개의 큰 마일스톤이 있습니다. 첫 번째는 논리적 관점의 데이터 모델의 완성된 형태이며, 두 번째는 데이터베이스 특성을 고려하여 성능과 용량을 고려한 물리적 관점의 데이터 모델의 형태라 할 수 있습니다.

 

논리적 데이터 모델의 검증

논리설계에서 엔티티 타입, 관계, 식별자, 세부사항, 통합을 검증합니다.

 

물리적 데이터 모델의 검증

물리설계에서 테이블 전환, 반 정규화, 무결성, 뷰, 인덱스, 용량, 접근 방법, 분산을 검증합니다.

 

일반적으로 모델을 검증하지 않고 바로 구축으로 전환하는 이유는 두 가지가 있습니다. 첫 번째는 프로젝트 수행기간에 밀려들어가는 경우이며, 두 번째는 데이터 모델 검토에 대해 태스크 수행을 모르는 경우입니다.

 

 

 

데이터 모델을 검증하지 않으면 어떻게 될까요?

ISO9126에서 정의한 기능성, 신뢰성, 사용성, 효율성, 유지보수성, 이식성의 모든 기능을 데이터 모델이 갖추고 있는지 검증하지 않으면 품질이 낮은 데이터 모델이 그냥 사용될 수 있습니다. 특히 엔티티타입, 관계, 속성, PK, 도메인/용어와 관련해 높은 품질의 데이터 모델을 기대할 수 없습니다. 품질이 낮은 데이터베이스는 잦은 변경을 유발하게 되며 많은 수의 프로그램 수정을 유발하게 되므로 납기 지연의 주범이 됩니다.

 

 

 

검증 수행 방법

  • 데이터 모델 검증 수행자
    • 프로젝트 수행 내부 조직인 통합 모델러가 일정한 기간을 가지고 검증하는 것이 가장 좋으며, 이는 업무 파악을 위해 개발자와의 커뮤니케이션에서 장점이 있기 때문입니다.
  • 데이터 모델 검증 시의 관점
    • 모델이 비즈니스 요건을 잘 반영하였는지를 검토하는 업무적인 측면
      • 사용자 요구사항과 대비하여 미도출된 엔티티타입 및 속성은 없는지 확인합니다.
      • 엔티티타입간의 관계는 업무절차와 잘 부합하였는지 확인합니다.
    • 모델의 기술적인 관점인 규약적인 측면
      • 다른 타입/크기, CONSTRAINT를 가지는 중복된 속성이 있는지 확인합니다.
      • 엔티티간의 관계가 M:N으로 정의된 것은 없는지 확인합니다.
      • 엔티티타입명, 속성명, 관계명에 대한 정의는 모델의 일반규약을 준수하고 있는지 확인합니다.

 

 

 

데이터 모델 검증 시 체크리스트

  • 엔티티타입 검토 체크리스트
    • 선정된 PRIMARY KEY가 업무적으로 발생하는 자료의 유일성을 보장하나요?
    • 선정된 PRIMARY KEY는 효율적인 모습을 가지고 있나요?
    • 자료의 발생 유형이 유사항 엔티티는 통합되었나요?
    • 독립된 엔티티타입이나 엔티티타입의 그룹은 존재하나요?
    • 병합 또는 분리돼야 할 엔티티타입은 존재하나요?
    • 추가적으로 도출돼야 하거나 불필요한 엔티티타입은 없나요?
    • 엔티티타입이 주변 여러 엔티티타입의 공통 엔티티타입인 경우 자료 원천이 어느 엔티티타입인지 추적 가능한가요?
    • PRIMARY KEY의 순서는 시스템의 성능을 고려하여 적절한 순서로 정의되어 있나요?
  • 속성 검토 체크리스트
    • 반정규화된 속성은 식별되나요?
    • 반정규화는 시스템 복잡도와 성능을 고려하여 적절하게 이뤄졌나요?
    • 동일 명칭을 가지는 속성의 타입과 크기는 동일한가요?
    • 내부적인 속성을 가지고 있는 속성은 없나요?
    • 병합돼야 할 속성은 없나요?
    • 전후 레코드 간 영향을 미칠 수 있는 속성은 없나요?
    • 감사, 통계 등을 고려하여 속성이 정의됐나요?
  • 관계 검토 체크리스트
    • 엔티티타입 간의 관계가 M:N인 속성은 없나요?
    • 엔티티타입 간의 관계는 업무적 흐름과 규약이 일치하나요?
    • 업무적 흐름에 비추어 미도출된 관계는 없나요?
    • 관계에 대한 표현은 적절한 수준에서 이루어졌나요?
  • 도메인/용어 검토 체크리스트
    • 도메인이 적절히 정의되어 관리되고 있나요?
    • 도메인의 변경에 따라 속성이 변경되고 있나요?
    • 데이터 모델의 용어가 일관성을 유지하나요?

 


 

참고 도서

- 아는 만큼 보이는 데이터베이스 설계와 구축