DB정규화

^_^·2022년 4월 6일
0

정규화의 목적

  • 중복을 배제하여 삽입, 삭제, 갱신 이상의 발생을 방지
  • 각 릴레이션에 중복된 종속성을 여러개의 릴레이션에 분할
  • 어떠한 릴레이션이라도 데이터 베이스 내에서 표현 가능하게 함
  • 데이터 삽입 시 릴레이션을 재구성할 필요성 감소
  • 효과적인 검색 알고리즘을 생성 가능

문제발생

  • 정규화가 되어 있지 않은 테이블 설계
  • 데이터베이스 설계의 경우 관심사를 분리하지 않아 생기는 문제는 코드에서의 문제보다 더 심각함

정규화

  • 관계형 데이터베이스의 설계에서 중복을 최소하여 데이터를 구조화하는 것을 정규화라고 한다
  • 정규화가 진행된 정도를 정규형으로 표현
  • 정규형에는 1NF, 2NF, 3NF, BCNF, 4NF, 5NF, 6NF로 나뉜다
    비공식적 표현으로 3NF가 되었으면 정규화 되었다고 말한다
    (3NF 테이블의 삽입, 변경, 삭제 이상이 없으며, 3NF 테이블의 대부분이 BCNF, 4NF, 5NF

정규형

  • 제 1정규형(1NF): 릴레이션에 속한 모든 속성의 도메인이 원자 값으로만 구성
  • 제 2정규형(2NF): 제 1정규형만 만족시키는 릴레이션에서 부분 함수 종속성을 가지게 될 경우, 세가지 이상현상 발생
  • 제 3정규형(3NF): 제 2정규형에 속하면서, 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속이 되지 않을 때

0개의 댓글