데이터 베이스/설계 1편, 현대적 데이터 모델링 완전 정복

Ch11. 물리적 모델링 실습 - 설계

webmaster 2026. 7. 5. 20:10

논리적 모델링 확인

논리적 모델링

 

이 논리적 모델을 우리가 사용하기로 한 MySQL이라는 특정 데이터베이스에 맞게 변환하고, 성능과 효율성, 그리고 현실적인 제약 조건들을 고려하여 최적화하는 물리적 모델링 진행할 차례다.

 

물리적 모델링

물리적 모델링은 테이블별로 어떤 데이터 타입을 선택하고, 어떤 제약조건과 인덱스를 추가해야 할지 신중하게 결정하며 "CREATE TABLE" 구문을 완성해 나간다. 물리적 모델링의 결과는 크게 테이블 정의서 실제 테이블을 만들 있는 스크립트인 DDL 나와야 한다.

 

물리적 모델링의 핵심 목표 하나는 바로 성능이다. 논리적으로 아무리 완벽한 모델이라도, 실제 서비스에서 쿼리가 느리다면 아무 소용이 없다. 이번 시간에는 조회 성능을 극대화하기 위해 의도적으로 정규화 원칙을 위배하는 역정규화(Denormalization) 기법과 데이터 검색 속도를 획기적으로 높이는 인덱스(Index) 설계를 우리의 쇼핑몰 모델에 적용해 것이다.

 

물리적 모델링 순서

  1. 테이블과 컬럼 변환: 논리적 모델의 엔티티는 테이블로, 속성은 컬럼으로 변환한다. 이때 테이블명, 컬럼명을 정하는 규칙(Naming Convention)을 정하고 적용한다.
  2. 데이터 타입 정의: 각 컬럼에 가장 적합한 데이터 타입(예: VARCHAR, INT, DATETIME)을 선택한다. 이는 저장 공간과 성능에 직접적인 영향을 미친다.
  3. 제약 조건 설정: 기본 키, 외래 키, "NOT NULL" 등 데이터의 무결성을 보장하기 위한 제약 조건을 구체적으로 설정한다.
  4. 인덱스 설계: 데이터 조회 성능을 극대화하기 위해 어떤 컬럼에 인덱스를 생성할지 결정한다.
  5. 역정규화 및 성능 튜닝: 필요에 따라 정규화 원칙을 위배하여 테이블을 통합하거나 중복 데이터를 추가하는 "역정규화"를 수행하여 성능을 개선한다. (최후의 수단)
  6. 파티셔닝 샤딩등 기타 기법 적용: 대용량 테이블의 경우, 특정 기준으로 데이터를 분할하여 저장하는 파티셔닝 같은 고급 기법을 고려한다.
  7. 뷰, 저장 프로시저, 함수, 트리거 생성: 완성된 테이블 구조 위에서 필요한 뷰, 프로시저, 트리거 등 추가적인 데이터베이스 객체를 생성한다.