DB 정규화

·2022년 4월 9일
0

DB 정규화란?

 데이터베이스 내 항목 간의 종속성을 분석해서 하나의 종속성이 하나의 테이블로 표현되도록 하는 과정
  불필요한 자료의 중복성을 없애서 정보 검색을 쉽게하고, 데이터의 삽입, 삭제 수정에 대해 이상 현상을 제거하기 위해서 실시한다.

이상현상

  • 삽입이상: 원치 않은 정보가 함께 저장되는 문제
  • 삭제이상: 유지되어야 하는 정보가 함께 삭제되는 문제
  • 수정이상: 중복되는 데이터로 인한 수정의 모순성이 발생되는 문제

정규화의 단계

제1 정규화

  • 테이블의 각 컬럼에 하나의 값이 있도록 분해하는 과정
  • 테이블의 모든 속성 값이 원자 값으로만 되어있어야한다.

 위와 같은 주문목록 테이블이 존재한다고 한다면 주문번호와 그에 따라 고객번호, 주소, 주문수량 등이 한 제품에 대해 들어있기 때문에 제1 정규화 대상이 된다.
 주문목록 테이블에 제1 정규화를 진행하면 테이블은 아래처럼 변경된다.

제2 정규화

  • 제1 정규화를 진행한 테이블에 대해 기본키를 제외한 모든 속성이 기본키에 완전하게 종속되게 하는 과정
  • 완전 함수적 종속을 만드는 과정이며, 부분 함수적 종속을 제거하는 과정이다.

 제품 주문 테이블을 살펴보게 되면 테이블의 기본키인 주문번호와 제품번호에 대해 주문수량은 완전히 종속되지만 고객 번호와 주소는 제품번호가 아닌 주문번호만 으로도 결정될 수 있기 때문에 기본키에 대한 완전 함수적 종속이 되지 않는다.

제3 정규화

  • 기본키 이외의 컬럼에 종속적인 컬럼을 제거하는 과정
  • 이행적 종속성을 제거하는 과정이다.

이행적 종속성이란 기본키가 아닌 키가 다른 키의 값과 관계가 있는 경우를 뜻하며 A->B이고, B->C 일때 A->C를 만족하는 관계를 의미한다.
 주문 테이블을 보면 고객 번호가 주문번호에 종속적이고, 주소가 고객번호에 종속적인 이행적 함수 종속성을 가지고 있다.
그리고 이행적 함수 종속성을 제거하기 위해 테이블을 나누게 되면 제3 정규화가 완료된다.

정규화의 장단점

장점

  • 데이터베이스내 데이터 입력, 수정, 삭제 시 이상 현상이 줄어든다.
  • 새로운 데이터 형의 추가로 인한 확장 시, 변경해야할 구조가 줄어든다.
  • 중복된 데이터를 삭제하면서 차지하는 디스크의 용량이 줄어든다

단점

  • 정규화를 하며 데이터가 각각의 테이블로 나눠지기 때문에 데이터를 처리할때 속도가 느려질 수 있다. 대표적인 예로 JOIN연산이 있다.
profile
으쌰으쌰🐜🐜

0개의 댓글