ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 데이터 모델링3- 데이터 저장 구조
    Data Base/관계형 데이터 모델링 2023. 9. 8. 11:38

    애플리케이션 화면과 RDB테이블은 다르다

    애플리케이션 화면에서 주문은 체계적으로 조직화된 하나의 집합체로 보인다. 여러 개의 부분이 모여 전체를  이루고 있지만, 구조적으로는 주문서 한장으로 보인다. 데이터 모델링은 최종 사용자에게 보이는 하나의 집합체에서 데이터의 구조적인 '부분'을 분리하는 작업이다.

     

    그림 3-2 애플리케이션 화면에 보이는 데이터가 RDB에 저장되는 모습

    데이터 모델링에 대한 이론적 학습목표

    • 하나의 집합체로 보이는 뷰에서 데이터 구조로서의 부분을 분리해야 하는 이유
    • 부분으로서의 테이블(relation)을 분리하는 기분과 규칙 등 방법론

    집합체(주문서)에서 각 부분과 그 저장 구조(분리한 테이블)를 고민하는 과정이 결국 관계형 데이터 모델링이다.


    설문 데이터 모델링 예시

    그림 3-3 간단한 설문지

    위 와 같은 설문 문항과 그 응답 결과를 정보시스템으로 관리하려면 설문지에 담긴 텍스트 데이터의 성격과 주제 등의 유사함을 중심으로 구조화해야한다. 즉, 텍스트 데이터의 유형을 기준으로 관련된 것들을 묶어내는 과정이 필요하다.

     

    그림의 설문에서 텍스트의 유형을 살펴보면 질문이라는 데이터 개체 집합을 어렵지 않게 도출할 수 있다. 객관식 질문을 위해서는 보기도 필요하다. 위 그림에서는 드러나지 않았지만, 설문 제목설문 개요 등의 정보도 필요한데, 이들은 질문이나 보기와 는 다른 수준에서 관리하는 것이 논리적으로 자연스럽다. 설문 제목은 설문을 기획하고 생성하는 입장에서는 메타 정보다. 따라서 설문지라는 상위 개체 수준에서 관리해야 한다. 참고로 개체(instance)는 어떤 집합에서 서로 구별이 가능한 개별 요소, 즉 단위 개체다. 일단은 집합이 관계형 데이터베이스의 테이블이라면 개체는 하나의 행(row)으로 이해하면 된다.

     

    그림 3-4 설문지에서 찾아낸 요소들

    설문지 한 장에서 질문과 보기라는 유형을, 나아가 여러 질문고 보기로 구성된 설문지라는 상위 유형을 찾아 냈다. 여기서 설문지는 인쇄된 물리세계의 종이를 의미하는 것이아니다. 정보시스템에서 관리할 데이터 모델로서 설문 제목,개요,시작 일시 등의 속성을 관리하는 메타적 설문 문제지를 의미한다.

     

    또한 설문지와 설문지를 매개로 설문에 참여하는 행위나 그 결과로 만들어지는 다수의 응답 데이터 집합과는 엄연히 다르므로 이들과는 별도의 구조로 관리되어야 한다. 정보라는 것은 정확히 분류되어 유형별로 저장되어야 하며, 이를 잘하기 위해서는 무엇보다 데이터를 이해해야 한다. 

     

    그림3-5 설문 ERD 1.0 <설문보기>는 <설문질문>에, <설문질문>은 <설문지>에 종속된다.

    [그림 3-5]의 설문 ERD 1.0은 지금까지 설명을 토대로 그려본 데이터 모델이다. <설문지>엔티티는 여러 질문 문항으로 구성된 하느의 문제지이자, 설문 기획 마자 하나씩 개체가 생성되는 집합이다. <설문제목>, <설문개요>,<설문작성일자> 등의 속성을 가지고 있다. <설문질문>엔티티는 설문지의 각 질문 문항마다 개체가 하나씩 생성되는 집합이며, <설문보기>는 객관식 질문의 보기 항목마다 개체가 하나씩 존재하는 집합이다. <설문응답>은 설문 응시자가 작성한 응답을 질문 항목마다 개체 하나로 관리하는 엔티티다. 단, 복수 선택이 가능한 객관식 질문이라면 응답 개체가 둘 이상이 될 수도 있다.

     

    ERD 1.0을 통해 메타적 설문 문제기와 이를 구성하는 하위 질문과 보기 그리고 응답 데이터를 담아낼 수 있는 구조를 분리하여 모델로 표현했다. 그런데 이 모델에서 <설문질문>과 <설문보기> 엔티티를 유심히 보면 다음과 같은 생각이 들지도 모른다.

    • A설문과 B설문에 동일 질문으로 등장하는 '당신의 성별은 무엇입니까'라는 질문을 별개로 인식하고 각각 개체를 만들어 관리하는 것이 맞는가?
    • 만약 비지니스 요구상 설문을 굉장히 자주 하므로, 일반적인 설문을 패턴화해서 레고 블록처럼 미리 만들어진 질문과 보기를 조립해서 빨리 설문 개체를 만들어 낼수는 없을까?

    이는 <설문질문>과 <설문보기> 개체를 기준 정보 성격으로 코드처럼 관리하고 싶다는 의미이다. 다시 말해 보기는 질문에 종속되지 않고, 질문은 설문에 종속되지 않는 독립개체로 정의하고 관리할 것인가에 대한 고민이다.  설문 ERD 1.0은 설문 A와 설문 B의 '당신의 성별은 무엇 입니까' 와 같은 동일한 질문을 각각 설문지에 종속된 데이터로 인식하겠다는 전제하에 그려진 것이다.

     

    그림 3-6 설문 ERD 2.0 - <설문질문>과 <설문보기>를 독립적으로 관리한다.

    사람이 보기에는 동일한 텍스트의 같은 데이터이지만 완전히 다른 것으로 취급하는 것이다. 만약  각각의 질문과 보기를 주변 맥락에서 분리하여 독립된 개체로 관리한다면 위와 같이 모델을 [그림 3-6]처럼 다시 그려야 한다.

     

    지금까지 설문 예제를 통해 주가지 중요한 아이디어를 얻을수 있다. 첫 번째는 데이터 집합(엔티티)과 개체를 발견하는 힘이다. 두번째는 데이터 종속성이 업무적으로 어떻게 관리되고 있는지 혹은 관리하려하는지 정확히 알아야한다는 것이다. 설문 ERD 1.0과 2.0처럼 주요 데이터 사이의 종속성에 따라 모델의 골격이 크게 달라질 수 있다.

     

    💡 tip)올바른 데이터 모델링을 위한 기본기

    1. 데이터의 근본 성격 파악 -> 데이터 집합과 개체 식별
    2. 데이터의 종속성 분석 -> 데이터의 독립가능성 확인과 모델 골격 조망

     

     

    [출처 - 프로젝트의 성패를 결정짓는 데이터 모델링 이야기 , 김상래 저]

    댓글

Designed by Tistory.