Database

정규화와 반정규화

로춘남 2020. 10. 29. 10:54
728x90

정규화란 ? 

데이터의 중복성의 제거하여 여러 엔티티의 조인이 발생하는 데이터베이스 환경에서 성능을 향상시키기 위한 데이터 구조화 프로세스

 

정규화의 방법

- 낮은 차수의 정규화를 만족한 상태로 높은 차수의 정규화를 진행

 

정규화 단계

1) 제1정규화

- 중복되는 컬럼제거

 

2) 제2정규화

- 종속되는 값 제거

 

 

3) 제3정규화

- 엔티티(테이블명)에 맞는 데이터로 분리

 

 

 

 

 

반정규화란 ?  

정규화로 인해서 테이블의 수가 증가하게 되면, 다수의 JOIN이 발생함에 따라 성능 저하가 발생할 수 있음. 이 문제를 해결하고자 정규화 과정이 모두 마무리 한 다음 반정규화를 실시한다. 단, 테이블을 합치는 것만이 반정규화는 아니다.

 

1) 그룹에 대한 합계 같은 값을 미리 계산하여 테이블에 저장 (기존 테이블을 Sum 하여 확인하지 않고 별도의 통계 테이블 생성)

2) 하나의 테이블에서 자주 사용되는 행(레코드)과 그렇지 않은 행들을 분리

3) 자주 JOIN하여 사용하는 컬럼을 중복제거하여 하나의 테이블로 생성

 

 

출처: hyyoo89.tistory.com/entry/%EC%A0%95%EA%B7%9C%ED%99%94%EC%99%80-%EB%B0%98%EC%A0%95%EA%B7%9C%ED%99%94

728x90

'Database' 카테고리의 다른 글

[SQL] 각 DB별 Like 검색 방법  (0) 2021.05.28
[MariaDB] 시퀀스 초기화 및 재정렬  (0) 2021.05.28
[PostgreSQL] 좌표값 변환하는 방법  (0) 2021.04.28
[SQL] 스키마란 무엇인가?  (0) 2020.11.03
Oracle SQL  (0) 2020.04.19