관리 메뉴

RUBY

[220614] SQL개발자 _ 01. 정규화 본문

자격증/SQL 개발자

[220614] SQL개발자 _ 01. 정규화

ruby-jieun 2022. 6. 14. 15:12

 

 

 

 


 

 


정규화

(Normalization)

 

 

관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스

 

 

 

 


 

 

 

 

정규화의 기본 목표

관련이 없는 함수 종속성은 별개의 릴레이션으로 표현한다.

 

 

 

 

정규형 - 정규화 된 결과

  1. 기본 정규형
    - 제 1 정규형
    - 제 2 정규형
    - 제 3 정규형
    - BCNF(보이스/코드 정규형)
  2. 고급 정규형
    - 제 4 정규형
    - 제 5 정규형

 

정규화 장점 - 이상 현상의 발생 가능성을 줄임

정규화 단점 - 연산 시간이 증가함

 

 

 

 

 

제 1 정규형

 

릴레이션에 속한 모든 속성의 도메인이 더 이상 분해되지 않는 원자값으로만 구성된 정규형이다.

 

 

 

 

 

제 2 정규형

 

릴레이션에 제 1 정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속 되면 제 2 정규형에 속한다.

제 1 정규형이 속하는 릴레이션이 제 2 정규형을 만족하게 하려면, 부분 함수 종속을 제거하고 모든 속성이 기본키에 완전 함수 종속되도록 릴레이션을 분해하는 정규화 과정을 거쳐야 한다.

 

  • 완전 함수 종속
    어떤 속성이 기본키에 대해 완전히 종속일 때
  • 부분 함수 종속
    어떤 속성이 기본키가 아닌 다른 속성에 종속되거나, 기본키가 여러 속성으로 구성되어 있을 경우 기본키를 구성하는 속성 중 일부만 종속될 때

 

 

 

 

 

제 3 정규형

 

릴레이션이 제 2 정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속이 되지 않으면 제 3 정규형에 속한다.

 

  • 이행적 함수 종속
    - A →B, B→C인 경우 A→C가 성립될때
    - 즉, A를 알면 B를 알고 그를 통해 C를 알 수 있는 경우를 의미

 

 

 

 

 

 

BCNF

 

릴레이션의 함수 종속 관계에서 모든 결정자가 후보키이면 BCNF에 속한다.

 

  • 하나의 릴레이션에 여러 개의 후보키가 존재할 수도 있는데, 이런 경우는 제 3 정규형까지 모두 만족하더라도 이상 현상이 발생할 수 있다. 이러한 이상 현상을 해결하기 위해 제 3 정규형보다 좀 더 엄격한 제약 조건을 제시한 것이 BCNF이다.

 

 

 

 

 

고급 정규형 (제 4 정규형, 제 5 정규형)

 

 

  1. 제 4 정규형
    릴레이션이 BCNF를 만족하면서, 함수 종속이 아닌 다치 종속(MVD : Multi Valued Dependency)를 제거해야 만족할 수 있다.
  2. 제 5 정규형
    릴레이션이 제 4 정규형을 만족하면서 후보키를 통하지 않는 조인 종속(JD : Join Dependency)을 제거해야 만족할 수 있다.

 

 

실제로 데이터베이스를 설계할 때 모든 릴레이션이 무조건 제 5 정규형에 속하도록 분해해야 하는 것은 아니다.

오히려 그런 경우는 비효율적인 경우가 많다.

일반적으로 제 3 정규형이나 BCNF에 속하도록 릴레이션을 분해하여 데이터 중복을 줄이고 이상 현상이 발생하는 문제를 해결한다고 한다.

Comments