[DB] 정규화

유지민·2022년 11월 29일
0

CS

목록 보기
7/11

정규화(Normalization)

정규화란 관계형 데이터베이스(RDB)의 설계 중 중복성을 최소화하도록 데이터를 구조화하는 프로세스를 의미
정규화의 목표는 관련이 없는 함수들의 종속성을 별개의 릴레이션으로 표현하는 것에 있음

릴레이션 : 관계형 데이터베이스에서 정보를 구분해 저장하는 기본 단위

✅ 이상(Anomaly) 현상

이상 현상이란 정규화를 거치지 않은 데이터베이스에서 발생할 수 있는 현상
불필요한 데이터의 중복으로 인해 릴레이션 조작에 문제가 발생하는 상황
attribute의 종속 관계를 하나의 릴레이션에 표현하여 발생하는 문제

✅ 이상 종류

▶️ 삽입 이상(Insert Anomaly)

  • 데이터의 삽입 시 의도와 달리 다른 값도 함께 삽입되는 현상

    ▶️ 삭제 이상(Delete Anomaly)

  • 데이터의 삭제 시 의도와 달리 다른 값도 연쇄적으로 삭제되는 현상

    ▶️ 갱신 이상(Update Anomaly)

  • attribute의 갱신 시 일부 튜플만 갱신이 적용되는 현상

    ✅ 정규화의 목적

  • 데이터의 중복을 배제해 삽입, 삭제, 갱신 이상의 발생 방지

  • 각 릴레이션에 중복된 종속성을 여러 개의 릴레이션에 분할

  • 모든 릴레이션을 데이터베이스 내에서 표현 가능하도록 하기 위함

  • 데이터의 일관성 보장

  • 데이터 구조의 안정성 및 무결성의 유지

  • 데이터 모형의 단순화

  • 효과적인 검색 알고리즘의 생성

  • 👍 장점

    • 이상 현상의 발생 가능성을 줄임
  • 👎 단점

    • 연산 시간의 증가

    ✅ 정규형

    정규화된 결과를 정규형이라고 함

  • 정규형의 구분

    • 기본 정규형 : 제 1 정규형, 제 2 정규형, 제 3 정규형, BCNF(보이스/코드 정규형)
    • 고급 정규형 : 제 4 정규형, 제 5 정규형

    ▶️ 제 1 정규형 (1NF)

    릴레이션에 속한 모든 속성의 도메인이 더 이상 분해되지 않는 원자 값으로만 구성된 정규형

  • 1NF 요구 조건 : 도메인이 원자값

    ▶️ 제 2 정규형 (2NF)

    릴레이션이 제 1 정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속된 정규형

  • 완전 함수 종속

    • 어떤 속성이 기본키에 대해 완전히 종속인 경우
    완전 함수 종속 : (속성 A, 속성 B) -> 속성 C 인 경우, A -> C, B -> C 모두 성립
  • 부분 함수 종속

    • 어떤 속성이 기본키가 아닌 다른 속성에 종속되거나, 기본키가 여러 속성으로 구성되어 있을 경우 기본키 구성 속성 중 일부만 종속되는 경우
    부분 함수 종속 : (속성 A, 속성 B) -> 속성 C 인 경우, A -> C, B -> C 중 하나만 성립

    함수 종속성 알아보기

    ▶️ 제 3 정규형 (3NF)

    릴레이션이 제 2 정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속이 되지 않는, 이행적 함수 종속을 제거한 정규형

  • 이행적 함수 종속

    A -> B, B -> C의 종속 관계에서 A -> C를 만족하는 관계

▶️ BCNF

릴레이션의 함수 종속 관계에서 모든 결정자가 후보키인 정규형
후보키가 아닌 결정자를 제거함으로써 조건 성립

  • 🔑 BCNF의 제약 조건

    • 키가 아닌 모든 속성은 각 키에 대해 완전 종속해야 함
    • 키가 아닌 모든 속성은 그 자신이 부분적으로 들어가있지 않은 모든 키에 대해 완전 종속해야 함
    • 어떤 속성도 키가 아닌 속성에 대해 완전 종속 할 수 없음
  • 결정자 : 다른 속성을 고유하게 결정하는 하나 이상의 속성 (속성 간 종속성을 따질 때 기준이 되는 값)

  • 종속자 : 결정자의 값에 의해 정해지는 값

  • 후보키 : 테이블에서 각 행을 유일하게 식별할 수 있는 최소한의 속성들의 집합

    ▶️ 제 4 정규형 (4NF)

    릴레이션이 BCNF를 만족하며, 함수 종속이 아닌 다치 종속을 제거해야 만족하는 정규형

  • 다치 종속

    속성 A -> (속성 B, 속성 C) 인 경우, A -> B를 만족하고, 
    B와 C가 무관할 때 B는 A에 다치종속 관계임
    A ->> B 으로 표현

    ▶️ 제 5 정규형 (5NF)

  • 릴레이션이 제 5 정규형을 만족하며, 후보키를 통하지 않은 조인 종속을 제거해야 만족하는 정규형

  • 릴레이션 R의 모든 모든 조인 종속이 R의 후보키를 통해 성립되는 정규형

  • 조인 종속

    • 테이블을 분해한 결과를 다시 조인했을 때 원래의 테이블과 동일하게 복원되는 제약 조건

    📌 참고 자료

  • 정규형 개념 참고 자료

  • 정규화 이미지 및 개념 참고 자료

  • 정규화 과정 참고 자료

profile
끊임없이 도전하며 사고하는 주니어 Web FE 개발자 유지민입니다.

0개의 댓글