본문 바로가기
Tech/DAP

데이터 모델링(데이터 모델링 이해)

by Augustine™ 2018. 6. 6.
반응형

데이터 모델링 이해


 

1. 데이터 모델링 개요

 데이터 모델링 탄생 배경

 초창기 정보 시스템은 데이터의 저장 매체가 존재하지 않았으며, Batch 프로그램 위주의 정보시스템이었다. 하지만, 정보 기술이 발전함에 따라, Batch 위주의 정보시스템은 한계가 있었으며, 데이터 중심의 관리 기법이 발전하게 되었다. 정보 시스템의 핵심은 바로 데이터(정보)를 어떻게 하면 중복없이 정확하게 유지 관리할 수 있을까에 대한 근본적인 고민을 하게 되면서, 개체 관계 모델링 기법이 발전하게 되었던 것이다.

 그렇다면 모델은 어떻게 정의해야 할까? 우리는 일상 생활에서 모델을 많이 접하고 있다. 예술 분야의 작품의 대상과 건축 분야의 설계도 등을 우리는 모델이라고 일컫는다. 이와 같이 모델이란 어떤 대상을 의미하는 포괄적 의미를 가지고 있으며, 특히 데이터 모델은 현실 세계에 대한 우리가 관심있는 대상을 데이터베이스화하기 위한 개념적 도구라고 정의할 수 있다.

데이터 모델링은 왜 필요한가? 정보 시스템 개발에서 프로세스 모델링과 데이터 모델링은 중요한 두 개의 축이다. 설계를 프로세스 위주로 진행하면, 추후에 업무 변화에 대한 대응이 쉽지 않아 데이터 중심의 설계가 대두되고 있다. (물론 프로세스 모델링과 데이터 모델링은 상호 보완적인 관점에서 이해되어야 한다.) 데이터 모델링이 중요한 이유를 아래와 같이 정리할 수 있다.

  • 파급효과 : 시스템 구축이 완성되어 가는 시점에서 데이터 모델을 불가피하게 변경해야 한다면, 큰 위험 요소가 아닐 수 없다. 그만큼 데이터 설계가 중요하다고 할 수 있다.
  • 정보 시스템의 간결한 표현 : 데이터 모델은 시스템을 구축하는 많은 이해관계자 간 훌륭한 의사 소통의 도구가 될 수 있다. 즉, 데이터 모델은 정보 요구사항을 정확하고 간결하게 표현할 수 있기 때문이다.
  • 데이터 품질 : 잘 못 설계된 모델링은 데이터의 정확성이 떨어질 수 있다. 오늘날 데이터가 기업의 큰 자산임을 고려할 때, 잘못된 데이터는 기업 측면에서 크나큰 손실이 아닐 수 없다. 따라서, 데이터 품질 향상을 위해 well-formed한 데이터 모델이 필수라고 할 수 있다.

그리고, 데이터 모델링의 필요성은 다음과 같은 관점에서 설명할 수 있다.

  • 애플리케이션과 데이터의 통합 : 보통 기업(주로 대기업)에서는 통합된 애플리케이션을 좋아한다. 하지만 많은 애플리케이션을 하나로 묶어 종합 포털격인 애플리케이션을 구축하려 하면, 그 노력은 실로 어마어마하다고 할 수 있다. 이러한 이유로 애플리케이션의 통합은 반드시 데이터 통합이 선행되어야 한다. 그만큼 데이터 모델링이 중요하다고 할 수 있다.
  • 개발자들의 시스템 이해 : 애플리케이션을 개발하는데에 데이터 모델만큼 훌륭한 설계 문서가 있을까? 물론 기본적인 데이터 모델을 이해 못하는 중급 이상의 개발자들도 많다는 것이 우리의 현실이다. 

데이터 모델링 시 어떤 점을 주의해야 할까?

  • 매우 중요한데, 대부분의 IT인들 또는 DB 모델러들이 간과하는 점... 바로 중복(Duplication)이다. 같은 기업내에서도 동일 의미의 코드가 산재해 있을 뿐만아니라, 동일 애플리케이션 내에서도 속성이 중복되어 있는 경우가 허다하다.
  • 데이터 모델은 추후 변화에 대한 가능성을 열어두고 설계를 해야 한다. 모델링은 유연성을 가져야 한다. 모델의 비유연성을 지양해야 한다.
  • 데이터는 일관성이 있어야 한다. 비일관성의 예방은 데이터와 데이터 간 관계를 명확히 정의하는 방법으로 해결할 수 있다.

 

데이터 모델링 단계

  • 개념 데이터 모델링 : 주제별로 분류 가능한 업무를 분석해서, 핵심 엔터티를 추출하고 그들 간의 관계를 정의하여 데이터 전체 골격을 생성한다.
  • 논리 데이터 모델링 : 핵심 엔터티와 관계를 바탕으로 상세 속성을 정의하고 식별자를 확정하며, 정규화와 같은 상세화 과정을 수행한다.
  • 물리 데이터 모델링 : DBMS의 특성 및 구현 환경 등을 감안한 스키마를 일정한 기준과 규칙에 의해 도출하고 컬럼의 데이터 타입과 크기를 정의한다.

모델링 기본 원칙

  • 커뮤니케이션 원칙 : 데이터 모델링의 주목적은 최종 사용자 및 이해 당사자들에게 시스템의 지향점을 분명하게 설명하기 위함이다. 데이터 모델만큼 훌륭한 의사소통의 도구는 없다.
  • 모델링 상세화 원칙 : 데이터의 상세화 정도를 제시하고 조직이 사용하는 정보 구조의 '최소 공통 분모'를 제시해야 한다. 데이터는 데이터의 본질과 잠재적 사용을 이해할 수 있을 만큼 상세화되어야 한다.
  • 논리적 표현 원칙 : 데이터에 대한 논리적 측면을 최대한 표현해야 한다. 

 

