데이터베이스/SQLD

[SQLD 도전기] 데이터 모델과 성능(2) - 정규화와 성능

썬키 2022. 10. 10. 16:16

본문 내용은 모두 필자가 공부하며 직접 정리한 내용입니다.

Kdata 데이터자격검정의 SQL 개발자(SQLD) 가이드를 참고하였습니다.

 

─지난 글 보기─

 

[SQLD 도전기] 데이터 모델과 성능(1) - 성능 데이터 모델링의 개요

본문 내용은 모두 필자가 공부하며 직접 정리한 내용입니다. Kdata 데이터자격검정의 SQL 개발자(SQLD) 가이드를 참고하였습니다. ─지난 글 보기─ [SQLD 도전기] 데이터 모델링의 이해(5) - 식별자(Id

itsmesunky.tistory.com

과목 1 데이터 모델링의 이해

 

제 2장 데이터 모델과 성능

 

제 2절 정규화와 성능

 

1. 정규화를 통한 성능 향상 전략

정규화 : 데이터 모델링 시, 기본적으로 데이터에 대한 중복성을 제거하여 주고

데이터가 관심사별로 처리되는 경우가 많기 때문에 성능이 향상되는 특징을 가지고 있다.

물론 엔터티가 계속 발생되므로 SQL문장에서 조인이 많이 발생하여 이로 인한 성능 저하가 나타나는 경우도 있지만

이런 부분은 사례별로 유의하여 반정규화를 적용하는 전략이 필요하다.

(데이터가 꼬이는 것을 방지하기 위해 테이블을 잘게 나누는 것)

 

정규화를 수행하면 항상 조회 성능이 저하되어 나타날까?
더보기

정규화를 수행한다는 것은 데이터를 결정하는 결정자에 의해 함수적 종속을 가지고 있는
일반속성을 의존자로 하여 입력/수정/삭제 이상을 제거하는 것이다.
데이터의 중복속성을 제거하고 결정자에 의해 동일한 의미의 일반속성이 하나의 테이블로 집약되므로
한 테이블의 데이터 용량이 최소화되는 효과가 있다.
따라서 정규화된 테이블은 데이터를 처리할 때 속도가 빨라질 수도 있고 느려질 수도 있는 특성이 있다.

출처 : Kdata 데이터자격검정

 

 

★정규화 쉽게 이해하기★

제1정규형(1NF) : 원자성 - 모든 속성은 반드시 하나의 값만 가져야 한다.

출처 : Youtube 채널 SQL전문가 정미나

 

제1정규형에 위배되기 때문에 제1정규화가 필요하다.

 

출처 : Youtube 채널 SQL전문가 정미나

 

 

제2정규형(2NF) : 부분 종속 - 모든 속성은 반드시 모든 기본키에 종속되어야 한다.

기본키 일부에만 종속되어서는 안된다.

출처 : Youtube 채널 SQL전문가 강미나

위의 그림에서 기본키는 주문번호, 음료코드 2개로 이루어져있는데

음료명이라는 속성은 음료코드에만 종속되기 때문에 제2정규형에 위배된다.

그렇게 되면 데이터 이상 현상이 발생되므로 제2정규화를 실시해야 한다.

 

출처 : Youtube 채널 SQL전문가 강미나

 

 

 

제3정규형(3NF) : 이행 종속 - 기본키를 제외한 모든 속성간에는 서로 종속될 수 없다.

출처 : Youtube 채널 SQL전문가 강미나

 

출처 : Youtube 채널 SQL전문가 강미나

각 단계별로 정규화 수행 목적이 생각나지 않는다면 그림을 외우는 것도 하나의 좋은 방법일 거 같다.

관련 문제를 몇 번 풀다보면 정규화에 대한 개념이 금방 잡힐 것으로 예상된다.

 

 

다음에는 반정규화와 성능에 관한 내용을 정리하여 포스팅하겠습니다.