본문 바로가기
Big Data/Database

정규화(Normalization)

by Wikinist 2023. 7. 24.

정규화(Normalization)는 관계형 데이터베이스에서 데이터를 구조화하는 프로세스로서, 중복을 최소화하고 데이터의 일관성과 무결성을 보장하기 위해 데이터를 여러 개의 테이블로 분할하는 작업을 말합니다. 정규화는 데이터의 논리적 설계 단계에서 주로 이루어지며, 데이터베이스의 성능과 유지보수를 향상시키는 데 도움이 됩니다.

여러 개의 정규화 레벨이 존재하며, 보통 1차 정규화부터 5차 정규화까지 있습니다. 높은 정규화 레벨은 데이터의 중복을 최소화하고 데이터의 일관성을 보장하는 대신, 데이터를 검색하는데 더 많은 조인 작업이 필요할 수 있습니다. 정규화 레벨은 프로젝트의 요구사항과 성능을 고려하여 결정해야 합니다.

1차 정규화 (1NF)

테이블의 모든 속성이 원자값(Atomic Value)을 가지도록 데이터를 구조화합니다.
각 필드는 하나의 값만 가지며, 다중 값 속성이나 배열을 허용하지 않습니다.

2차 정규화 (2NF)

1차 정규화를 만족하면서, 부분 함수적 종속을 제거하여 중복을 줄입니다.
테이블에 있는 모든 필드가 기본키에 완전히 종속되어야 합니다.

3차 정규화 (3NF)

2차 정규화를 만족하면서, 이행 함수적 종속을 제거하여 중복을 줄입니다.
즉, 비기본키 필드가 비기본키 필드에 종속되는 경우를 제거합니다.

BCNF (Boyce-Codd 정규형)

모든 결정자가 후보키인 경우를 보장하여 중복을 제거합니다.

4차 정규화 (4NF)

다중값 종속을 제거하여 중복을 줄입니다.

5차 정규화 (5NF)

조인 종속을 제거하여 중복을 줄입니다.

일반적으로 3차 정규화까지를 일반적으로 적용하며, 더 높은 정규화 레벨은 성능 저하를 초래할 수 있으므로 신중하게 결정해야 합니다. 상황에 따라서는 반정규화(Denormalization)라는 반대 개념도 사용하여 성능을 향상시키는 경우도 있습니다. 반정규화는 데이터 중복을 감수하고 조인 작업을 줄여 성능을 개선하는 방법입니다.

해당 게시글은 ChatGPT의 도움을 받아 작성되었습니다.

'Big Data > Database' 카테고리의 다른 글

NULL과 연산  (0) 2023.07.26
서브쿼리의 유형  (0) 2023.07.25
식별관계, 비식별관계  (0) 2023.07.24
일관성과 무결성  (0) 2023.07.24
데이터베이스의 종류  (0) 2023.07.24