Sql개발자
SQL 정규화(Normalization) 와 반정규화(De-Normalizat)
martinooo
2021. 10. 8. 10:51
SQLD Study 4일차
정규화란?
1. 정규화는 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 방법이며 데이터를 분해하는 과정이다
2. 정규화는 데이터 중복을 제거하고 데이터 모델의 독립성을 확보하기 위한 방법이다
3. 정규화된 모델은 테이블로 분해되고 , Join을 수행하며 하나의 합집합으로 만들수 있다
정규화 절차 (저는 시험문제로 제출될수 있는 BCNF 까지만 공부를 했습니다)
정규화 절차 | 설명 |
제1정규화 | 속성(Attribute)의 원자성을 확보한다 중복값을 제거한다 기본키를 설정한다 |
제2정규화 | 기본키의 2개 이상의 속성으로 이루어진 경우, 부분 함수 종속성을 제거 한다 |
제 3정규화 | 기본키를 제외한 칼럼 간에 종속성을 제거한다 즉 , 이행 함수 종속성을 제거한다 |
BCNF | 기본키를 제외하고 후보키가 있는 경우, 후보키가 기본키를 종속시키면 분해한다 |
정규화의 문제점
1. 정규화는 데이터 조회 시에 조인을 남발하기 떄문에 CPU와 메모리를 많이 사용한다
2. 정규화는 테이블을 분해해서 데이터 중복을 제거하기 때문에 데이터 모델의 유연성을 높인다.
정규화를 사용한 성능 튜닝
1. 조인으로 인하여 성능이 저하되서 반정규화를 통해서 해결 할 수있다
2. 반정규화는 데이터를 중복시키기 때문에 또 다른 문제점을 발생시킬수있다
반정규화란?
1. 데이터베이스의 성능 향상을 위하여, 데이터 중복을 허용하고 조인을 줄이는 성능 향상 기법
2. 반정규화는 조회(Select) 속도를 향상시키지만, 데이터 모델의 유연성은 낮아진다.
반정규화를 수행하는 이유?
1. 정규화에 충실하면 종속성, 활용설은 향상되지만 수행 속도가 느려지는 경우
2. 다량의 범위를 자주 처리해야 하는 경우
3. 요약/집계 정보가 자주 요구되는 경우
반정규화 절차
반정규화 절차 | 설명 |
대상 조사 및 검토 | 데이터 처리 범위, 통계성 등을 확인해서 반정규화 대상을 조사한다 |
다른 방법 검토 | 반정규화를 수행하기 전에 다른 방법이 있는지 검토한다 |
반정규화 수행 | 테이블, 속성, 관계 등을 반정규화 한다 |
슈퍼 타입 및 서브 타입 변환 방법
변환 방법 | 설명 |
OneToOne Type | 슈퍼 타입과 서브 타입을 개별 테이블로 도출한다 |
Plus Type | 슈퍼 타입과 서브 타입 테이블로 도출한다 |
Single Type | 슈퍼 타입과 서브 타입을 하나의 테이블로 도출하다 조인 성능이 좋고 관리가 편하다 |