정규화 - 1NF,2NF,3NF,BCNF

dragonappear·2023년 7월 12일

Database 101

목록 보기
8/10


정규화

정규화

데이터 중복과 이상 현상을 최소화하기 위해 일련의 정규형(normal forms)에 따라 RDB를 구성하는 과정

정규형

정규화되기 위해 준수해야 하는 제약조건

주의 사항

  • 릴레이션을 분리하고, Natural Join 하였을 때 Spurious Tuples 가 생기면 안된다.
  • 릴레이션을 분리했을 때, 데이터 손실이 발생하지 않아야 한다.

정규화 과정

Init 테이블 -> 1NF -> 2NF -> 3NF -> BCNF -> 4NF -> 5NF -> 6NF

  • 처음부터 순차적으로 진행하며, normal form을 만족하지 못하면 만족하도록 테이블 구조를 조정한다.
  • 앞단계를 만족해야 다음 단계로 진행할 수 있다.
  • 1NF,2NF,3NF,BCNF은 FD와 Key 만으로 정의되는 정규형이다.

1NF

모든 attribute의 value는 반드시 나눠질 수 없는 단일한 값이여야 한다.

2NF

모든 non-prime attribute는 모든 key에 fully functionally dependent 해야한다.

모든 Key가 Composite Key가 아니라면 2NF는 자동적으로 만족한다?
보통은 맞으나, 아닐 때에도 있다. 예를 들어 특정 attribute는 항상 같은 값을 가지면 {}->{attribute} 즉, partially functionally dependent fd가 존재하게 되기 때문이다.

3NF

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

BCNF

모든 유효한 Non-trivial FD X->Y 에서 X는 Super Key여야 한다.

역정규화

분리했던 테이블을 다시 합치는 것

0개의 댓글