반디북
관계형 데이터 모델링 프리미엄 가이드
Ch1
나현
# ch01. 데이터 모델링에 대한 상념

1.1 데이터 모델링이 왜 어려운가?

💭 데이터 모델링에는 절대적인 정답은 없지만, 분명히 90점에 가까운 모델은 존재하며, 이를 지향해야 한다.

모델링은 시작하기 어렵고 결과를 확신할 수 없으니 어렵다.

  • 모델링 이론 외에도 데이터의 본질을 통찰하는 분석력, DBMS의 구체적인 특징과 기능까지 제대로 알아야 하기 때문이다.
  • 사실상 정답이 없지만, 최소한 모범 답안은 존재하기에 이를 지향해야 한다.
  • 좋은 모델링에 대한 정량적 기준이 없다. 모델러의 판단력과 통찰력에 의존적인 분야임
  • 구축한 모델을 다양한 이해관계자(개발자, 운영자 등)에게 설득할 때 객관적이고 구체적인 방법으로 설득해야 한다.
👀 생각) 데이터 구조 설계와 변경 과정에서 특히 많은 커뮤니케이션이 오간다. 모델링 이론과 분석력을 강화하고 이를
객관적이고 구체적으로 설명하며, 팀 내 커뮤니케이션을 명확히 정리하는 것이 중요한 것 같다.

1.2 데이터 모델링의 매력

💭 이론이라는 근거 위에 통찰력, 사고력, 경험을 더해 만들어진 데이터 모델이 프로젝트의 중심을 잡아준다면, 프로젝트의 근간이 흔들릴 일은 없다.

데이터 모델링의 매력은 무에서 유를 창조하는 느낌

  • 인터뷰와 분석을 반복하며 모델의 구조가 형성
  • 그리고 모델 구조를 관련자에게 설명 및 논의하는 과정에서 많은 업무 지식을 습득

과거에 비해 중요해진 데이터 품질 관리

  • 데이터 표준화에 대한 구축이 데이터 모델링과 연결, DA(Data Architect) 수요 급증
  • 이러한 데이터 전문가가 되기 위한 가장 중요한 관문이 데이터 모델링

1.3 모델링은 상식적이다.

💭 상식이라는 근거가 없는 모델은 누구도 확신시킬 수 없으며 혼란을 일으킬 뿐..

데이터 모델링은 크게 이론경험으로 구성

  • 정규화는 초보자든 전문가든 이론만 정확히 알고 있다면 같은 결과 도출
  • 데이터 통합과 관련해서는 전문가 사이에서도 이견 존재. 물론 상세한 면만 조금 다를 뿐, 크게 보면 대단히 유사하다.
  • 경험에 의해 자의적으로 모델링이 이루어지는 것 같지만, 이론이라는 상식 기반에서 모델링이 이루어지기 때문

1.4 모델러와 바둑 프로기사

💭 전문 모델러가 구축한 모델을 보거나 설명을 들으면 맞는 것 같지만, 실제로 그런 모델을 구축하기란 어렵다. 매번 그렇기 하기는 더욱 어렵다.

바둑은 정석을 모르면 제대로 두기 어렵다.

  • 모델링도 엔티티와 관계, 속성, 정규화 관련 다양한 이론을 알아야 제대로 수행할 수 있다.
  • 처음 핵심 엔티티를 제대로 정의하지 않으면 전반적으로 힘들어진다.

바둑에서 수 읽기는 중요하다.

  • 이론은 기본이며 다양한 상황에 따른 최선의 모델을 판단할 수 있어야 한다.
  • 분석력과 논리력, 종합적인 사고능력, 설득력, 섬세함 등이 있어야 한다.
  • 모델링을 수행하면서 데이터가 생성되는 것을 읽어야 하며, 확인을 위해 직접 작성하는 것이 좋다. (타인을 위해서라도)
👀 생각) 책을 읽으며 이론을 공부해 가되, 실제 업무와 유사한 상황에서 구현된 좋은 모델을 분석하고,
왜 그렇게 설계했는지 고민해보며 데이터의 흐름을 읽는 연습이 필요하다고 느꼈다.

1.5 좋은 모델은?

💭 좋은 모델은 '사용자가 원하는 데이터를 정확하고 빠르게 보여줄 수 있는 단순한 모델'

💡 좋은 모델은 단순하고 명확한 모델

  • 명확한 모델은 명확한 정의에서 비롯. 특히 엔티티에 대한 명확한 정의가 출발
  • 단순하고 명확한 모델은 이론을 기반으로 하며, 데이터를 보고 데이터의 성격을 한눈에 판단할 수 있는 감각도 이론이 바탕이 되었을 때 생긴다.

💡 모델링의 핵심 목표

  1. 데이터 무결성(Integrity) - 중복 제거
  2. 성능
  3. 비즈니스를 효율적으로 표현한 모델 - 누락되는 데이터 요소는 문제 - 필요치 않은 비즈니스는 표현하지 않는다.
  4. 확장성이 좋은 유연한 모델
  5. ERD 표기법에 맞게 정확한 모델 표현 - 데이터 모델은 커뮤니케이션을 지원하는 도구이기도 하기에, 이론적으로도 완전해야 하지만 가독성도 좋아야 한다.

