💡 핵심 인사이트
데이터베이스 설계의 3단계인 논리적 설계(Logical Design)는 화이트보드에 자유롭게 그려진 사각형, 마름모 그림(ERD)을 엄격하고 수학적인 '2차원 테이블(릴레이션 스키마)' 구조로 딱딱하게 찍어 누르는 번역 작업입니다.
이 과정에서 가장 핵심적인 두 가지 액션이 바로 **'매핑 룰(Mapping Rule)'의 적용과 '정규화(Normalization)'**입니다.
Ⅰ. 논리적 설계의 목표와 투입/산출물
개념 세계(아이디어)에서 1과 0의 물리 세계(디스크)로 넘어가기 전의 중간 다리입니다.
- 입력물: 개념적 설계 단계에서 만들어진 'ER 다이어그램 (ERD)'.
- 출력물: 목표 데이터 모델(주로 RDBMS)에 맞게 변환된 '논리적 스키마 (테이블 정의서)'.
이때 개발자는 "어떤 RDBMS(오라클, MSSQL, MySQL)를 쓸지"는 결정하지만, 특정 DB 엔진의 내부 저장 구조까지는 깊이 파고들지 않습니다. 오직 테이블 간의 관계(FK)와 구조(PK)를 확립하는 데 전념합니다.
Ⅱ. 논리적 설계의 2대 핵심 작업
1. 매핑 룰 (Mapping Rule) 적용
- 동그라미(속성)와 마름모(관계)를 어떻게 네모난 테이블과 컬럼으로 쑤셔 넣을 것인가? 그 규칙을 적용하는 기계적인 작업입니다. (다음 장 116. 매핑 룰에서 상세히 다룹니다.)
- 1:N 관계의 마름모는 외래 키(FK)로 번역하고, M:N 관계의 마름모는 억지로 찢어서 제3의 '교차 테이블'을 창조해 내는 식의 변환을 수행합니다.
2. 정규화 (Normalization) 수행 ★생명줄★
- 뼈대가 완성된 테이블들을 가만히 쳐다보니, 엑셀처럼 데이터가 중복되어 뚱뚱한 놈들이 보입니다.
- 이대로 물리적 DB에 구워버리면 갱신 이상(Update Anomaly)이 터질 것이 자명하므로, "삽입/삭제/갱신 이상을 막기 위해 함수적 종속성(FD)을 분석하여 테이블을 무손실 분해"하는 제1~제3 정규화 수술을 이 논리적 설계 단계에서 무조건, 치열하게 끝마쳐야 합니다.
- (만약 성능 때문에 이 찢어놓은 테이블을 다시 합치는 '반정규화'는 다음 단계인 물리적 설계에서 튜닝 목적으로 진행합니다.)
Ⅲ. 트랜잭션 인터페이스 설계
테이블 뼈대만 잡는 것이 아닙니다. "고객이 이 쇼핑몰에서 주로 어떤 행동을 할까?" ➔ "물건을 검색하고 장바구니에 담는다." 이 잦은 비즈니스 로직들이 DB에서 어떻게 흘러갈지, 즉 애플리케이션(웹 서버)과 DB 사이에서 주고받을 데이터의 논리적 흐름(트랜잭션 인터페이스)을 스케치하는 것도 이 단계의 중요한 몫입니다.
📢 섹션 요약 비유: 개념적 설계가 건축주와 종이 위에 "거실, 부엌, 화장실"을 구름 모양으로 예쁘게 끄적여놓은 아이디어 스케치라면, 논리적 설계는 건축 설계사가 그 스케치를 들고 도면 책상에 앉아 "거실 벽 두께 30cm, 부엌 타일 2차원 평면도, 하중 분산을 위한 기둥 배치(정규화)" 등을 오차 없이 자를 대고 그려내는 깐깐한 도면 작업입니다. 이 도면이 완벽해야 나중에 시멘트(물리적 설계)를 부었을 때 집이 무너지지 않습니다.