기술자료

DBMS, DB 구축 절차, 빅데이터 기술 칼럼, 사례연구 및 세미나 자료를 소개합니다.

개발자가 꼭 알아야 할 데이터베이스 지식 : 4-STEP 데이터모델링

기술자료
DBMS별 분류
DB일반
작성자
dataonair
작성일
2014-01-23 00:00
조회
7113



개발자가 꼭 알아야 할 데이터베이스 지식

4-STEP 데이터모델링


프로젝트 개발자에게 데이터모델링을 설명할 때 가장 많이 받는 질문 중 한 가지가 “초기에 엔티티타입을 어떻게 선정해야 하며 또 어떻게 입증해야 하는가”이다. 업무 시나리오를 이용해 기초 공사 중에서도 주춧돌에 해당하는 엔티티타입을 도출하고 그 위에 속성을 배치해 관계를 맺는 작업을 진행하더라도 업무를 분석하는 많은 모델러들은 엔티티타입을 도출하는 데 많은 어려움을 가지고 있는 것이 사실이다.



그래서 이 글에서는 앞선 질문에 좀더 명확한 답을 제시하고자 실제 프로젝트에서도 자연스럽게 적용할 수 있는 데이터모델링 방법을 체계적으로 정리해보고자 한다. 이전에 우리는 업무 시나리오로부터 명사를 분리해 여섯 가지 규칙에 의해 엔티티타입 후보를 선정한 다음 최종적으로 각 명사에 대한 정제작업을 거친 후 엔티티타입을 완성했다.

하지만 이번에는 시나리오에 있는 명사를 기술적으로 도출하지 않고 업무 흐름을 이해한 상황에서 직접 엔티티타입과 속성 및 관계를 4단계로 도출하는 방법을 알아보겠다. 4-STEP 데이터모델링이라고 불리는 이 방법은 △업무구조 모델링(1-STEP) △업무흐름 모델링(2-STEP) △모델의 기술적 접근에 의한 모델링(3-STEP) △모델의 검토 및 정제를 통한 모델링(4-STEP)을 차례로 적용함으로써 데이터 모델을 완성한다.

tech_img943.jpg

<그림1> 4-step 데이터모델링의 정의

4-STEP 데이터모델링은 데이터모델링에 대한 개념이 명확하거나 경험이 많을수록 좀더 효과적으로 적용할 수 있지만, 이러한 경험이 없다고 하더라도 업무에 대한 충분한 이해만 갖추고 있다면 모델링 방식을 충분히 적용할 수 있다.

일반적으로 정보공학에서는 업무 흐름을 프로세스와 데이터로 분리한 다음 각각에 대해 모델링을 진행하는데, 이를 통해 상호보완적으로 서로의 모델을 완성해가는 방식을 마련할 수 있다. 또한 오브젝트 모델링에서는 업무를 구성하는 활용사례를 도출하고 이에 해당하는 클래스와 속성 및 메소드를 정의한 다음, 다시 다양한 다이어그램으로 그림으로써 모델을 완성한다.

이러한 정보공학의 모델링 방식이야말로 업무를 공학적 단위까지 분리하는 다분히 기술적인 방법으로 모델을 완성해가는 접근이라면, 오브젝트 모델링은 업무를 구성하는 요인이 무엇인지에 직접 접근해보면서 모델을 완성해가는 방식이라고 정의할 수 있다.

그런 점에서 4-STEP 데이터모델링은 정보공학 모델링 방식과 오브젝트 모델링 방식의 장점만을 채택해 실제 프로젝트에서 직접 적용할 수 있을 뿐 아니라 실제로 프로젝트 과정에서 실제로 많이 발생할 수 있는 형식들을 정리해 정립한 모델링 방식이라 정의할 수 있다. 즉, 이전 사용한 다양한 방법들을 활용해 한 단계씩 정리해 가면서 데이터모델을 완성하는 방법이다.

4-STEP 데이터모델링은 프로젝트 과정에서 전문적으로 모델링을 수행해온 사람들이 곧바로 적용해 사용하는 경우가 많다. 이 말에 대해서는 꾸준히 모델링 작업을 수행하던 사람이라면 이 방식이 더 쉽고 자연스럽다며 동감할 것이다.

