본문 바로가기
AI, 빅데이터/Database

[데이터베이스] 정규화

by Foxy현 2022. 10. 19.
728x90
반응형

정규화란?

함수적 종속성 등과 같은 이론에 근거하여 관계형 데이터베이스 테이블의 삽입, 삭제, 갱신으로 인한 이상 현상 발생을 최소화하기 위해 좀 더 작은 단위의 테이블로 설계하는 과정. 즉, 데이터 모델을 정규형에 맞도록 고치는 과정입니다.

 

여기서 정규형은 정규화 결과에 의해 도출된 데이터 모델이 갖춰야 할 특성을 말합니다.

또한 함수적 종속성이란 테이블의 특정 컬럼 A를 알면 다른 컬럼 B를 알 수 있을 때, B는 A에 함수적 종속성이 있다고 합니다.

 

정규화를 하게 되면 얻는 장점으로는,

  • 상호 종속성이 강한 데이터 요소들을 분리, 독립된 개념(엔티티,테이블)로 정의하게 됨에 따라 유연성이 극대화됩니다.
  • 개념이 조금 더 세분화됩니다
  • 재활용 가능성이 더 높아집니다
  • 중복이 최소화됩니다

정규화에는 제 1정규형, 제 2정규형, 제3 정규형이 있습니다.

각각 무엇인지 알아볼까요?

 

제 1 정규형

  • 모든 속성은 원자 값을 가져야 하며 다중 값을 가지고 있는 속성은 분리되어야 함

아래의 표를 볼까요?

이벤트 번호, 당첨 여부의 컬럼에는 여러 개의 값이 들어있네요.

제 1정규형을 만족하지 못합니다. 만족하기 위해 아래와 같이 수정하겠습니다.

이렇게 하면 하나의 속성에는 하나의 값만 존재하므로 제 1정규형을 만족하게 됩니다.

 

제 2정규형

  • 제 1정규형을 만족하고 모든 기본 키 열과 기본 키가 아닌 열 간의 종속관계가 있을 경우 별도의 테이블로 분리

제 2정규형에서는 중복되는 값들을 어떻게하면 줄일 수 있을까를 생각해본다.

고객아이디이벤트번호라는 기본키가 있다. 고객아이디라는 기본키의 값과 등급, 할인율이 같게 표현되는 것을 볼 수 있는데,

이는 아래와 같이 새로운 릴레이션을 만들어 표현 가능하다.

제 3정규형

  • 제 2정규형을 만족하고 일반 속성들간에도 종속관계가 존재하지 않아야함

일반 속성들간에 중복된 데이터들도 줄여준다.

고객 릴레이션을 보면, gold - 10%가 중복되어 표현되고 있다.

따라서 아래와 같이 표현할 수 있다.

 

 

728x90
반응형