DB 정규화

itonse·2023년 12월 8일
0

CS 스터디

목록 보기
12/56

정규화 개념

  • 이상현상이 있는 릴레이션을 분해하여 여러 개의 릴레이션을 생성해서 이상현상을 없애는 과정으로, 정규형이 높아질수록 이상현상은 줄어들게 됩니다.

💡 이상현상이란?

불필요한 데이터 중복으로 인해 릴레이션에 대한 데이터 삽입, 수정, 삭제 연산을 할 때 발생할 수 있는 부작용 입니다.

이상현상의 종류로는 삽입 이상, 갱신 이상, 삭제 이상이 있습니다.

1.삽입 이상
데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제
2. 삭제 이상
어떤 데이터를 삭제할 때, 의도치 않게 관련 정보가 모두 삭제되는 문제
3. 갱신 이상
중복 튜플 중 일부만 변경하여 데이터가 불일치하게 되는 문제


정규화의 장점

  • 이상현상을 방지할 수 있습니다.
  • 불필요하거나 중복되는 데이터들을 제거합니다.

정규화의 단점

  • 릴레이션의 분해로 인해 JOIN 연산이 빈번하게 필요해져, 쿼리가 복잡해지고 성능이 저하될수 있습니다..
  • 테이블 간의 관계가 복잡해짐에 따라, 데이터베이스 설계와 유지보수가 더 복잡해질 수 있습니다.


정규화 단계

제1정규형(1NF):

  • 모든 필드의 값이 원자값(더 이상 분해할 수 없는 단일 값)이어야 합니다.
  • 이는 데이터 중복을 최소화하고, 각 필드가 하나의 정보만을 가지도록 합니다.

제2정규형(2NF):

  • 1NF를 만족하는 동시에, 모든 기본키가 아닌 속성이 기본키에 완전하게 함수적으로 종속되어야 합니다.
  • 이는 부분적 종속을 제거하여 각 데이터 항목이 전체 기본 키에만 의존하도록 합니다.

제3정규형(3NF):

  • 2NF를 만족하며, 기본키를 제외한 속성들 간의 이행 종속성이 없어야 합니다.
  • 이행 종속성이란 X -> Y, Y -> Z 일때 X -> Z 가 성립하는 것 입니다.
  • 이는 이행적 종속을 제거하여 비기본키 속성이 다른 비기본키 속성에 의존하지 않도록 합니다.

BCNF (Boyce-Codd 정규형):

  • 3NF를 만족하면서, 모든 결정자가 후보 키가 되는 상태입니다.
  • 이는 더 엄격한 기준으로, 기존 정규형에서 해결되지 않은 종속성 문제를 해결합니다.

제4정규형(4NF):

  • BCNF를 만족하며, 다치 종속을 제거합니다. 다치 종속은 한 속성이 다른 독립적인 여러 속성에 종속되는 경우입니다.
  • 4NF는 이러한 다치 종속을 분리하여 데이터 중복을 줄입니다.

제5정규형(5NF):

  • 4NF를 만족하며, 조인 종속을 제거합니다.
  • 조인 종속은 테이블을 분해한 후 다시 조인했을 때, 원래의 데이터를 정확하게 재구성할 수 있는 속성들의 관계를 의미합니다.
  • 5NF는 더 이상 비손실 분해를 할 수 없는 상태입니다.


Ref.

https://code-lab1.tistory.com/48
https://coding-factory.tistory.com/872
https://zzozzomin08.tistory.com/12
정규화 (1NF, 2NF, 3NF, BCNF, 4NF, 5NF)

0개의 댓글