728x90
728x90

정규화(Normalization), 반정규화(Denormalization), 이상(Anomaly)

들어가며

  • 데이터베이스에서 정규화(Normalization)반정규화(Denormalization), 이상(Anomaly)에 대해 정리해본다.

 

정규화(Normalization)

개념

  • 데이터의 중복을 최소화하고, 이상 현상(Anomalies)을 방지하기 위해 데이터베이스 테이블을 구조화하는 과정
  • 1차 정규형(1NF), 2NF, 3NF, BCNF, 4NF, 5NF 등의 정규형이 있다.

ⓒ visual-paradigm

 

장점

  • 중복된 데이터가 적어져 갱신이나 삭제 시 한 번만 변경해도 일관성이 유지된다.
  • 동일한 데이터를 여러 곳에 보관하지 않아도 되어 저장 공간을 절약할 수 있다.
  • 테이블 구조가 잘 정리되어 있어 갱신 이상, 삭제 이상, 삽입 이상 같은 문제들을 최소화할 수 있다.
  • 테이블이 명확히 분리되어 있고 각 테이블의 역할이 분명하여 상대적으로 유연하게 스키마를 확장하거나 변경할 수 있다.

 

단점

  • 데이터가 여러 테이블에 나뉘어 저장되기 때문에 필요한 정보를 가져오기 위해 복잡한 조인(JOIN) 연산을 많이 수행해야 할 수 있다.
  • 데이터 조회가 빈번하고, 여러 테이블을 조인해야 하는 경우 쿼리 성능이 떨어질 수 있다.
  • 지나치게 높은 정규형을 추구할 경우 실제 업무에 비해 너무 복잡해질 수 있다.

 

반정규화(Denormalization)

개념

  • 정규화된 구조에서 읽기(조회) 성능 향상 등 특정 목적을 달성하기 위해 의도적으로 테이블 구조를 재배치하거나 데이터를 중복 저장하는 기법
  • 쿼리 성능 또는 응답 속도 향상 등의 요구사항을 충족시키기 위해 정규화 원칙을 일부 위배시키는 방법이다.
  • 데이터의 중복을 허용하여 조회 성능을 높이거나, 복잡한 조인(JOIN) 연산이나 집계 연산을 줄이기 위해 결과를 미리 저장하는 방법 등을 적용한다.

 

장점

  • 필요한 데이터를 미리 중복 저장해두거나, 집계(Aggregation) 정보를 미리 저장해두면 조인 연산을 줄이거나 계산 과정을 생략할 수 있어 조회 속도가 빨라질 수 있다.
  • 조인이 많이 필요한 복잡한 구조를 피할 수 있으므로, 애플리케이션 계층에서 쿼리를 단순화할 수 있다.

 

단점

  • 동일한 데이터가 여러 곳에 중복 저장되므로, 한쪽만 변경되거나 업데이트가 제대로 동기화되지 않으면 데이터 불일치 문제가 발생할 수 있다.
  • 데이터가 여러 테이블 또는 컬럼에 중복으로 저장되므로 저장 공간을 더 많이 차지하게 된다.
  • 모든 곳에서 동일한 정보를 일관성 있게 업데이트해야 하므로 중복된 데이터가 많을수록 갱신 로직이 복잡해진다.

 

정규화 vs. 반정규화

구분 정규화 반정규화
목적 ☑️ 중복 최소화
☑️ 데이터 무결성 확보
☑️ 조회 성능 최적화
☑️ 복잡한 쿼리 단순화
장점 ☑️ 이상 현상 최소화
☑️ 무결성 및 일관성 유지
☑️ 저장 공간 효율화
☑️ 조회 성능 향상
☑️ 복잡한 조인 연산 감소
☑️ 애플리케이션 로직 단순화
단점 ☑️ 조인 증가로 인한 성능 저하
☑️ 스키마가 지나치게 복잡해질 수 있음.
☑️ 데이터 무결성 유지의 어려움
☑️ 중복으로 인한 저장 공간 낭비
☑️ 데이터 불일치 가능성 
적용 시점 데이터 구조 설계 초기에 우선적으로 적용 성능 개선이 필요하거나 조회 빈도가 높은 특정 부분에 한해 선택적으로 적용
사용 예 ☑️ 데이터베이스 스키마 초기 설계
☑️ OLTP(온라인 거래 처리) 시스템
☑️ 대규모 트래픽 대응
☑️ 데이터 집계(통계/분석) 활용
☑️ 캐싱에 준하는 중복 데이터 활용

 

