데이터베이스 정규화

Lee Yongin·2024년 1월 28일
0

배경지식

목록 보기
2/3

정규형 필요성

  • DB의 일관성을 유지
  • 데이터 중복 최소화
  • 데이터의 구조와 종속성을 파악하여 효율적이고 일관된 DB설계 가능

정규형

제 1정규형(1NF)

  • 각 속성이 원자적이다.(각 셀은 더 이상 분해되지 않음)

제 2정규형(2NF)

  • 모든 비주요 속성이 기본 키에 완전 함수 종속된다.
  • 기본 키의 모든 부분 집합에 대해 비주요 속성이 종속되면 안된다.

제 3정규형(3NF)

  • 모든 속성이 기본 키에 이행적 함수 종속이 없어야 한다.
  • 비주요 속성이 기본 키에 직접적으로 종속되어야 하고, 다른 비주요 속성에 의존하지 않아야 함을 의미한다.

보이스-코드 정규형(BCNF)

  • 테이블이 3NF를 충족하고, 모든 결정자가 후보 키여야 한다.
  • 모든 결정자가 후보 키이고 후보 키가 아닌 속성에 종속되어서는 안된다.

제 4정규형(4NF)

  • 다치 종속성이 없어야 한다.
  • 다치 종속성은 두 개 이상의 다중 값 종속성이 있는 경우 발생한다.

제 5정규형(5NF)

  • 조인 종속성이 없어야 한다.
  • 다중 값 종속성을 최대한 세분화하여 데이터를 정규화하는 것을 의미한다.

예시

제1정규형만 충족하는 릴레이션

2NF 미충족 이유

  • OrderID가 기본키(CustomerID, OrderID)의 전체에 대해 의존하는 것이 아니라 CustomerID에만 의존한다.

3NF 미충족 이유

  • ProductCategory가 ProductID에 함수 종속되지 않고, 다른 비주요 속성에도 종속되어 있다.

BCNF 미충족 이유

  • 모든 결정자가 후보키인 상태가 아니다. OrderID는 CustomerID에도 종속되고, ProductID는 OrderID에도 종속된다.

4NF 미충족 이유

  • 다치 종속성이 존재한다. OrderID와 ProductID가 함께 다치 종속성을 형성한다.

5NF 미충족 이유

  • 조인 종속성을 제거하여 데이터를 더 세분화할 수 있는 구조가 아니다.

용어 정리

주요 속성

릴레이션에서 기본키를 구성하는 속성을 모두 주요 속성이라고 한다.
특정 행을 식별할 때 쓰이는 속성이다.

비주요 속성

주요 속성에 의존하여 결정되는 속성이다.
주요 속성이 아닌 모든 속성을 일컫는다.

함수 종속성

A의 값이 주어지면, B의 값도 항상 유일하게 결정된다.
이때 A를 결정자라고 하고, B를 종속자라고 한다.

A->B

다치 종속성

A와 B가 테이블의 속성이라고 할 때, B가 A에 종속되는 경우(A->B) A에 대한 값의 변화가 B에 영향을 미치는 것이다.

profile
f1을 좋아하는...🏆 f1처럼 빠르고 정확한 걸 좋아하는 안드로이드 개발자

0개의 댓글