실제 복잡도를 지닌 프로젝트(구글 캘린더 클론)를 위한 데이터베이스 테이블 설계 방법을 설명하는 포괄적 튜토리얼입니다. 논리 모델부터 물리 테이블 생성까지 데이터베이스 설계 전 과정을 단계별로 다룹니다.
저자: Alexey Makhotkin squadette@gmail.com
이 데이터베이스 설계 튜토리얼(~9000 단어 분량)에서는 상당한 복잡도를 지닌 실제 프로젝트를 위해 데이터베이스 테이블을 어떻게 설계하는지 보여드립니다.
우리는 구글 캘린더의 클론을 설계합니다. 캘린더와 직접 관련된 기능을 가능한 한 많이 모델링합니다.
이 시리즈는 제 "Database Design Book"에서 설명한 접근 방식을 활용합니다. 책의 웹사이트는 https://databasedesignbook.com/입니다. 이메일을 남기면 책 및 관련 자료의 업데이트를 받아보실 수 있습니다.
전체 캘린더 데이터를 저장하는 논리 모델을 먼저 완성합니다. 전체 작업의 80%가량이 이 모델링에 집중됩니다. 논리 모델을 완성한 후, 직접적으로 논리 모델을 기반으로 테이블 설계를 진행합니다.
이 책의 목적은 구현할 대략적인 아이디어(예: “헬스장에서 스케줄 및 강사 예약을 관리하는 웹사이트가 필요해요.”)에서, 완전하고 구체적인 데이터베이스 테이블 정의까지 도달하는 방법을 안내하는 것입니다.
텍스트의 약 75%는 데이터베이스가 무엇이고 정보가 어떻게 저장되는지에 대한 일반적인 이해만 있으면 됩니다. 1~6장은 논리 모델만 다루며, MySQL, Postgres 등 특정 데이터베이스 종류에 의존하지 않습니다. 즉, 주로 비즈니스 요구사항을 어떻게 모델링하는가에 집중합니다.
마지막 25%에서는 논리 모델에서 물리 테이블 구조로 전환하는 방법을 보여줍니다. 이는 매우 포괄적이지 않고, 다양한 접근 방식 중 하나만을 예시로 제시합니다. 하지만 이 방법은 복잡도가 크지 않은 시스템에 아주 적합합니다. 실제로도 많은 시스템이 이 전략을 부분 적용하여 설계됩니다. 이 부분은, 테이블 작성법, 데이터 타입, 기본키/인덱스, 쿼리 방법, 데이터 삽입/업데이트 등 주요 데이터베이스 작동 원리를 알아야 합니다.
(이하 각 파트, 표 및 이미지 등 원문에 따라 한글로 충실하게 번역)