CS/데이터베이스

데이터베이스 : 정규화(2) - 기본 정규형과 정규화 과정

JWonK 2022. 5. 31. 01:09
728x90
반응형

※ 기본 정규형과 정규화 과정

 


▶ 정규화(Normalization)

  • 개념 
    • 함수 종속을 이용해 릴레이션을 연관성이 있는 속성들로만 구성되도록 분해해서, 이상 현상이 발생하지 않는 올바른 릴레이션으로 만들어 가는 과정
    • 정규화 목표 : 관련이 없는 함수 종속성은 별개의 릴레이션으로 표현
  • 주의 사항
    • 정규화는 무손실 분해(nonloss decomposition)를 원칙으로 진행
      • 릴레이션이 의미상 동등한 릴레이션들로 분해되어야 하고, 분해로 인한 정보 손실이 발생하지 않아야함
      • 분해된 릴레이션들을 자연 조인하면 분해 전의 릴레이션으로 복원 가능해야 함

 

 

정규형 (NF : Normal Form)

  • 릴레이션이 정규화된 정도
  • 각 정규형마다 제약조건이 존재
    • 정규형의 차수가 높아질수록 요구되는 제약조건이 많아지고 엄격함
  • 릴레이션의 특성을 고려해서 적합한 정규형을 선택

 

정규형의 종류

 

정규형들의 관계

 

제 1 정규형 (1NF : First Normal Form)

  • 릴레이션의 모든 속성이 더는 분해되지 않는 원자 값(atomic value)을 가지면 제 1 정규형을 만족함
  • 제 1 정규형을 만족해야 관계 데이터베이스의 릴레이션이 될 자격이 있음

 

다중값 속성을 포함하는 릴레이션의 경우 제 1 정규형을 만족하지 못한다.

그에 반해 다중값 속성이 존재하지 않는 릴레이션은 제 1 정규형을 만족하는 릴레이션의 경우가 된다.

 

  제 1 정규형은 만족하지만 이상 현상이 발생하는 릴레이션 예

  • 제 1 정규형을 만족하지만 데이터 중복으로 인한 이상 현상이 발생함

제 1 정규형에 속하는 이벤트 참여 릴레이션

 

▶ 제 1 정규형은 만족하지만 이상 현상이 발생하는 릴레이션 예

  • 이상 현상의 발생 이유는 ?
    • 기본키에 완전 함수 종속되지 못한 등급과 할인율 때문

이벤트 참여 릴레이션의 삽입 / 갱신 / 삭제 이상

 

제 1 정규형은 만족하지만 이상 현상이 발생하는 릴레이션 예

  • 이상 현상의 발생 이유
    • 기본키인 {고객아이디, 이벤트번호}에 완전 함수 종속되지 못하고 일부분인 고객아이디에 종속되는 등급과 할인율 속성이 존재하기 때문
  • 문제 해결 방법
    • 부분 함수 종속이 제거되도록 이벤트 참여 릴레이션을 분해
      • 분해된 릴레이션들은 제 2 정규형에 속하게 됨

 

 

 

  제 2 정규형 (2NF : Second Normal Form)

  • 릴레이션이 제 1 정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속되면 제 2 정규형을 만족함
  • 제 1 정규형에 속하는 릴레이션이 제 2 정규형을 만족하게 하려면 ?
    • 부분 함수 종속을 제거하고 모든 속성이 기본키에 완전 함수 종속되도록 분해

제 1 정규형에 속하는 이벤트 참여 릴레이션
제 2 정규형을 만족하도록 분해된 2개의 릴레이션

 

고객 릴레이션과 이벤트참여 릴레이션의 함수 종속 다이어그램
이벤트 참여 릴레이션의 분해 결과

 

  제 2 정규형은 만족하지만 이상 현상이 발생하는 릴레이션 예

  • 제 2 정규형을 만족하지만 이상 현상이 발생함

 

  • 이상 현상의 발생 이유는 ?
    • 이행적 함수 종속이 존재하기 때문