비록 그 이름이 다소 생소할지 몰라도 좀더 세부적인 내용을 확인하면서 학습한다면 4-STEP 데이터모델링에 기반을 둔 모델링이 쉽다는 것을 느낄 것이다. 다만 업무가 매우 복잡하거나 업무를 구성하는 엔티티타입들이 매우 추상적인 경우 또는 업무 흐름에 따라 발생하는 엔티티타입이 많아진다면 4-STEP 데이터모델링을 적용하는 데 다소 어려움이 따를지도 모른다.

이때는 4-STEP 데이터모델링 방식으로 개략적인 모델을 완성한 다음 프로세스 모델링을 활용해 최종 모델을 완성해가는 것도 좋은 방법이 될 수 있다. 다시 한 번 강조하지만 4-STEP 데이터모델링 방식은 업무를 잘 이해하고 있는 상태에서 추진해야만 최상의 모델링 작업으로 이어질 수 있다. <그림 2>는 4-STEP 데이터모델링 과정에서 각 단계별로 진행되어야 할 내용을 설명한 것이다.

tech_img944.jpg

<그림2> 4-step 데이터모델링의 과정

첫 번째 단계인 업무구조 모델링에서는 업무를 구성하는 구조 즉, 정적인 사항들에 대해 엔티티타입이나 속성을 도출한다.

예를 들어 학사관리 업무를 데이터모델링한다고 생각할 때 부서, 직원, 학생, 강사, 강의실, 교과목 등이 업무구조 모델링 단계에서 도출되는 엔티티타입이고, 각 엔티티타입에는 속성이 존재하며, 이러한 속성은 업무를 구성하는 장표 등에서 쉽게 확인할 수 있다. 또한 ‘직원은 부서에 속해 있다’와 같이 엔티티타입 간에 도출된 관계는 존재에 의한 관계인 경우가 많다.

두 번째 단계인 업무흐름 모델링 단계에서는 업무가 진행됨에 따라 발생하는 엔티티타입, 속성, 관계를 정의한다.

학사관리 업무를 예로 들자면, 강의나 수강생과 관련된 엔티티타입들은 업무가 진행됨에 따라 발생하는 것이고 수강신청 여부나 수강연기 같은 속성은 업무진행에 따라 발생하는 엔티티타입이다. 또한 ‘강사가 강의한다’나 ‘학생이 수강한다’와 같이 관계의 형태가 업무 행위에 의해 발생되므로 동사형으로 작성되는 경우가 많다.

세 번째 단계인 기술적 접근에 의한 모델링에서는 앞선 1-STEP과 2-STEP 모델링 과정을 통해 구현된 데이터모델을 가지고 모델링 관점에서 M : N 관계를 해소하거나 슈퍼 타입과 서브 타입으로 세분화하거나 통합한다던지 그리고 데이터 관리를 목적으로 이력 엔티티타입을 도출한다던지 하는 업무와 직접적인 상관관계는 없다.

하지만 이 단계는 정보시스템을 구축하기 위한 데이터모델을 적용함으로써 얻을 수 있는 엔티티타입, 속성, 관계를 정의하는 과정이라고 보는 게 맞다. 학사관리 예에서는 한 강사가 여러 개의 과목을 강의하거나 한 과목을 여러 명의 강사가 강의할 수도 있어 M : N 관계를 가지고 있다고 볼 수 있으며, 이때 강사과목이라는 새로운 엔티티타입을 도출하게 된다.

또한 강사의 종류가 전임강사와 시간강사로 분리될 수 있으므로 강사 슈퍼 타입과 전임강사와 시간강사 서브 타입 모델로 분리할 수도 있는 것이다. 이와 같이 3-STEP에서는 업무 흐름에서는 제공되지 않지만 모델링 방법을 가지고는 할 수 있는 내용을 통해 데이터모델을 완성해가는 단계를 일컫는다.

마지막 4-STEP인 모델 검토 및 정제를 통한 모델링 단계에서는 업무 구성과 흐름에 따라 구성한 모델이 적절한지와 모델링 방법에 따라 데이터모델이 제대로 이뤄졌는지를 검증한다. 그리고 필요하다면 엔티티타입, 관계, 속성 등을 변경 및 추가하거나 삭제하기도 한다.

