본문 바로가기

프로그래밍/Database

Normalization & Denormalization 요약

Normalization: 정규화, Denormalization: 비정규화에 대해 간략하게 요역 한다. 



Normalization


데이터베이스에서 정규화 작업은 데이터 모델을 검증하는 방법다. 

이론적으로는 5단계로 구성되어 있고, 실질적으로는 3단계까지만 적용하는 경우가 대부분이다. 


고려되는 요소는 아래와 같다. 


- 중복 컬럼 삭제: No repeating group

- 유일키 전체에 대한 종속: Whole key dependent

- 유일키가 아닌 것에 영향을 받는 속성은 분리: Non-key Independent



정규화 작업은 중복 컬럼 등을 분리하여 유지보수를 쉽게 해 주지만, 비효율적인 정규화는 '조인'을 과도하게 사용하게 되어 성능을 떨어뜨린다. 

따라서 성능적 측면을 고려한 비정규화 작업을 실행해 주어야 한다. 




Denormalization


해당 테이블에 일어나는 insert, update, delete, select 등의 transaction 비율과 각각의 cost를 계산하여 성능향상 수치를 확인하고 유지보수를 고려하여 비정규화 작업을 실행해야 한다. 


- 중복 컬럼 허용

-- 매우 빈번하게 조회되는 컬럼이 서로 다른 테이블에 있다면 컬럼을 두 테이블에 중복 시키기를 고려하자.


- 유도 컬럼 생성 

-- sum 등의 다른 컬럼을 조합하여 결과를 얻어야 하는데, transaction이 많고 상대적으로 DML 작업은 덜하다면 sum컬럼을 추가하자. 






자세한 내용은 아래 링크 등을 통해서 보는게 좋다. 

DB 설계를 처음부터 할 일이 생긴다면 한번 쯤 살펴 보자.  

http://wiki.gurubee.net/pages/viewpage.action?pageId=28606676

'프로그래밍 > Database' 카테고리의 다른 글

mongo + ec2 + springboot  (0) 2020.09.10
MySQL Locking Reads  (0) 2020.05.26
Couchbase cluster with 2 vm  (0) 2019.07.17
DBCP & Timeout  (0) 2019.04.05
NoSQL 정리  (0) 2019.03.21