1.6 모델링이 왜 필요한가?

💭 데이터를 정확히 관리하고 빠르게 제공하며 확장하기 쉬운 모델을 구축하면 같은 인력으로 많은 일을 할 수 있다. 이것은 경영 혁신의 지름길 ✨
  • 모델링 과정 없이 생성된 모델은 조악한 모델이 될 가능성이 크다.
  • 모델링 수행 도중 커뮤니케이션 >>> 완성된 모델로 이루어지는 커뮤니케이션보다 더욱 중요

1.7 좋은 모델러란?

좋은 모델러가 갖춰야 하는 요소는 크게 기술력분석력

  • 기술적 측면은..
    • 모델링 이론을 깊은 이해. 이론과 기본은 아무리 강조해도 지나치지 않는다.
    • 관계형 데이터베이스에 대한 깊은 이해
      • 데이터 모델링은 테이블로 구현될 때까지의 전반적 과정. 테이블로 생성되는 물리 모델은 데이터베이스와 밀접한 연관이 있기에 이에 대해서도 잘 알아야 한다.
    • 튜닝. 데이터를 정확하고(무결성) 빠르게(성능) 제공하려면 튜닝 요소를 알고 모델링에 적용해야 함
  • 분석력 측면은..
    • 모델링 기법과 별개로, 정확한 분석을 통해 모델의 기반이 되는 엔티티 정의
    • 속성 하나도 숙고하고 종합적으로 사고해 판단하려하면 분석력은 향상될 것
  • 많은 이해 관계자와 합의, 설득 과정에서 원활한 커뮤니케이션 수행
  • 모델링 경험
    • 데이터 모델링은 틀에 맞지 않은 상황이 많아서, 최종 판단 기준이 경험이 될 때가 많음.
  • 사명감
    • 모델러가 시스템에 미치는 영향은 대단히 크다.
    • 효율적인 시스템을 위해 엔티티 정의하고 관계 도출 과정에서 전력을 기울여야 할 것

🥲 히지만 현실적으로 절대적인 시간이 부족하다. 이럴 땐...

  1. 프로젝트 초반, 선봉대로 나서 핵심 데이터 구조부터 제대로 잡는다.
    • 튼튼하고 확장성이 좋은 뼈대를 구축
    • 환경에 따라 적절한 전략을 사용
    • 중복 데이터까지 제거하면 성공적 🏰

1.8 모델링 목표

  1. 데이터 무결성
  • 중복 데이터 제거
  • 엔티티를 통합해 서브타입으로 관리하는 것이 바람직
  1. 성능 고려
  • 일부 작업(eg. 배치)에서의 성능 병목을 주의
  • 과도한 최적화 지양
  1. 유연성(확장성)
  • 존재할 가능성이 희박하거나, 향후 몇십 년 후에 발생할 요건을 대비할 필욘 없다.
  • 분리된 모델을 통합하는 것보다, 통합된 모델을 분리하는 것이 더욱 수월하기에 데이터를 통합하는 방향으로 모델링 목표를 세워야 한다.
  • 모델이 애플리케이션에 종속되지 않아야 유연한 모델이 된다. 데이터 성격에 맞는 엔티티를 정의할 것
  • 화면에서 보려고 하는 뷰는 데이터베이스 뷰로 대부분 해결 가능. 뷰를 잘 사용하면 애플리케이션과 모델을 더욱 독립적으로 관리 가능
  1. ERD로 잘 표현된 모델 (가독성)
👀 하지만 실제 업무에서 무결성을 높이기란 쉽지 않다. 이미 너무 많은 테이블, 데이터, 쿼리 중심의 구조가 문제인 것 같다. 
현실적으로 어떻게 개선할 수 있을지 고민이 든다...

📍 요약

  1. 데이터 모델링은 정답이 없고 복합적 능력을 요구하는 분야
  2. 상식적 이론과 경험을 바탕으로, 단순하고 명확한 구조를 지향해야 한다.
  3. 모델링은 설계뿐 아니라 다양한 이해관계자와의 커뮤니케이션 도구이기도 하다.
  4. 좋은 모델은 무결성, 성능, 비즈니스 표현, 확장성, 표현력을 충족해야 한다.
  5. 훌륭한 모델러는 기술력과 분석력뿐 아니라, 시간 제약 속에서도 전략적으로 설계할 수 있어야 한다.

🤔 생각 정리

이론적 이해를 바탕으로 한 모델링뿐 아니라, 실제 업무와 유사한 사례를 통해 왜 그렇게 모델링했는가를 추론하며 연습하는 것이 중요하다고 느꼈다. 특히 커뮤니케이션이 중요한 만큼, 내가 설계한 모델을 명확하고 구체적으로 설명할 수 있는 역량도 함께 키워야겠다고 생각했다. 현실에서 이미 복잡해진 구조를 개선하기 위해선 작은 단위부터 무결성을 지켜가는 전략이 필요하며, 단기성과보다 장기적 유연성과 확장성을 우선하는 시각을 갖고 싶다.