또한 업무 범위나 관리하고자 하는 항목에 따라 엔티티타입이나 속성에 대해 정제하는 작업도 4-STEP에서 이뤄지게 된다. 학사관리 업무의 예에서 만일 부서를 관리할 필요 없이 단순하게 어떤 직원이 어느 부서에 속해있는지에 대해 직원 이름만 필요한 경우라면 부서 엔티티타입은 필요 없으므로 제거하면 된다.

tech_img945.jpg

<표 1>은 4-STEP 데이터모델링에서 엔티티타입과 속성 그리고 관계가 각 단계별로 어떻게 적용되는지를 요약 정리한 것이다. 참고로 식별자에 대한 정의가 생략된 이유는 엔티티타입 및 속성과의 관계를 정의하면 자연스럽게 식별자 부분도 지정할 수 있기 때문이다.

일반적으로 데이터모델링은 정보화 시스템을 구축하는 프로젝트에서 사용하는 매우 전문적인 단어로 인식되기 십상이다. 특히 시스템 구축을 본업으로 하는 IT 산업 종사자들에게 있어서 데이터모델링은 좀더 전문적인 능력이 필요한 분야이면서 오랫동안 경력이 쌓여야 손 댈 수 있는 분야로 알고 있다.

사실 이러한 데이터모델링에 대한 막연한 두려움이나 거부감은 직접 경험해보지 못했다는 데 그 원인이 있다. 보통 학교에서든 학원에서든 정보화 관련 전공을 수학(受學)하고 IT 업종에 종사한다고 할지라도 몇 년 동안은 업무를 분석해 설계해야 하는 데이터모델링의 기회를 좀처럼 만나기 힘들다. 또 어느 정도 경력이 있다고 할지라도 짧게는 3~6개월, 길게는 1~2년 동안은 시스템 분석과 구축 프로젝트에 참여하게 돼 데이터 모델링의 기회가 많지 않은 것도 사실이다.

다시 말해, 데이터모델링은 내 능력으로는 아직 접근할 수 없는 높은 차원의 영역 또는 데이터모델링은 많은 경험이 없으면 불가능한 분야라는 인식이 남아있는 한 이 분야에 대한 친밀감을 갖기는 어렵다. 그러나 단언컨대 시스템을 분석, 설계, 구축하는 업무에서 데이터모델링을 수행한 다음 이를 정보화 시스템에 연결하는 일이야 말로 시스템 엔지니어가 맨 처음 개발한 프로그램의 결과가 이상 없이 화면에 나타나는 것 이상으로 흥미로우며 어려움 보다는 가치를 먼저 찾을 수 있는 일이다.



4-STEP 데이터모델링 적용사례


앞서 살펴본 내용을 바탕으로 현재 기업에서 나타나는 업무적인 현상이 아닌 실생활에서 쉽게 접할 수 있는 주제로 데이터모델링을 설명하겠다. 일상생활에서 누구나 충분히 만날 수 있는 현상을 소재로 한 만큼 데이터모델링과 관련된 단어들이 매우 친근하게 다가올 것으로 생각된다. 그리고 그 만큼 데이터모델링에 대해 확실하게 이해하고, 이를 바탕으로 다양한 업무에 적용시켜 봄으로써 좀더 자신감을 가지고 모델링 업무에 접근할 수 있을 것으로 생각된다.

인터넷을 이용해 수많은 정보들이 이동하는 모습이 온라인 관점으로 본 현대 사회의 복잡성을 나타내는 것이라면, 출근시간 때 수많은 인파가 자칫 선로로 떨어질 것처럼 줄서 있는 지하철 플랫폼은 오프라인상에서 바라본 현대 사회의 복잡성을 나타낸다 할 수 있다. 시민의 발이 돼온 지하철에서도 무수히 많은 정보들이 끊임없이 생산되고 또 사라지고 있는데, 과연 그 속에서 새로운 의미를 발견할 수 있는 데이터는 얼마나 될지 모른다.

지금부터 미래에는 의미 있게 사용할 수 있다는 가정 하에 지하철 데이터를 분석하고 설계해 데이터베이스로 구축하는 방법을 알아보겠다. 이렇게 지하철 이용자를 데이터베이스화하게 되면 러시아워 시간에 대한 적절한 대책을 수립하거나 사건 및 사고, 각종 범죄, 실종자 추적 등에 활용할 수 있을 것이다. 하지만 개인 사생활이 감시당하는 단점도 분명히 있다. 그래서 앞으로의 이야기는 미래에 일어날 수 있는 내용으로 전개한다.



