본문 바로가기
CS 지식 && 백엔드 기술

RDBMS의 정규화

by Won's log 2023. 8. 21.

관계형 데이터베이스 관리 시스템(RDBMS)의 정규화는 데이터를 효율적으로 구성하고 중복을 최소화하기 위한 과정입니다. 데이터베이스의 테이블을 더 작고 관련성 있는 부분으로 분해함으로써 데이터 일관성과 성능을 향상시키는 것을 목표로 합니다. 정규화는 주로 데이터 이상 현상을 방지하고 데이터 중복을 줄여 데이터 일관성을 보장하기 위해 수행됩니다.

정규화의 단계:

  1. 제1 정규화 (1NF): 테이블 내 각 컬럼은 반드시 하나의 값만을 가지며, 중복 데이터를 허용하지 않습니다. 이 단계에서는 반복되는 그룹을 테이블로 분리합니다.
  2. 제2 정규화 (2NF): 부분 종속성을 제거하기 위해 테이블을 분해합니다. 테이블 내의 모든 컬럼은 기본 키에 완전히 종속되어야 합니다.
  3. 제3 정규화 (3NF): 이행적 종속성을 제거하여 테이블을 더욱 세분화합니다. 비주요 컬럼이 기본 키에 종속될 수 없습니다.
  4. BCNF (Boyce-Codd 정규형): 제2 정규화 및 제3 정규화 조건을 확장하여 함수적 종속성의 모든 가능성을 다룹니다. 모든 결정자가 후보키여야 합니다.
  5. 제4 정규화 (4NF): 다치 종속성을 제거합니다. 테이블을 분해하여 다중 값 종속성을 개별 테이블로 분리합니다.
  6. 제5 정규화 (5NF) 또는 프로젝션 속성 정규형 (PJNF): 조인 종속성을 제거합니다. 테이블이 기본 키에 직접 종속되어야 합니다.

정규화를 수행할 때 과도하게 분해하면 쿼리의 복잡성이 증가하고 성능이 저하될 수 있습니다. 따라서 정규화 과정에서 테이블 간의 관계와 쿼리 패턴을 고려하여 적절한 수준의 정규화를 선택하는 것이 중요합니다.

 

쉽게 설명을 하자면,

정규화는 데이터를 깔끔하게 정리하는 작업입니다. 이렇게 하면 데이터를 더 효율적으로 다룰 수 있어요.

  1. 제1 정규화: 하나의 칸에는 하나의 값만 있어야 해요. 중복된 내용을 없애고, 하나의 표에 정보를 적어야 합니다.
  2. 제2 정규화: 표 안의 일부 정보가 따로 떨어져 있을 때, 관련된 정보끼리 분리해요. 정보가 얽히지 않도록 합니다.
  3. 제3 정규화: 표 안의 정보가 다른 정보에 의해 결정될 때, 이러한 종속성을 없앱니다. 정보끼리 뒤엉키지 않게 합니다.
  4. BCNF: 복잡한 결정을 정리하고 효율적으로 관리하기 위해 표 안의 정보를 정리합니다.
  5. 제4 정규화: 표 안의 정보가 하나의 값이 아니라 여러 가지 값들의 모임일 때, 이러한 모임을 따로 분리합니다.
  6. 제5 정규화: 정보가 서로 연관되어 있을 때, 이 관련성을 이해하기 쉽게 분리합니다.

이렇게 정규화를 하면 데이터를 더 잘 관리할 수 있고, 문제가 발생할 가능성을 줄일 수 있습니다.

 

Q. 어떨때 RDBMS의 정규화를 사용하나요?

RDBMS의 정규화는 주로 데이터베이스 설계 단계에서 사용됩니다. 데이터를 더 잘 구성하고 관리하려면 정규화를 고려해야 합니다. 특히 다음과 같은 상황에서 RDBMS의 정규화를 사용할 수 있습니다:

  1. 데이터 중복 문제: 데이터 중복으로 인한 문제가 발생할 때 정규화를 고려합니다. 동일한 정보가 여러 장소에 저장되어 일관성을 유지하기 어려울 경우, 정규화를 통해 중복을 최소화하고 데이터의 정확성을 높일 수 있습니다.
  2. 데이터 일관성과 무결성 유지: 데이터의 일관성을 유지하고 무결성을 확보하기 위해 정규화를 사용합니다. 데이터 변경이나 업데이트가 필요할 때, 정규화된 테이블 구조는 데이터 일관성을 유지하는 데 도움이 됩니다.
  3. 복잡한 데이터 구조: 테이블에 여러 가지 종류의 데이터가 혼재되어 있는 경우, 각각의 데이터 종류에 맞게 분리하여 구조화할 수 있습니다. 이를 통해 쿼리 작성이 더 쉬워지고 데이터베이스의 성능을 향상시킬 수 있습니다.
  4. 대량의 데이터 관리와 성능 향상: 대규모 데이터베이스의 경우, 정규화된 구조를 사용하여 데이터를 분산하고 성능을 최적화할 수 있습니다. 필요한 정보에 더 빠르게 접근할 수 있게 됩니다.
  5. 유지 보수성 향상: 정규화된 데이터베이스 구조는 유지 보수를 더 용이하게 만들어 줍니다. 데이터 변경 시 해당 부분만 수정하면 되므로 코드 유지 보수가 편리해집니다.

정규화를 사용하는 것은 데이터의 복잡성과 요구사항에 따라 달라집니다. 데이터베이스 설계 단계에서 프로젝트의 목표와 필요성을 고려하여 적절한 정규화 수준을 선택하는 것이 중요합니다.

 

요약

RDBMS의 정규화는 데이터베이스 설계 기법으로, 데이터를 더 작고 효율적인 형태로 조직화하는 과정입니다. 중복을 최소화하며 데이터 일관성을 유지하고 검색 성능을 향상시키기 위해 사용됩니다. 데이터를 작은 테이블로 분할하여 관계를 명확히 하고, 필요한 정보를 보다 효율적으로 관리할 수 있도록 돕습니다.

RDBMS의 정규화는 데이터를 효율적으로 구성하고 일관성을 유지하는데 도움을 주지만, 과도한 정규화는 조인 증가와 복잡한 쿼리 작성을 초래할 수 있습니다. 또한 데이터 일관성 유지와 테이블 간 관계 이해의 어려움, 테이블 볼륨 증가와 같은 단점도 있을 수 있습니다. 프로젝트의 복잡성과 요구사항을 고려하여 적절한 정규화 수준을 선택하는 것이 중요합니다.

'CS 지식 && 백엔드 기술' 카테고리의 다른 글

CORS(Cross Origin Resource Sharing)란?  (0) 2023.08.22
HTTP 메서드란?  (0) 2023.08.22
Primary Key, Foreign Key란?  (0) 2023.08.21
MVC 패턴이란?  (0) 2023.08.21
NoSQL과 RDBMS이란?  (0) 2023.08.21