본문 바로가기
프로그래밍/데이터베이스

정규화(Normalization)에 대해서

by bantomak 2023. 4. 26.

정규화(Normalization)란?

정규화의 기본 목표는 데이터베이스에 존재하는 테이블 간에 중복된 데이터를 허용하지 않는다는 것이다. 중복된 데이터를 허용하지 않음으로써 무결성(Integrity)을 유지할 수 있으며, 한 테이블의 데이터 용량이 최소화되는 효과가 있다.

 

제 1 정규화(1NF, First Normal Form)

  • 각 테이블의 속성(Attribute)은 단일 값을 가져야 한다.
  • 각 레코드는 고유해야 한다.

 

(예제)

제1정규화_1
Movies Rented 열에 여러값이 저장되어 있다. 제 1 정규화 대상이다.

 

제1정규화_2
제 1 정규화를 적용한 테이블 구조. 모든 행에서 고유한 값을 가지도록 정규화 실행

 

제 2 정규화(2NF, Second Normal Form)

  • 제 1 정규화 적용한 상태
  • 모든 일반 속성은 반드시 모든 주식별자에 종속되어야 한다.
  • 단일 식별자인 경우 발생하지 않는다. 즉 복합 식별자(Composite Primary Key)일 때만 발생한다.

 

(예제)

제2정규화_1
Membership Id와 Full Names를 복합 식별자로 설정한 테이블
제2정규화_2
FullNames에 종속되어서 Salutation가 변경되는 상황

 

제2정규화_3
제 2 정규화가 적용된 테이블 구조. Full Names와 Salutation의 관계가 끊겼다.

 

제 3 정규화(3NF, Third Normal Form)

  • 제 2 정규화 적용한 상태
  • 주식별자가 아닌 모든 속성 간에는 서로 종속될 수 없다.
  • 단일 식별자인 경우 발생한다.

 

(예제)

제3정규화_1
Membership Id를 PK로 설정한 테이블
제3정규화_2
FullNames에 종속되어서 Salutation가 변경되는 상황. 일반 속성끼리는 종속될 수 없다.

 

제3정규화_3
제 3정규화가 적용된 테이블 구조. Full Names와 Salutation의 관계가 끊겼다.

 

정규화 수행 시 성능에 대해서

정규화_성능

정규화 수행 모델은 데이터를 입력/수정/삭제할 때 일반적으로 반정규화된 테이블에 비해 처리 성능이 향상된다. 단 데이터를 조회할 때에는 처리 조건에 따라 조회 성능이 향상될 수도 있고 저하될 수도 있다.

댓글