데이터베이스 모델링 - 데이터 저장구조

데이터베이스 모델링 - 데이터 저장구조

 

애플리케이션 화면과 RDB의 테이블은 다르다.  처음 모델링을 접하는 사람들은 애플리케이션 화면과 데이터 베이스 모델링, 테이블 설계가 동일하다고 생각한다.

 

주문화면

 

이 주문화면을 보면 하나의 테이블로만 이루어져 있는 것으로 보인다. 사실은 여러 테이블이 모여서 전체를 이루고 있는 구조다.

하지만 딱 봤을 때 주문서 한장으로 보인다. 이처럼 데이터 모델링은 사용자에게 보이는 하나의 집합체에서 데이터의 구조적인 부분을 분리하는 작업이다.

 

애플리케이션 화면과 RDB의테이블 구조는 다르다. 하나의 주문화면은 여러 테이블로 구성되어 있다.

 

각 부분을 왜 분리를 해야 할까? 분리할때도 기준과 규칙이 있나? 와 같은 질문이 나올 수 있겠다.

 

하나의 화면에 포함된 데이터를 여러 테이블로, 그리고 여러 행으로 분리하는 이유는 ! 데이터 관리! 저장, 수정, 조회 등이 쉽기 때문이다.

 

또 다른 예를 이용해서 살펴보자.

 

설문지

위 그림 과 같은 설문 문항과 그 응답결과를 정보시스템으로 관리하려면 설문지에 담긴 텍스트의 성격과 주제 등의 유사함을 중심으로 다시 구조화 해야 한다. 예를 들면 이 텍스트가 질문인지, 답변인지 하는 것이다. 텍스트의 유형을 살펴보면 질문이라는 데이터 집합을 도출 할 수 있고, 또 객관식 질문에는 보기가 필요하므로 보기 집합도 도출 할 수 있다. 그리고 설문제목과 설문개요와 같은 정보도 필요하다.

 

여기서 설문제목은 설문을 생성하는 메타정보 최상위 정보계층인데 나중에 다시 언급을 하겠다. 참고로 개체, 인스턴스는 어떤 집합에서 서로 구별이 가능한 개별 요소, 즉 단위객체다. 테이블에서 하나의 행이라고 생각하면 쉽다. 다시 말해서 집합이 테이블이라면 개체는 하나의 행이다.

 

데이터 성격과 유형을 기준으로 분리

 

이렇게 데이터는 유형별로 (질문유형이냐, 답변유형이냐, 제목유형이냐) 저장을해야 한다. 그래서 데이터의 성격을 정확하게 분석해야 한다.

 

 

아래 설문지 엔터티는 여러질문으로 구성된 하나의 문제지이고, 설문기획 마다 하나씩 생성이 되는 집합이다. 설문제목, 개요, 설문작성일자 같은 속성을 가지고 있다. 설문질문 엔터티는 설문지의 각 질의문항마다 개체가 하나씩 생성되는 집합이다. 설문보기는 객관식 질문의 보기 항목마다 개체가 하나씩 존재하는 집합이고, 설문 응답은 설문 응시자가 작성한 응답을 질문 항목마다 개체 하나로 관리한다. 복수선택이 가능한 객관식질문이라면 응답개체가 둘 이상이 될 수도 있다.

 

 

테이블

 

 

엑셀로 만들면 아래와 같은 표들이 나온다.

 

 

 

 

평면적인 설문지 한장에 숨어 있는 데이터를 관찰해서 입체적으로 분석하고 이해하는 시간을 가졌다. 이를 통해 메타적 설문 문제지와 이를 구성하는 하위의 질문과 보기 그리고 응답 데이터를 담아 낼 수 있는 구조를 분리하여 모델로 표현해 보았다. 설문예제를 통해 두가지의 중요한 아이디어를 얻었다.

 

첫번째는 데이터 집합(엔터티)과 개체를 발견하는 힘이다.

 

업무요건을 보면 데이터가 보여야 하고 업무에서 흘러 다니는 데이터의 성격과 고유한 근본 성질을 이해할 수 있어야 한다.

그래야 그에 맞는 구조를 도출해낼 수 있다.

 

두번째는 데이터의 종속성이 업무적으로 어떻게 관리되고 있는지, 혹은 관리하려 하는지 정확히 알아야 한다.

 

올바른 데이터 모델링을 위해

데이터의 근본 성격 파악 -> 데이터 집합과 개체 식별

데이터의 종속성 분석 -> 데이터의 독립성 확인과 모델 골격 조망

 

업무를 데이터 중심으로 바라 볼 수 있는 시선을 기른다.

 

요약

- 하나의 화면은 여러개의 테이블로 구성되어 있다.

- 데이터의 유형에 따라서 집합(테이블)을 만든다.