해당 내용을 논리 모델링에 쓸지, 물리 모델링에 쓸지 고민을 하였다. 현업에서는 논리 데이터 모델링을 먼저 진행하므로 해당 주제에 내용을 전개하고자 한다.
논리 모델링이란 무엇인가, 물리 모델링이란 무엇인가 개념적이고 이론적인 내용은 넘어가겠다. 대부분의 이론 책을 보면 다음과 같은 프로세스에 따라 모델링이 진행됨을 소개한다.
여기서 개괄 데이터 모델, 개념 데이터 모델에 대한 부분은 해당 글의 주제를 벗어나므로 제외한다. 논리 데이터 모델링과 물리 데이터 모델링은 언뜻 보기에는 전혀 다른 영역처럼 보인다. 하지만 다른 영역이라고 볼 수는 없다. 다시 아래와 같이 언급하고자 한다.
논리 데이터 모델과 물리 데이터 모델을 별개의 영역이라 보는 것은 좋지 않다.
그렇다면 같은 영역인가? 그것도 아니다. 필자가 얘기하고 싶은 것은, 서로 다른 독립적인 영역으로 대하지 말라는 의미다. 아래의 그림을 보자
도서의 실체를 관리하는 엔터티다. 바커 표기법을 사용해서 그런지 더더욱 물리적인 요소를 찾기가 어렵다. 딱 보기에 논리 데이터 모델 그 자체로 보인다. 하지만 아니다. 이미 물리 데이터 모델 영역의 일부분이 논리 데이터 모델에 반영되어 있다. 대표적으로 도메인단어다.
도서명의 경우 길이는 최대 몇 글자일까? 글로벌 서비스가 아니라면 아무리 길어도 100자는 넘지 않을 것이다. 저자명의 경우에는 최대 몇 글자일까? 역시 국내 서비스만 진행하게 된다면 100자를 넘는 경우는 상상하기 힘들 것이다. 비고의 경우는 어떤가? 이미 인포타입으로 내용_vc_2000을 떠올릴 것이다. 위 내용들을 통해 이미 논리 데이터 모델에 있는 용어만으로도 물리 데이터 모델에 대한 부분을 쉽게 유추할 수 있다.
이번엔 아래 그림을 보자
(출판사 엔터티, 도서반납 엔터티, 회원 엔터티 등 정규화를 더 하면 좋겠지만 언급하고자 하는 부분은 그게 아니므로 생략한다.)
특정 도서의 대출 현황을 회원이 프론트 단에서 확인하고자 한다. 그렇다면 도서대출 테이블만 조회할 수 있을까? 아니다. 도서실체 테이블도 같이 확인을 해야 한다. 그렇다면 두 테이블을 항상 조인해야 한다. 이 때, 이미 물리단에서 어떻게 할지 이미 예측이 된다.
- 회원 한 명에 대한 조회가 발생한다.
- 도서 한 개(특정 도서이므로)에 대한 대출 조회가 발생한다.
- 도서실체 테이블과 도서대출 테이블은 조인을 해야 한다.
여기서 한 명, 한 개를 강조하고 싶다. nl 조인을 통해 인덱스를 이용한 소량 데이터 조회(select)가 일어날 것을 예상할 수 있다. 도서대출 엔터티의 입장에서 보면 도서실체 엔터티와는 종속관계이다. 따라서 도서대출 엔터티를 활용하기 위해서는 도서실체 엔터티가 대부분 필요하다. 그렇다면 보자마자 도서대출 엔터티의 도서실체번호(FK)에 RI가 필요할 것이라 쉽게 생각할 수 있을 것이다.
또한, 도서대출의 경우 글로벌 서비스로 진행한다면 어떨까? 예상 회원 수를 전달 받았다면, 도서대출 엔터티가 테이블로 변환되었을 때, 얼마만큼 비대해질지는 쉽게 예상할 수 있다. 그렇게 된다면 수직 파티셔닝이나 샤딩이 저절로 떠오르게 될 것이다.
한가지 더 있다. 아래 그림을 보자.
무엇이 떠오르는가? 필자의 경우 이 엔터티를 보게 된다면 DML 연산은 몇 번 일어날까부터 생각할 것 같다. 공통코드의 경우 거의 모든 시스템에서 조회 연산이 일어날 것이다. 삽입/갱신/삭제 연산은? 거의 없을 것이다. 그렇다면 오라클의 IOT(MS-SQL의 clustered table)를 먼저 떠올려보진 않을까? 이미 엔터티만 보고도 물리 데이터 모델링(데이터베이스 설계와 같이 진행한다면)에서 어떻게 진행할지 유추가 된다.
상황(회사 내 이해관계, 지원되는 DBMS 종류 등)에 따라 위의 예시가 적합하지 않을 수도 있다. 하지만, 분명한 점은 논리-물리 데이터 모델링 간에는 관계가 있다는 점이다. 따라서 아래와 같이 다시 한번 강조하고자 한다.
우리는 무지개의 색을 7가지로 구분하였다. 하지만 실제로는 연결되는 색의 스펙트럼이다.
논리-물리 데이터 모델링도 마찬가지다. 이미 둘 사이는, 연결되어 있다.
실제 논리-물리 데이터 모델링을 접하게 된다면 정해진 프로세스라던가 체계로 인해 논리-물리 모델링 단계를 딱딱 나누기보다는, 유연하게 진행하는 사고를 지녔으면 한다.
'모델링 > 논리 모델링' 카테고리의 다른 글
[논리모델링연습] DA 공모대회 2018년 일반부 대상작 ERD 분석 (0) | 2023.11.19 |
---|---|
[논리모델링연습] DA 공모대회 2018년 일반부 개인 답안 (0) | 2023.11.19 |
[논리모델링연습] DA 공모대회 2018년 학생부 대상작 ERD 분석 (0) | 2023.08.19 |
[논리모델링연습] DA 공모대회 2018년 학생부 개인 답안 (0) | 2023.08.15 |
[논리모델링] 엔터티만 보고 1차 정규화 대상 여부를 알 수는 없다. (0) | 2023.06.04 |