코딩일기/자격증

[정보처리기사] 정규화 : 1NF, 2NF, 3NF, BCNF, 4NF, 5NF

jhy_2023 2024. 8. 13. 08:47
728x90
반응형

1. 정규화의 기본 개념

  • 정규화는 데이터를 정리하는 과정으로, 관계형 데이터베이스에서 여러 테이블 간의 관계를 정의하는 스키마를 체계적으로 분해해 나가는 것을 말합니다. 이 과정은 여러 단계로 이루어지며, 각 단계에서 데이터 중복을 줄이고, 이상(Anomaly)을 방지하는 데 중점을 둡니다.
  • 정규화(Normalization)는 데이터베이스 설계 시 데이터를 구조화하여 데이터의 중복을 최소화하고 무결성을 유지하며, 데이터를 효율적으로 관리할 수 있도록 하는 중요한 과정입니다. 정규화는 관계형 데이터베이스에서 데이터의 일관성과 정확성을 유지하고, 데이터 중복으로 인해 발생할 수 있는 이상 현상을 방지하는 데 중점을 둡니다.
반응형

2. 정규화의 목적

정규화의 주요 목적은 다음과 같습니다:

  • 데이터 구조의 안정성 및 무결성 유지: 정규화를 통해 데이터 구조를 체계적으로 관리할 수 있으며, 데이터 간의 종속성을 명확히 하여 데이터의 일관성과 무결성을 유지합니다.
  • 효율적인 검색 및 처리: 정규화된 데이터베이스는 불필요한 중복이 없으므로, 데이터를 검색하거나 처리하는 데 있어서 효율적입니다. 이는 쿼리 성능 향상으로 이어질 수 있습니다.
  • 데이터 중복 최소화: 데이터를 중복 저장하지 않도록 하여, 저장 공간을 절약하고 데이터의 일관성을 유지합니다.
  • 데이터 이상 방지: 정규화되지 않은 데이터베이스는 삽입, 삭제, 갱신 등의 연산에서 의도하지 않은 부작용(이상)이 발생할 수 있습니다. 정규화는 이러한 이상을 방지하는 데 도움을 줍니다.
  • 데이터 모형의 단순화: 복잡한 데이터 모델을 단순하게 만들어, 설계 및 유지 관리가 더 쉬워집니다.

3. 데이터베이스에서의 이상(Anomaly)

이상(Anomaly)은 데이터베이스 내에서 데이터의 불필요한 중복이나 잘못된 설계로 인해 발생하는 문제를 의미합니다. 주로 다음 세 가지 형태로 나타납니다:

  • 삽입 이상(Insertion Anomaly): 새로운 데이터를 삽입할 때, 관련 없는 정보까지 함께 삽입해야 하는 문제입니다.
    • 예시: 고객 테이블에 새로운 고객을 추가하려는데, 이 고객이 아직 주문하지 않은 경우, 주문 정보가 비어 있으면 삽입이 불가능할 수 있습니다.
  • 삭제 이상(Deletion Anomaly): 하나의 데이터를 삭제할 때, 의도하지 않은 다른 데이터도 함께 삭제되는 문제입니다.
    • 예시: 고객이 주문한 마지막 주문을 삭제하면, 고객 정보도 함께 삭제되는 경우입니다.
  • 갱신 이상(Update Anomaly): 데이터를 수정할 때, 여러 장소에 중복된 데이터가 있어 일관성 문제를 초래하는 현상입니다.
    • 예시: 고객의 주소가 여러 테이블에 중복되어 있는 경우, 하나의 주소만 업데이트하면 다른 테이블의 주소와 불일치가 발생할 수 있습니다.
728x90

4. 정규화의 단계

정규화는 여러 단계로 나누어지며, 각 단계에서 특정한 데이터 문제를 해결합니다. 정규화의 주요 단계는 다음과 같습니다:

4.1. 제1정규형(1NF)

  • 조건: 모든 속성의 값이 원자값(Atomic Value)을 가져야 합니다.
  • 원자값: 더 이상 나눌 수 없는 값입니다. 예를 들어, 하나의 필드에 여러 값이 들어 있는 경우 이를 분리합니다.
  • 목표: 테이블의 모든 열이 단일 값을 갖도록 하여, 테이블 구조를 단순화합니다.

4.2. 제2정규형(2NF)

  • 조건: 1NF를 만족하고, 기본키가 아닌 모든 속성이 기본키 전체에 대해 완전 함수 종속(Partial Dependency)이어야 합니다.
  • 부분 함수 종속: 기본키의 일부에만 의존하는 속성이 존재하는 경우입니다.
  • 목표: 기본키의 일부가 아닌 전체에 대해 종속성을 가지도록 하여, 부분 함수 종속성을 제거합니다.

4.3. 제3정규형(3NF)

  • 조건: 2NF를 만족하고, 기본키가 아닌 모든 속성이 기본키에만 직접 종속되어야 합니다.
  • 이행적 함수 종속: A → B, B → C가 있을 때, A → C로 이어지는 종속 관계를 제거합니다.
  • 목표: 이행적 함수 종속성을 제거하여 데이터의 일관성을 강화합니다.

4.4. BCNF(보이스-코드 정규형)

  • 조건: 3NF를 만족하고, 테이블의 모든 결정자가 후보키여야 합니다.
  • 결정자: 다른 속성을 결정하는 속성입니다.
  • 목표: 모든 결정자가 후보키가 되도록 하여, 모든 관계를 정확히 표현합니다.

4.5. 제4정규형(4NF)

  • 조건: BCNF를 만족하고, 다치 종속(Multivalued Dependency)을 제거해야 합니다.
  • 다치 종속: 한 속성의 값이 여러 값과 연관되는 경우입니다.
  • 목표: 하나의 속성이 여러 값과 연관될 수 있는 다치 종속을 제거합니다.

4.6. 제5정규형(5NF)

  • 조건: 4NF를 만족하고, 조인 종속성(Join Dependency)을 제거해야 합니다.
  • 조인 종속성: 테이블을 분리했을 때 다시 조인할 수 없는 경우를 방지합니다.
  • 목표: 테이블의 분해로 인해 데이터의 의미가 훼손되지 않도록 합니다.

[정규화 단계 요약]

  • 도메인이 원자값 (1NF)
  • 부분적 함수 종속 제거 (2NF)
  • 이행적 함수 종속 제거 (3NF)
  • 결정자이면서 후보키가 아닌 것 제거 (BCNF)
  • 다치 종속 제거 (4NF)
  • 조인 종속성 제거 (5NF)

 


"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

728x90
반응형