[DB] 제 4정규형과 제 5정규형, 4NF와 5NF

정규화란?

정규화는 이상현상(Anomaly)이 있는 릴레이션을 분해하여 이상현상을 없애는 과정이다. 이상현상이 존재하는 릴레이션을 분해하여 여러 개의 릴레이션을 생성하게 된다. 이를 단계별로 구분하여 정규형이 높아질수록 이상현상은 줄어들게 된다.

 

이전 포스팅에서 1NF, 2NF, 3NF, BCNF까지 다뤄보았다. 

 

 

[DB] 정규화(Normalization)란? 정규화 예시, 1NF, 2NF, 3NF, BCNF

정규화(Normalization)란? 정규화는 이상현상이 있는 릴레이션을 분해하여 이상현상을 없애는 과정이다. 이상현상이 존재하는 릴레이션을 분해하여 여러 개의 릴레이션을 생성하게 된다. 이를 단계

code-lab1.tistory.com

 

이번엔 제 4정규형(4NF)과 제5 정규형(5NF)에 대해 알아보자.

 

 

 

제4 정규형(4NF)

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

 

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

 

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

 

1. A->B 일 때 하나의 A값에 여러 개의 B값이 존재하면 다치 종속성을 가진다고 하고 A↠B라고 표시한다

2. 최소 3개의 칼럼이 존재한다.

3. R(A, B, C)가 있을 때 A와 B 사이에 다치 종속성이 있을 때 B와 C가 독립적이다.

 

 

다치 종속성
[그림 1] 다치 종속

 

 

위와 같은 테이블을 보자. 101번 학생은 자바와 C++ 과목을 수강하고, 노래와 게임을 취미로 가진다. 

 

이렇게 되면 학생 번호 하나에 과목 여러 개와 취미 여러 개가 종속된다. 이런 경우 학생 번호를 토대로 값을 조회하면 아래와 같이 중복이 발생하게 된다.

 

다치 종속성의 문제점
[그림 2] 다치 종속성의 문제점

 

과목과 취미는 관계가 없는 독립적인 관계이다. 하지만 같은 테이블의 학생 번호라는 칼럼에 다치 종속되어버려 중복이 발생하는 문제가 생겼다.

 

 

4NF를 만족하기 위해서는 아래와 같이 분해하면 된다.

 

4정규형
[그림 3] 4NF

 

위 2개의 테이블은 여전히 다치 종속성을 가지지만, 2개 이상의 칼럼이 하나의 칼럼에 다치 종속되지는 않기 때문에 제4 정규형을 만족한다.

 

 

 

제5 정규형(5NF)

 

제5 정규형은 중복을 제거하기 위해 분해할 수 있을 만큼 전부 분해하는 것이다. 이러한 5NF는 Project Join Normal Form(PJNF)라고도 불린다. 이러한 제 5정규형은 다음과 같은 규칙을 만족해야 한다.

 

1. 4NF를 만족해야 한다.
2. 조인 종속(Join dependency)이 없어야 한다.
3. 조인 연산을 했을 때 손실이 없어야 한다.

 

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

 

조인 종속성
[그림 4] 조인 종속

 

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

 

제5 정규형의 경우 예시를 들기 복잡하기 때문에 생략하겠다. 

 

일반적으로 현실의 데이터베이스에서는 5 정규형을 사용하지 않는다. 하지만 그럼에도 제5 정규형에 대해 자세히 알고 싶다면 다음을 참고하자.

 

 

참고)

 

 

5th Normal Form (5NF) and Mutli-valued Dependency in Database Normalization | Studytonight

Fifth Normal Form (5NF) Fifth Normal Form in Database Normalization is generally not implemented in real life database design. But you should know what it it. Let's cover the concept of Fifth Normal Form. In the video below we have explained it in details.

www.studytonight.com

 

 

 

 


참고

 

 

1. https://www.studytonight.com/dbms/fourth-normal-form.php

2. https://www.studytonight.com/dbms/fifth-normal-form.php

반응형

댓글

Designed by JB FACTORY