관계형 데이터 모델링 - 업무파악

본 글은 생활코딩 관계형 데이터 모델링 강의를 수강하고 이를 정리한 글입니다.

관계형 데이터 모델링이란?

현실은 믿을 수 없을 정도로 매우 복잡합니다. 이렇게 복잡한 현실의 문제를 해결하기 위해 동원된 컴퓨터라는 기계는, 매우 강력하지만 똑똑하지는 않은 기계입니다. 이 기계를 활용하기 위해서는, 현실의 문제를 기계가 이해할 수 있게 변형하는 작업이 필요합니다.

일반적으로 모델링이란 말은 ‘현실을 모방한 것’을 의미합니다. 현실은 매우 복잡하기에 이를 그대로 복제하는 것은 불가능하지만, 일반적으로 우리가 요구하는 어떤 기능을 만족하는 가상의 개념을 모방하는 것은, 비교적 매우 쉽습니다.

Data Modeling이란 매우 복잡한 현실의 문제를 컴퓨터가 이해할 수 있는 데이터로 모방하는 것을 의미합니다.

인간은 직관적인 능력이 매우 발달하여, 이미 데이터 모델링에 필요한 직감을 갖고 있습니다. 그러나 더 정교한 데이터 모델링을 달성하기 위해서, 이론적인 방법론이 존재합니다.

데이터 모델링의 순서

  • 업무 파악 → 개념적 데이터 모델링 → 논리적 데이터 모델링 → 물리적 데이터 모델링

데이터 모델링은 크게 위 네 가지 순서로 이루어집니다.

  1. 업무 파악: 하고자 하는 업무를 파악합니다. 기획서를 작성하여 보다 명확하게 업무를 파악하고, 데이터 모델링을 위한 토대를 마련합니다.
  2. 개념적 데이터 모델링: 파악된 업무로부터 모델 개념을 만듭니다. 이 과정에서 ER 다이어그램 등을 만들게 됩니다.
  3. 논리적 데이터 모델링: 개념적 데이터 모델링 단계에서 얻은 ERD를 표로 전환합니다.
  4. 물리적 데이터 모델링: 표를 바탕으로 가장 최적화된 DB 제품을 선택하고, 이에 맞추어서 최적화된 코드를 작성합니다.

업무 파악하기

컴퓨터 공학은 크게 두 가지 문제를 해결하려고 합니다.

  1. 컴퓨터 자체의 문제를 해결하기
  2. 컴퓨터를 가지고 현실의 문제를 해결하기

1번의 경우는 DB를 만든다든지, 파일 시스템을 개선한다든지, 혹은 웹서버 엔진을 만드는 과정이 이에 해당할 것입니다.

2번의 경우는 만들어진 DB, 웹서버 등을 이용하면서 현실의 문제를 해결하려는 사람들입니다. 이들은 현실의 문제에 보다 근접해있기 때문에, 단순히 컴퓨터 자체를 이해하는 것만으로는 부족합니다.

그보다는 컴퓨터라는 강력한, 똑똑하지 않은 기계를 활용해서 현실의 문제를 해결할 수 있는 능력이 요구됩니다. 이 현실의 문제를 해결하려는 사람들은 현실의 업무를 컴퓨터에게 던져주어도 잘 이해하고 처리할 수 있도록, 복잡한 업무를 파악하고 이로부터 개념을 추출할 수 있어야 합니다.

업무 파악 단계에서 한 가지 좋은 습관은 바로 최종 클라이언트에게 제공될 UI를 직접 그려보는 것입니다. UI를 그려봄으로써 하고자 하는 업무가 무엇인지를 파악하고, 이를 구조화할 수 있습니다.

UI를 그리는 것은 ‘말의 힘을 불신하는’ 한 방법입니다. 데이터 모델링이 성공하려면, 그리고 프로젝트가 성공하려면, 말의 힘을 불신해야 합니다. 말의 기능을 불신할 수록, 말의 신뢰성은 높아집니다.

말의 힘을 불신하라. 말의 기능을 불신할 수록 말의 신뢰성은 높아진다.

군대에서의 복명복창을 생각해봅시다. 이는 대표적인 말의 힘을 불신하는 기술입니다. 군대라는 매우 혼잡하고 위험한 상황 속에서, 서로의 말이 제대로 전달되었는지 확인하기 위해 복명복창을 실시합니다. 이를 통해 서로의 말을 크로스 체크함으로써, 말의 힘을 불신하고 신뢰성을 높입니다.

기획서 작성하기

업무 파악을 용이하게 하는 주요한 스킬 중 하나는 기획서를 직접 작성하는 것입니다.

기능 명세서는 기획을 더 명확하게 만들고, 기획자와 개발자 간 언어의 동기화를 이루게 합니다.

한 가지 좋은 방법은 바로 최종 사용자의 UI를 직접 그려보는 것입니다. 이 과정에서 기획자는 자신이 기획하고 있는 것이 정확히 무엇인지를 알고, 어떤 요구사항을 하는 지 스스로 알게 됩니다. 개발자는 기획자의 머릿속에 있는 것을 자신의 머릿속으로 옮기면서, 동기화를 이룹니다. 단순히 말로 ‘이러이러한 기능을 수행하는 제품을 개발했으면 좋겠다’라는 것보다, 기획서를 통해 정확한 기능의 명세를 작성할 수 있게 됩니다.

사진: https://youtu.be/rWEaUh4DjUo

카카오의 ovenapp이라는 기획서 제작 웹 어플리케이션이 있는데, 사용하기 괜찮습니다. 사진은 위 링크에서 따온 것이지만, 무료이고, 실제로 사용하기에도 쉽고 괜찮습니다.

보다 제대로 된 사이트라면 Figma나 Illustrator 같은, Adobe 급의 제품을 사용하는 게 좋겠지만, 간단한 웹사이트 정도라면 ovenapp도 괜찮은 것 같습니다.

📚 핵심 정리

업무 파악 단계에서, 매우 복잡한 현실의 문제를 기획서를 통해서 명확하게 표현합시다.

레퍼런스