← 질문 목록
#149깊이 0
데이터베이스 정규화를 수행하는 이유는 무엇인가?
답변 연습
내 답변 적어보기접힘
이 브라우저에 자동 저장 · 0자
모범답안 확인하기내 답변 뒤에 열어보세요
정규화는 한 사실을 그 사실을 결정하는 키와 함께 한곳에 두는 설계다. 중복을 무조건 없애는 작업보다 변경 규칙과 데이터의 의존 관계를 스키마에 드러내는 일이 가깝다.
| 이상 현상 | 한 표에 섞였을 때 | 나누면 |
|---|---|---|
| 수정 | 고객 주소를 주문마다 고쳐야 한다 | 고객 행 한 곳만 고친다 |
| 삽입 | 주문 없이 고객을 넣기 어렵다 | 고객을 독립적으로 넣는다 |
| 삭제 | 마지막 주문을 지우며 고객 정보도 잃는다 | 주문과 고객 수명이 분리된다 |
예를 들어 주문 행마다 고객 주소를 복사하면 어느 주소가 최신인지 여러 행을 맞춰야 한다. 고객과 주문을 나누고 고객 키로 연결하면 주소의 주인이 분명해진다.
표를 나눴다고 무결성이 저절로 생기지는 않는다. 기본 키·고유 제약·외래 키·NOT NULL처럼 데이터베이스가 검사할 제약도 함께 둔다. 애플리케이션 코드의 약속만으로 참조 관계를 지키지 않는다.
정규형의 단계는 반복 값, 부분 의존과 이행 의존처럼 어떤 의존을 제거했는지 설명하는 도구다. 모든 표를 기계적으로 가장 높은 단계까지 쪼개는 목표가 아니다. 업무 규칙과 변경 단위를 먼저 확인한다.
조인이 있다는 이유만으로 느리다고 단정하지 않는다. 실제 질의 계획과 데이터 크기에서 측정한다. 읽기 병목 때문에 중복을 두면 원본의 주인, 갱신 방식, 허용 지연과 다시 만드는 절차까지 함께 설계한다.