정규화 (Normalization)

eunbini·2023년 11월 28일

데이터베이스

목록 보기
1/1

정규화 (Normalization)

  • 관계형 데이터베이스 설계에서 데이터를 주요 관심사 별로 분산/분리시키는 것

목적

  • 데이터 중복 최소화
  • 이상현상(anomaly) 제거
  • 입출력 데이터의 양을 줄여 성능을 향상시킨다.

정규화를 통한 성능 향상 전략

  • 데이터베이스에서 데이터를 처리할 때 나타나는 성능은 입력/수정/삭제 성능과 조회 성능 두 부류로 나뉜다.
  • 데이터 모델을 구성하는 방식에 따라 두 부류의 성능이 trade-off 되어 나타난다.
  • 정규화 수행 시, 입력/수정/삭제 성능이 향상되며, 조회 성능은 처리 조건에 따라 향상될 수도, 저하될 수도 있다.
  • 데이터는 속성 간의 함수 종속성에 근거하여 정규화 되어야 한다.

함수 종속성 (FD; Functional Dependency)

  • 결정자의 값으로 종속자의 값을 알 수 있는 것
  • 어떤 테이블에 X,Y라는 속성이 있을 때, X의 한 값이 Y의 오직 하나의 값에만 사상된다면 Y는 X에 함수 종속(Y is funcionally dependent on X)이라고 하며 X->Y라고 표기한다.
  • 이때 X를 결정자, Y를 종속자라고 한다.
  • 예를 들어, X가 생일, Y가 나이라고 했을 때, 생일을 알고 있다면 나이 필드를 참조하지 않아도 나이를 알 수 있다.

정규형(NF; Normal Form)

  • 릴레이션이 정규화된 정도
  • 정규형의 차수가 높아질 수록 제약조건이 많아지고 엄격해진다.
  • ex) 3NF : 1,2,3 정규형의 특성을 모두 갖춘 릴레이션

제 1 정규형(1NF)

  • 모든 속성은 반드시 하나의 값만 가진다.
  • 1차 정규화 : 다중값 속성 분리. row 단위의 중복, column 단위의 중복 모두 1차 정규화의 대상

제 2 정규형(2NF)

  • 1NF를 만족하며, 모든 속성은 기본키에 종속되고, 일부 기본키에만 종속되지 않는다.
  • 2차 정규화 : 부분 함수 종속성 제거 - 일부 기본키에만 종속된 속성을 분리
  • 부분 함수 종속

제 3 정규형(3NF)

  • 2NF를 만족하고, 기본키가 아닌 다른 속성들끼리 종속되지 않는다.
  • 3차 정규화 : 이행 함수 종속성 제거 - 서로 종속 관계가 있는 일반속성을 분리
  • 이행 함수 종속

보이스코드 정규형(BCNF; Boyce-Codd Normal Form)

  • 3NF를 만족하고, 함수 종속 관계에서 모든 결정자가 후보키이다.
  • 보이스코드 정규화 : 결정자 함수 종속성 제거 - 후보키가 아닌 결정자를 분리
  • 결정자 함수 종속












📚 참고

0개의 댓글