좋은 데이터 모델의 요소

  • 완전성 : 업무에 필요한 모든 데이터가 모델에 정의 되어 있어야 한다.
  • 중복 배제 : 동일한 사실이 데이터에 한번만 있어야 한다. 데이터가 중복 관리될 경우, 데이터 일관성에 심각한 영향을 끼친다.
  • 비즈니스 룰 : 업무 규칙을 애플리케이션 레이어에서도 구현이 가능하지만, 먼저 데이터 모델에서 구현할 수 있다면 구현하는게 맞다.
  • 데이터 재사용 : 난로 연통 시스템을 상기해보자. 데이터는 애플리케이션에 대해 독립적으로 설계되어야 데이터 재사용성을 향상시킬수 있다. 애플리케이션에 종속적으로 설계하면, 여러 시스템에 데이터가 중복으로 생성되어 있어, 데이터 재사용성이 떨어진다.
  • 안전성 및 확장성 : 데이터 모델은 안정성 뿐만 아니라, 추후 데이터가 쉽게 변경 설계 가능하도록 확장성을 고려해서 설계해야 한다.
  • 간결성 : 테이블 수가 많다고 절대 좋은 것이 아니다. 통합할 수 있다면 통합하여 모델을 간결함을 유지시켜야 한다.
  • 의사소통 : 요구사항에서 도출되는 많은 업무규칙을 데이터 모델의 엔터티, 서브타입, 속성, 관계 등의 형태로 최대한 자세하게 표현되어 데이터 모델은 의사소통 도구로서의 역할을 하게 된다.
  • 통합성 : 간결성과 같은 성격이다.

 

2. 데이터 모델링 기법 이해

 

논리 모델에서 물리 모델로 넘어오면서 고려해야 할 것은 다음과 같다.

  • Super/Sub 관계의 엔터티를 몇 개의 테이블로 만들 것인가
  • 배타적 관계 엔터티의 외부키를 몇 개로 할 것인가
  • 성능 향상을 위해 테이블을 추가 또는 통합할 것인가
  • 통계 작업을 위해 집계 테이블 등의 임시 테이블은 몇 개로 할 것인가
  • 테이블 컬럼을 다른 테이블에 중복할 것인가, 중복 한다면, 어떤 애플리케이션이 관련되어 있는가, 인덱스의 생성이 필요한가
  • 분산환경에서 테이블을 중복할 것인가
  • 데이터가 분산 환경에서 이동 시 문제를 어떻게 해결할 것인가

엔터티

 초기 모델 설계시, 먼저 엔터티를 도출한다. 엔터티 종류 중, 키 엔터티가 될만한 것들을 우선 도출하여, 메인, 액션 엔터티를 도출한다. 엔터티는 우리가 지속적으로 관리를 해야 하는 대상이다. 또한, 엔터티는 동질성을 가지는 개체 집합이며 또는 행위의 집합으로 정의할 수 있다. 하지만, 집합을 어떤 범위까지 정의하느냐에 따라 동질성이 달라질 수 있다.

속성

 속성은 엔터티에 저장되는 개체 집합의 특성을 설명하는 항목이라고 할 수 있다.

식별자

 개체를 식별할 수 있는 속성이다. 식별자는 하나 또는 그 이상의 속성으로 구성된다. 식별자는 논리적인 관점에서 사용되고 키는 물리적인 관점에서 사용된다. 따라서, 엔터티는 식별자를 가지며, 테이블은 키를 가진다. 식별자와 키를 구별하는 이유는 식별자와 키가 서로 일치하지 않을 수 있기 때문이다.

    • 본질 식별자 : 집합의 본질을 명확하게 설명할 수 있는 의미상의 주어를 말한다.
    • 후보 식별자 : 인스턴스를 유일하게 식별할 수 있는 속성 또는 속성들의 조합이며, 후보 식별자로 속성 집합을 선택하는 경우에는 개념적으로 유일해야 한다.
    • 대체(보조) 식별자 : 원래의 식별자를 대신할 수 있는 또 다른 속성을 얘기한다. 사원 엔티티의 공식 식별자는 사원번호지만, 주민번호 속성이 유일성을 보장하고 필수적으로 정의되었다면, 주민번호도 식별자로서의 역할을 할 수 있다.
    • 인조 식별자 : 기존 본질 식별자를 쓸 수 없는 상황이 발생했을 때, 인조 식별자를 사용한다. 예를 들어, 부모 엔터티로 물려받은 식별 속성이 많은 경우, 편리함을 위해 사용한다.
    • 실질 식별자 : 인스턴스를 식별하기 위해 공식적으로 부여된 식별자를 말하며, 본질 식별자나 인조 식별자 모두 실질 식별자가 될 수 있다.

관계 

 관계는 엔터티와 엔터티 간 연관성을 표현하는 것이다. 

카디날리티

 한 개체가 관계를 통해 다른 개체와 관련된 개체들의 수를 나타낸다.  카디날리티란 관계에 참여하는 하나의 개체에 대해 다른 엔터티에서 몇 개의 개체가 참여하는지를 나타낸다. 예를 들면, 한 명의 학생이 1개 이상 6개 이하의 과목에 등록할 수 있다면 카디날리티는 (1, 6)이 된다.

존재 종속

 한 엔터티의 존재가 다른 엔터티의 존재에 영향을 받는다면 이를 존재 종속이라 한다. 

서브타입

 전체 집합인 슈퍼타입의 부분 집합이라고 정의할 수 있다. 물리 설계시, 별도의 테이블이 될 수 있고, 슈퍼 타입과 묶어서 하나의 테이블로 정의될 수 도 있다.

반응형

댓글