정규화

yshjft·2022년 9월 6일
0

데이터베이스 

목록 보기
3/10

정규화

  • 관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스
  • 데이터 중복으로 인하여 발생할 수 있는 문제 해결
    • 삽입 이상 : 자료가 부족해서 데이터가 삽입 되지 않아 발생하는 문제
    • 삭제 이상 : 하나의 자료만 삭제하고 싶지만 해당 자료가 포함된 튜플 전체가 삭제되는 문제
    • 수정 이상 : 일부 튜플만 수정되어 정보에 일관성이 없어져 정확한 정보 파악이 안되는 문제

함수적 종속성(functional dependencies)

  • 좋은 테이블 설계의 기준
  • A → B
  • A가 B의 결정자이다.
  • A가 정해지면 반드시 B가 정해진다.
  • A 값이 같은데 B 값이 다를 수는 없다.

정규화 조건

  • 무손실 조인
    정규화 후 join을 하였을 때 기존에 존재하던 데이터가 사라지거나 존재하지 않던 데이터가 나타나서는 안된다.
  • 정규화 후 함수적 종속성이 보존되어야 한다.
    join을 하지 않고도 함수적 종속성을 확인할 수 있어야 한다.

1NF(First Normal Form)

  • 튜플의 모든 애트리뷰트가 도메인에 속하는 하나의 값을 가져야 한다.
  • Ex) 노래 이름 : 봄바람, 첫사랑, 여수밤바다 → X

2NF(Second Normal Form)

  • 1NF이면서 기본키에 속하지 않은 속성 모두가 기본키에 완전 함수 종속인 정규형

3NF(Third Normal Form)

  • 2NF이면서 이행적 함수 종속성을 제거한 정규형
  • 이행적 함수 종속성
    A → B, B → C, A → C

BCNF(Boyce Codd Normal Form)

  • 여러 후보 키가 존재하는 릴레이션에 해당하는 정규화 내용
  • 3NF가 강화된 개념
  • 모든 결정자는 항상 후보키가 되도록 릴레이션을 분해한다.
    • 후보키는 슈퍼키 중에서 최소성을 갖는 키

4NF(Fourth Normal Form)

정규화의 단점

  • JOIN 연산이 늘어난다.
    • 조인으로 인한 성능 저하가 예상될 경우 반정규화를 진행해야 한다.
    • 반정규화란 성능 향상, 개발 및 운영의 편의성 등을 위해 의도적으로 정규화 원칙을 위배하는 것을 의미한다.(ex. 테이블 통합)

참고

profile
꾸준히 나아가자 🐢

0개의 댓글