고객 릴리에션의 삽입 / 갱신 / 삭제 이상

  • 이상 현상의 발생 이유
    • 이행적 함수 종속이 존재하기 때문
  • 문제 해결 방법
    • 이행적 함수 종속이 제거되도록 고객 릴레이션을 분해
      • 분해된 릴레이션들은 제 3 정규형에 속하게 됨

 

  이행적 함수 종속(Transitive FD)

  • 릴레이션을 구성하는 3개의 속성 집합 X, Y, Z에 대해 함수 종속 관계, X->Y와 Y->Z가 존재하면 논리적으로 X->Z가 성립되는데, 이 때 Z가 X에 이행적으로 함수 종속 되었다고 함

 

 

  제 3 정규형 (3NF : Third Normal Form)

  • 릴레이션이 제 2 정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속이 되지 않으면 제 3 정규형을 만족함
  • 제 2 정규형에 속하는 릴레이션이 제 3 정규형을 만족하게 하려면?
    • 모든 속성이 기본키에 이행적 함수 종속이 되지 않도록 분해
  • 제 2 정규형을 만족하지만 제 3 정규형은 만족하지 않는 릴레이션
    • 고객 아이디가 등급을 통해 할인율을 결정하는 이행적 함수 종속 관계가 존재하기 때문

 

  • 고객 릴레이션과 고객등급 릴레이션은 모두 제 3 정규형에 속함

제 3 정규형을 만족하도록 분해된 2개의 릴레이션
고객 릴레이션과 고객등급 릴레이션의 함수 종속 다이어그램

 

  보이스 / 코드 정규형 (BCNF : Boyce / Codd Normal Form)

  • 필요성 
    • 하나의 릴레이션에 여러 개의 후보키가 존재하는 경우, 제 3 정규형까지 모두 만족해도 이상 현상이 발생할 수 있음
  • 의미
    • 강한 제 3 정규형(Strong 3NF)
      • 후보키를 여러 개 가지고 있는 릴레이션에 발생할 수 있는 이상 현상을 해결하기 위해 제 3 정규형보다 좀 더 엄격한 제약조건을 제시
      • 보이스 / 코드 정규형에 속하는 모든 릴레이션은 제 3 정규형에 속하지만, 제 3 정규형에 속하는 모든 릴레이션이 보이스 / 코드 정규형에 속하는 것은 아님

 

  보이스 / 코드 정규형을 만족하지 않는 릴레이션 예

  • 제 3 정규형을 만족하지만 보이스 / 코드 정규형은 만족하지 않는 릴레이션
    • 함수 종속 관계에서 모든 결정자가 후보키가 아니기 때문

보이스 / 코드 정규형을 설명하기 위한 릴레이션의 예 : 강좌신청 릴레이션

 

 

강좌신청 릴레이션의 함수 종속 다이어그램

  • 이상 현상의 발생 이유
    • 담당강사번호가 후보키가 아님에도 인터넷강좌 속성을 결정하기 때문

강좌신청 릴레이션의 삽입 / 갱신 / 삭제 이상
BCNF를 만족하도록 분해된 2개의 릴레이션
고객담당강사 릴레이션과 강좌담당 릴레이션의 함수 종속 다이어그램

 

 

  제 4 정규형

  • 릴레이션이 보이스/코드 정규형을 만족하면서, 함수 종속이 아닌 다치 종속(MVD : Multi Valued Dependency)을 제거하면 제 4 정규형에 속함

 

  제 5 정규형

  • 릴레이션이 제 4 정규형을 만족하면서, 후보키를 통하지 않는 조인 종속(JD : Join Dependency)을 제거하면 제 5 정규형에 속함

 

  정규화 시 주의 사항

  • 모든 릴레이션이 제 5 정규형에 속해야만 바람직한 것은 아님
  • 일반적으로 제 3 정규형이나 보이스/코드 정규형에 속하도록 릴레이션을 분해하여 데이터 중복을 줄이고 이상 현상을 해결하는 경우가 많음

 

정규화 과정

 

728x90
반응형