시나리오 및 환경


모 벤처기업에 다니는 김지하 씨. 그는 지하철을 이용해 출퇴근하는데, 우리는 그가 지하철을 이용하는 모습을 가상의 시나리오로 선정한 다음 업무상에서 발생할 수 있는 요구사항들로 정리해 본다. 아침에 7시가 되면 김지하 씨는 기상 후 곧바로 출근 준비를 한다. 준비가 모두 끝나면 아파트 앞 도로를 건너 마을버스를 타고 지하철역으로 가는데, 요금은 500원이고 약 20분여가 걸린다.

지하철역에서 주민등록번호를 입력하면 자동으로 티켓이 발급되며 요금은 월 단위로 개인에게 청구된다. 김지하 씨는 지하철 안내판을 통해 전동차 시간 및 한산한 칸에 대한 정보를 제공받은 다음 해당 번호에 줄을 선다. 대략 5분 후 지하철이 도착해 승차한다. 그렇게 25분을 달려 김지하 씨는 목적지인 회사로 도착해 업무를 시작한다.

참고로 지하철 문에는 지하철 표를 감지하는 센서가 부착돼 있어 해당 칸에 얼마나 많은 사람들이 탑승해 있는지와 승하차하는지 확인한다. 또한 어느 역에서 승하차하는지에 대한 데이터가 지하철 티켓과 교통카드로 전달된다.



지하철 정보관리


지하철에서 발생하는 모든 정보를 관리하는 업체의 이름은 SubInfo이며, 정보 수집 후 추가공사, 유지보수, 통계정보를 제공함으로써 이윤을 창출한다. SubInfo에서의 지하철 정보흐름 시나리오는 다음과 같다.

- SubInfo는 지하철에서 발생하는 모든 정보를 관리한다.
- 모든 차량은 고유번호를 가지고 있으며, 각각 제조회사와 일자가 있어 상태에 따라 등급이 나눠진다.
- 각 지하철은 3개월에 한 번씩 정기점검을 받아야 하며, 점검상태에 따라 운행여부를 결정한다.
- 지하철은 5명의 기사가 교대로 운행한다.
- 모든 지하철역은 고유한 이름을 가지고 있다.
- 각 지하철역에는 역장과 승차권 판매 담당자 2명 이상 그리고 개찰구를 담당하는 역무원이 2명 이상이 있다.
- 지하철의 이용은 승차권을 구입하거나 교통카드를 사용하면 된다.
- 승차권은 전자주민등록증과 여권 등을 발매기에서 비교하거나 직접 지하철역 직원에게 구매함으로써 얻을 수 있다.
- 승차권은 일반인, 어린이, 학생, 장애인, 노인으로 구분된다.
- 요금은 이용구간별로 결정되고 일반인은 100%, 어린이는 30%, 학생은 70%, 장애인과 노인은 0%에 해당하는 요금을 각각 지불해야 한다.
- 모든 지하철 문에는 센서가 부착돼 있어 얼마나 많은 사람이 승하차하는지 확인할 수 있다.
- 지하철의 각 칸의 정보는 다음 지하철역 사람들이 미리 파악할 수 있어 그들의 선택에 도움을 준다.
- 지하철 출입문을 통과하면 승차권이나 교통카드에 자동으로 출입정보가 기록된다.
- 모든 지하철 직원의 출근 및 휴가 정보를 확인할 수 있음은 물론, 필요시 근무 직원에 대한 추적도 가능해야 한다.

그리고 전제조건으로 △모든 지하철 티켓을 구입할 때는 휴대가 편리하고 간편한 전자주민등록증을 지참해 구입 △외국인의 경우 외국인등록증이 반드시 있어야 지하철 티켓 구매가 가능 △개인정보는 정부 유관기관과의 시스템 연계에 의해 공급 △시스템은 내국인만을 대상이며, 외국인은 고려하지 않음이 있다.

다음 시간에는 지하철 정보관리 업무에서 도출할 수 있는 기본적인 엔티티타입을 업무 이해도를 바탕으로 한 4-STEP 데이터모델링 방식을 활용해 정리하겠다.