Home Database 16. DB 정규화의 개념과 1NF2NF
Post
Cancel

Database 16. DB 정규화의 개념과 1NF2NF

DB 정규화(normalization)

  • 데이터 중복과 insertion, update, deletion anomaly를 최소화하기 위해 일련의 normal forms(NF)에 따라 relational DB를 구성하는 과정
    • NF : 정규화 되기 위해 준수해야 하는 몇 가지 rule

정규화 과정

Normal-Form

  • 처음부터 순차적으로 진행하며 normal form을 만족하지 못하면 만족하도록 테이블 구조를 조정한다.
  • 앞 단계를 만족해야 다음 단계로 진행할 수 있다.
  • 1NF ~ BCNF : FD와 key만으로 정의되는 normal form
    • 3NF까지 도달하면 정규화 됐다고 말하기도 함
    • 보통 실무에서 3NF 혹은 BCNF까지 진행(많이 해도 4NF)

예시 스키마

{bank_name, account_num, account_id, class, ratio, empl_id, empl_name, card_id}

  • 임직원의 월급 계좌를 관리하는 테이블
  • 월급 계좌는 국민은행이나 우리은행 중 하나
  • 한 임직원이 하나 이상의 월급 계좌를 등록하고 월급 비율(ratio)를 조정할 수 있다.
  • 각 계좌마다 등급(class)가 있다.
  • 한 계좌는 하나 이상의 현급 카드와 연동될 수 있다.
  • 위와 같은 스키마를 순차적으로 정규화 하면서 설명하겠다.

key 설정

  • candidate key : {account_id} 혹은 {back_name, account_name}이다.
  • Primary key : {account_id}
  • prime attribute : account_id, account_num, bank_name (임의의 key에 속하는 attribute)
  • non-prime attribute : class, ratio, empl_id, empl_name, card_id

1NF

  • Attribute의 value는 반드시 나눠질 수 없는 단일한 값이어야 한다.

2NF

  • 모든 non-prime attribute는 모든 key에 fully functionally dependent 해야 한다.
  • 2NF는 key가 composite key가 아니라면 2NF는 자동적으로 만족한다(일반적으로 맞는 말이긴하지만 일반적으론 아니다)

3NF

  • 모든 non-prime attribute는 어떤 key에도 transitively dependent하면 안된다.
  • non-prime attribute와 non-prime attribute 사이에는 FD가 있으면 안된다.

BCNF

  • 모든 유효한 non-trivial FD X->Y는 X가 user key여야 한다.

Denormalization

  • 의도적으로 정규화 단계를 해지하고 table을 합치는 것
  • 복잡도와 성능 문제로 인해 역정규화를 하는 경우가 존재한다.
This post is licensed under CC BY 4.0 by the author.

Database 15. DB 테이블 설계를 위한 functional dependency(FD:함수 종속)

Database 17. 인덱스(INDEX)