본문 바로가기
✏️ CS/데이터베이스

[데이터베이스] 데이터 정규화란 무엇인가?

by 개발한 너굴씨 2024. 5. 8.
728x90

 

 

데이터 정규화(Normalization)


 

 

 

 

데이터 정규화란 무엇인가

데이터 정규화는 데이터베이스 설계 기법의 하나로, 데이터의 중복을 최소화하고 데이터 구조를 효율적으로 만들어 데이터의 무결성과 일관성을 유지하기 위해 수행됩니다.

 

이 과정은 여러 단계의 '정규형'을 거쳐 데이터를 구조화합니다. 각 단계는 특정한 조건을 충적시키며 일반적으로 높은 단계의 정규형으로 갈수록 더 엄격한 조건을 만족시키게 됩니다. 

 

 

 

 

제1정규화

제1정규화는 테이블의 모든 컬럼이 원자값을 가지도록 하는 것입니다.

  • 각 컬럼에는 반복되는 그룹이나 리스트가 없어야 함
  • 각 컬럼 값은 단일 값으로 구성돼야 함 

 

 

 

 

제1정규형 테이블 

 

고객 테이블에서 고객의 취미를 나타내는 컬럼이 여러 취미를 한 컬럼에 담고 있는 경우를 예시로 들면 아래와 같습니다.

고객 ID 이름 취미
1 김이름 등산, 낚시
2 박이름 독서

 

이 테이블을 제1정규형으로 만들기 위해 취미를 분리합니다. 

고객 ID 이름 취미
1 김이름 등산
1 김이름 낚시
2 박이름 독서

 

 

 

 

제2정규화

 

제2정규화는 제1정규형을 만족하는 테이블에 대해 모든 비주요 키 속성이 기본키에 완전 함수적 종속을 만족하도록 분해하는 과정입니다. 

 

다시 말해, 부분적 종속을 제거하는 단계인 것입니다. 

 

 

 

 

제2정규형 테이블 

 

고객이 여러 주문을 할 수 있는 시스템에서 주문 테이블을 생각해보면 아래와 같습니다. 

주문 ID 고객 ID 고객이름 주문날짜 제품
101 1 김이름 2050-01-01 카메라
102 1 김이름 2050-01-02 노트북
103 2 박이름 2050-01-02 마우스

 

 

위의 경우 고객이름은 고객 ID에만 종속적입니다. 이를 분해해서 제2정규형을 만듭니다. 

 

주문테이블

주문 ID 고객 ID 주문날짜 제품
101 1 2050-01-01 카메라
102 1 2050-01-02 노트북
103 2 2050-01-02 마우스 

 

 

고객테이블

고객 ID 고객이름
1 김이름
2 박이름

 

 

 

 

 

제2정규화 장점

  • 데이터 중복 감소
  • 데이터 무결성 향상
  • 쿼리 성능 개선

 

제2정규화 단점

  • 조인 연산이 많아져 성능 저하 가능성 있음
  • 테이블 구조가 복잡해져 설계와 유지보수의 복잡성을 높임 

 

 

 

 

제3정규화

 

제3정규화는 제2정규형을 만족하는 테이블에 대해 모든 비주요 키 속성이 기본 키에 이행적으로 종속된 속성을 제거해서 분해하는 과정입니다.

 

이는 이행적 종속성을 제거하는 단계입니다. 

 

 

 

 

제3정규형 테이블 

고객 테이블에서 고객의 주소와 관련된 정보를 다루는 경우를 생각해보면 아래와 같습니다. 

 

고객테이블 

고객 ID 고객이름 우편번호 주소
1 김이름 12345 서울
2 박이름 98765 미국

 

 

여기서 주소는 우편번호에 이행적으로 종속돼 있습니다. 따라서 우편번호와 주소를 분리해 제3정규형을 만듭니다.

 

고객테이블 

고객 ID 고객이름 우편번호
1 김이름 12345
2 박이름 98765

 

주소테이블

우편번호 주소
12345 서울
98765 미국

 

 

 

 

제3정규화 장점

  • 데이터 중복 최소화로 인해 저장 공간의 효율성 증가
  • 데이터 무결성 및 일관성 유지 
  • 삽입, 삭제, 갱신 이상의 문제 해결

 

제3정규화 단점

  • 정규화 과정에서 테이블이 분리되어 쿼리 복잡성 증가
  • 조인 연산이 많아져 시스템 성능 저하 가능성 있음 

 

 

728x90

댓글