[DB] 제 4정규형과 제 5정규형

Wonjun Seo·2023년 8월 6일
1

정규화(Normalization)

정규화란 데이터의 중복을 최소화하고 무결성을 향상 시키는 등 여러 목적을 달성하기 위해 관계형 데이터베이스를 정규화된 형태로 재디자인하는 것을 말한다.

이전 포스팅에서는 BCNF까지 다루었고, 이번엔 제 4정규화(4NF)와 제 5정규화(5NF)에 대해 다룰 것이다.

제 4정규화(4NF)

제 4정규형은 다음과 같은 규칙들을 만족해야 한다.

  • BCNF를 만족해야 한다.
  • 다치 종속(Multi-valued Dependency)이 없어야 한다.

다치 종속이란 다음과 같은 조건들을 만족할 때를 뜻한다.

  • A → B일 때, 하나의 A값에 여러 개의 B값이 존재하면 다치 종속성을 가진다고 하고, 이를 A ↠ B라고 표시한다.
  • 최소 3개의 컬럼이 존재한다.
  • R(A, B, C)가 있을 때, A와 B 사이에 다치 종속성이 있을 때 B와 C가 독립적이다.

위 테이블에는 두 가지 다치 종속성이 {Restaurant} 컬럼에 존재한다는 문제점이 있다.

아래와 같은 다치 종속들이 존재한다.

  • {Restaurant} ↠ {Pizza Variety}
  • {Restaurant} ↠ {Delivery Area}

Pizza Varieity와 Delivery Area는 관계가 없는 독립적인 관계이다. 하지만 같은 테이블의 {Restaurant} 컬럼에 다치 종속되어버려 중복이 발생하게 된다.

따라서, 4NF를 만족하기 위해서 테이블을 아래와 같이 분해하면 된다.

위 테이블들은 여전히 다치 종속성을 가지지만, 2개 이상의 컬럼이 하나의 컬럼에 다치 종속되지는 않으므로 4NF를 만족한다.

제 5정규화(5NF)

제 5정규형은 중복을 제거하기 위해 분해할 수 있을 만큼 전부 분해하는 것이다. 제 5정규형은 다음과 같은 규칙들을 만족해야 한다.

  • 제 4정규형을 만족해야 한다.
  • 조인 종속(Join Dependency)이 없어야 한다.
  • 조인 연산을 했을 때 손실이 없어야 한다.

조인 종속은 다치 종속의 조금 더 일반화된 형태이다. 만약 하나의 릴레이션을 여러 개의 릴레이션으로 무손실 분해했다가 다시 결합할 수 있다면 조인 종속이라과 한다.

예를 들어 A라는 릴레이션을 B와 C로 분해했다가 다시 조인했을 때 그대도 A가 된다면, A는 조인 종속성이 있다고 한다.

References

https://en.wikipedia.org/wiki/Fourth_normal_form

https://code-lab1.tistory.com/270

0개의 댓글