한음
# ch01. 데이터 모델링에 대한 상념

1.1 데이터 모델링이 왜 어려운가

  • 데이터 모델링 이론을 알고 있더라도 막상 시작하려면 무엇을 어떻게 해야할지 막막하다
  • 완료 하고나서는 모델링이 제대로 됐는지에 대한 확신이 없다

이유가 뭘까

  • 우선 모델링 이론 외에 알아야 하는 분야의 폭이 넓다 (데이터의 본질, DBMS의 구체적인 특징까지...)
  • 데이터의 집합을 정의하고 일반화하는 것이 어렵다
  • 쿼리 작성 능력이 뛰어나야하고 쿼리 플랜을 분석할 수 있어야 한다
  • 모델링엔 정답이 없다. 다만 100점에 가까운 모델은 있다

어떻게 하면 좋은 모델이라는 것을 확인할 수 있을까

  • 수치만으로 판단할 수 없다. 판단력과 통찰력에 의존적이다
  • 사용자를 설득하고 개발자를 설득해야 한다

1.2 데이터 모델링의 매력

  • 무에서 유를 창조하는, 백지 상태에서 시작해 창작하는 희열이 있다
  • 이 과정에서 많은 업무 지식을 습득한다는 장점이 있다
  • 20년 전에 모델링은 블랙박스 였지만 지금은 누구라도 데이터에 관심을 가진다
  • 데이터 모델은 시스템에서 가장 중요한 토대이므로 중압감이 있지만 매력적이다

1.3 모델링은 상식적이다

  • 다른 이론에 비교해 모델링 이론이 어렵지 않은 것인 상식적이기 때문이다
  • 정규화, 데이터 무결성 같은 이론은 상식적이다
  • 반면 경험을 통해 터득하는 부분도 존재한다
  • 데이터 모델링은 상식적인 이론이 토대가 돼야 하며, 상식을 기반으로 한 경험이 축적되어야 좋은 모델을 만들 수 있다

1.4 모델러와 바둑 프로기사

  • 모델링은 바둑과 비슷하다
  • 첫 엔티티를 그리는 것이 마치 바둑에서 첫 수를 두는 느낌이다
  • 정석을 모르면 바둑을 두기 어렵듯 모델링 이론을 모르면 모델링이 힘들어진다
  • 분석력, 논리력, 종학적인 사고능력, 설득력, 섬세함 등이 있어야 전문 모델러가 될 수 있다
  • 수 읽기가 중요하듯이 모델링을 수행하면서 데이터가 생성되는 것을 읽어야 한다
  • 프로 기사의 수를 이해하긴 쉽지만 따라하기 어렵듯, 전문 모델러의 모델은 이해가 되지만 실제로 그런 모델을 구축하기는 어렵다

1.5 좋은 모델은?

단순하고 명확한 모델

  • 엔티티에 대한 명확한 정의가 출발이다
  • 복잡한 것을 단순하게 만드는 것이 위대하다

데이터 무결성이 보장되는 모델

  • 무결성이 훼손된 데이터는 비즈니스 요구사항을 충족하더라도, 빠른 성능이 보장되어도 좋은 모델이 아니다
  • 가장 기본적인 방법은 중복 제거.

기타

  • 빠른 성능을 보장하는 모델
  • 비즈니스를 효율적으로 표현한 모델
  • 업무의 변화에 유연하게 대처할 수 있는 모델
  • 모델 표현이 정확한 것(ERD)

1.6 모델링이 왜 필요한가?

  • 당연히 좋은 모델을 만들기 위해서 필요하다
  • 관련자의 커뮤니케이션을 돕는다
  • 정확하고 빠르게 프로그램을 제공하게 한다
  • 같은 인력으로 더 많은 일을 할 수 있으므로 경영 혁신의 지름길이다

1.7 좋은 모델러란?

기술력

  • 모델링 이론을 깊게 알아야 한다
  • RDBMS에 대해서도 깊게 알아야한다
  • 튜닝 요소를 알고 모델링에 적용할 줄 알아야 한다

분석력

  • 정확한 분석을 통해 모델의 기반이 되는 엔티티가 정의된다

그 밖의 능력

  • 발표력, 자신의 모델을 설명하고 여러 사람과 커뮤니케이션 해야한다
  • 경험, 틀에 맞지 않는 상황에서 경험이 상당히 중요하다
  • 사명감, 효율적인 시스템을 구축하려는 사명감이 필요하다

1.8 모델링 목표

  • 데이터의 무결성을 높이는 것(데이터 중복 제거, 정합성 유지)
  • 데이터 값의 중복과 모델 구조의 중복을 제거하는 것
  • 심각한 성능 이슈가 발생하지 않도록 하는 것
  • 모델이 애플리케이션에 종속되지 않는 유연한 모델을 설계하는 것
  • ERD로 잘 표현된 모델을 구축하는 것