정규화를 하는 이유
- 상호 종속성이 강한 데이터 요소들을 분리하고, 독립된 개념으로 정의하게 됨에 따라 데이터의 유연성이 상승된다.
- 개념이 좀 더 세분화에 따라 개념에 대한 재활용 가능성이 높아진다.
- 일반속성 데이터 요소가 한번만 표현됨에 따라 중복이 최소화된다.
- 주의할점 ! -> 정규화된 데이터 모델을 처리할 때 입력, 수정, 삭제의 경우 무조건적으로 성능이 향상되지만, 조회의 경우 처리 조건에 따라 성능이 향상 혹은 저하될 수 있다.
정규화의 종류
- 1차 정규화 : 함수종속, 복수의 속성값을 갖는 속성을 분리, 속성의 원자성 확보
- 2차 정규화 : 함수종속, 주식별자에 완전종속적이지 않은 속성의 분리, 부분종속 속성을 분리
- 3차 정규화 : 함수종속, 일반속성에 종속적인 속성의 분리, 이전종속 송성의 분리
음... 무슨 말이지 ? ? 각각의 정규화를 그림으로 이해하면 더 좋을 것 같다.
1차 정규화
위와 같이 나이라는 하나의 속성에 2개 이상의 원자값이 들어온 경우 제 1정규형 위반이라고 하며 이것을 조정하는 것이 이 1차 정규화이다.
2차 정규화
빨간색 박스로 된 고객이름, 주문번호 컬럼이 PK라고 주어졌을 때 파란박스로 이루어진 출신고와 포지션은 주문번호PK에는 종속되어 있지 않는다. 주문번호에 따라 출신고와 포지션이 정해지는 것이 아니기 때문이다. 이렇게 Non-key 컬럼이 기본 key에 종속되어 있지 않거나 기본 key 일부 컬럼에만 종속되어 있는 경우를 제 2형 정규형 위반이라고 하고 제 2정규형에 따르지 않는다고 한다.
3차 정규화
위와 같은 경우 선수이름이 PK(primary key) 로 주어졌는데 일반 속성인 포지션과 포지션 코드가 서로 종속적인 관계를 가질 수 있다. 이런 경우 제 3형 정규형 위반이라고 하고 제 3정규형에 따르지 않는다고 한다.
'자격증 공부📖 > SQLD' 카테고리의 다른 글
[SQLD] DML (Data Manipulation Language) (0) | 2021.06.02 |
---|---|
[SQLD] DDL ( DATA DEFINITION LANGUAGE ) (0) | 2021.05.16 |
[SQLD SQL 기본] SQL문의 종류 (0) | 2021.05.16 |
[SQLD 데이터 모델의 이해] 모델링의 특징, entity(엔터티), attribute(속성) (0) | 2021.05.12 |
[SQLD] #0 SQL공부를 위한 데이터베이스 사전 지식 (0) | 2021.05.03 |