이상(Anomaly) 

개념

  • 정규화가 제대로 이루어지지 않은 테입르에서 발생하는 테이블 불일치, 중복, 예외적인 문제 등을 의미한다.

 

종류

  • 주로 갱신 이상(Update Anomaly), 삭제 이상(Deletion Anomaly), 삽입 이상(Insertion Anomaly)으로 나뉜다.

 

(1) 갱신 이상(Update Anomaly)

  • 데이터가 중복 저장되어 있을 때, 일부만 수정되불일치 문제가 발생하는 현상

 

예제
학번 학생 이름 강의명
101 홍길동 데이터베이스
102 김철수 데이터베이스
101 홍길동 자료구조

 

홍길동(101번)의 이름을 홍길순으로 변경할 경우, 모든 행이 아닌 첫 번째 행만 수정이 되어 기존의 홍길동과 변경된 홍길순이 모두 존재하는 문제가 발생한다.

 

(2) 삭제 이상(Deletion Anomaly)

  • 특정 데이터를 삭제할 때, 원하지 않는 중요한 정보까지 함께 삭제되는 현상

 

예제
학번 학생 이름 강의명
101 홍길동 데이터베이스
102 김철수 자료구조

 

김철수(102번)가 수강을 취소하여 해당 행을 삭제하면, 학생 김철수의 개인 정보(학번, 이름)도 함께 삭제되는 문제가 발생한다.

 

(3) 삽입 이상(Insertion Anomaly)

  • 새로운 데이터를 삽입할 때, 원하지 않는 NULL 값이 필요하거나, 불필요한 데이터를 함께 삽입해야 하는 현상

 

예제
학번 학생 이름 강의명
101 홍길동 데이터베이스

 

⇒ 새로운 학생 '이영희(103번)' 가 아직 강의를 신청하지 않았다면, 강의명 열에 NULL을 허용해야 하는 문제가 발생한다. (강의가 없으면 학생 정보를 추가할 수 없는 삽입 제약 조건 문제가 발생한다.)

 

이상 문제 해결 하기 : 정규화(Normalization)

  • 정규화(Normalization)를 수행하면 이러한 이상 문제를 방지할 수 있다.

갱신 이상 방지 : 학생 이름을 한 번만 수정하면 된다.
삭제 이상 방지 : 특정 강의 정보를 삭제해도 학생 정보는 유지된다.
 삽입 이상 방지 : 강의를 신청하지 않은 학생도 등록할 수 있다.

 

예 : 학생 정보 테이블 (Student)
학번 학생 이름
101 홍길동
102 김철수
103 이영희

 

예 : 수강 정보 테이블 (Enrollment)
학번 강의명
101 데이터베이스
102 자료구조

 

참고 사이트

 

A Comprehensive Guide to Database Normalization with Examples - Visual Paradigm Guides

Table of Contents hide 1 Introduction 2 Why Normalize a Database? 3 Levels of Normalization 4 First Normal Form (1NF) 5 Second Normal Form (2NF) 6 Third Normal Form (3NF) 7 Boyce-Codd Normal Form (BCNF) 8 Fourth Normal Form (4NF) 9 Fifth Normal Form (5NF)

guides.visual-paradigm.com

 

728x90
728x90

정규화(Normalization), 반정규화(Denormalization), 이상(Anomaly)들어가며정규화(Normalization)개념장점단점반정규화(Denormalization)개념장점단점정규화 vs. 반정규화이상(Anomaly) 개념종류(1) 갱신 이상(Update Anomaly)(2) 삭제 이상(Deletion Anomaly)(3) 삽입 이상(Insertion Anomaly)이상 문제 해결 하기 : 정규화(Normalization)참고 사이트