Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

제4정규형(4NF)이란? 개념과 변환 예제 총정리

제4정규형(4NF)이란?

제4정규형(Fourth Normal Form, 4NF)은 1NF(제1정규형), 2NF(제2정규형), 3NF(제3정규형), 그리고 보이스-코드 정규형(BCNF)에 이어지는 정규화 단계입니다. 4NF는 1977년 로널드 페이긴(Ronald Fagin)에 의해 처음 소개되었습니다.

어떤 릴레이션이 4NF를 만족하려면 먼저 BCNF를 만족해야 하며, 동시에 서로 독립적인 다치 속성(multi-valued attribute)이 하나의 테이블 안에 공존해서는 안 됩니다. 즉, 두 개 이상의 독립적인 다치 종속(multivalued dependency)이 존재하면 안 된다는 의미입니다.

4NF 위반 예제

다음 예제를 통해 4NF를 살펴보겠습니다.

<Movie>

영화명(Movie_Name)촬영지(Shooting_Location)상영 장르(Listing)
영화1영국코미디
영화1영국스릴러
영화2호주액션
영화2호주범죄
영화3인도드라마

위 테이블은 4NF를 만족하지 않습니다. 그 이유는 다음과 같습니다.

  • 동일한 장르(리스팅)를 여러 영화가 가질 수 있습니다.
  • 하나의 영화가 여러 촬영지에서 촬영될 수 있습니다.

즉, '영화명 → 촬영지'와 '영화명 → 상영 장르'라는 두 개의 독립적인 다치 종속이 한 테이블에 함께 존재하고 있어, 데이터 중복과 갱신 이상(anomaly)이 발생할 수 있습니다.

4NF로 변환하기

위 테이블을 두 개의 테이블로 분해하여 4NF 형태로 만들어 보겠습니다.

<Movie_Shooting>

영화명(Movie_Name)촬영지(Shooting_Location)
영화1영국
영화2호주
영화3인도

<Movie_Listing>

영화명(Movie_Name)상영 장르(Listing)
영화1코미디
영화1스릴러
영화2액션
영화2범죄
영화3드라마

테이블을 두 개로 분리함으로써 다치 종속의 위반 문제가 해결되었으며, 이제 두 테이블 모두 4NF를 만족합니다. 이처럼 4NF는 서로 독립적인 다치 종속을 별도의 릴레이션으로 분해함으로써 데이터 중복을 줄이고 데이터베이스의 무결성을 높이는 데 기여합니다.