본문 바로가기
[자격증] SQLD(SQL개발자)/↘ 데이터 모델링의 이해

[ SQLD ] 데이터 모델과 성능 - 1. 정규화와 성능

by 승큐리티 2020. 5. 20.

[ SQLD ] 

2. 데이터 모델링의 이해

 2-1. 정규화와 성능

 

1. 정규화
데이터 중복 제거, 데이터 분류 등을 위해 데이터를 구조화 시키는 과정
이상현상 제거 -> 데이터 중복 제거, 데이터모델 유연성 향상

 

정규화 특징
정규화를 실행 한다면 데이터 조회 시 조인의 수가 증가한다.
업무가 변경되도 모델의 유연성을 향상 시킨다.
엔터티의 의미해석이 명확해진다.
테이블의 수가 증가한다.
모델의 독립성을 향상시킨다.

2. 정규화 절차
제1정규화 ~ 제5정규화 실제로는 제3정규화까지만 수행을 한다.

① 제1정규화 (1NF) : 테이블의 중복을 제거한다 , 분리된 테이블을 만든다 , 분리된 테이블은 기본키로 식별한다.

② 제2정규화 (2NF) : 부분함수 종속성을 제거한다 but, 제1정규화 결과 기본키가 하나라면 생략한다.
부분함수종속성 ?
테이블의 기본키가 학번, 책번호 속성으로는 책이름, 학과, 이름 엔터티가 있다고 가정해보자.
학번이 바뀌면 이름과 학과가 바뀐다 하지만 책이름은 바뀌지않는다.
책번호가 바뀌면 책이름이 바뀌지만 학과나 이름이 바뀌지는 않는다.
이렇게 부분적으로 함수들 끼리 종속성이 있는걸 부분함수종속성이라고 한다.
이것을 제거하기 위해서 따로 분리 시킨다.


③ 제3정규화 (3NF) : 이행 함수 종속성을 제거한다
이행함수종속성 ?
기본 키를 제외한 속성 중 종속성이 발생하는 것
학과는 학과코드에 종속된다. 그러므로 제거하기 위해서 테이블을 분리한다.


④ 보이스-코드 정규화 (BCNF) : 후보 키가 기본 키를 종속시킬 때 분해한다.
후보키<수강 교수>가 기본키<수강 과목>을 종속시키고 있기 때문에 분해를 시킨다.


⑤ 제4정규화 (4NF) : 칼럼 여러개가 하나의 칼럼에 종속 될 때 다중값 종속성을 제거한다.

⑥ 제5정규화 (5NF) : 조인종속의 경우 분해한다.

3. 정규화 성능저하
정규화 전에는 데이터 조회 시 테이블 1개를 조인하고 조회 했다면
정규화 후에는 데이터 조회 시 테이블 2개를 조인해야한다.
이는, 조인 시 마다 CPU와 메모리 소모를 유발 시키기 때문에 성능을 저하시킨다.

해결방법은 반정규화를 하여 1개의 테이블에 저장하여 조인 시키는것이다.

! 하지만, 하나의 테이블에 칼럼을 증가시키면 조인의 최소화로 조회가 빠르지만 너무 많아져 DBMS의 입출력 단위인
블록의 크기를 넘는다면 1번 조회 할 때 마다 여러개의 칼럼을 읽어야 하기 때문에 항상 빠르진 않다.

댓글