개념/정보처리기사

데이터 정규화(1NF, 2NF, 3NF, BCNF)

디벨로펄 2024. 4. 26.
반응형

정규화란?

  • 데이터 무결성을 유지하기 위해 중복을 최소화하고, 일관성을 보장하기 위한 개념입니다.
    ※ 무결성 : 데이터의 정확성, 일관성, 유효성이 유지되는 것을 뜻합니다.
  • 제1정규형(1NF) : 도메인이 원자값만 가지도록 분해
  • 제2정규형(2NF) : 부분 함수 종속 제거
  • 제3정규형(3NF) : 이행적 함수 종속 제거
  • BCNF(보이스 코드 정규형) : 결정자가 후보키가 아닌 종속 제거
  • 제4정규형 : 다치 종속 제거
  • 제5정규형 : 후보키를 통하지 않는 조인 종속 제거

정규화의 목적은 삽입, 갱신, 삭제에서 발생하는 이상현상을 제거하는 것입니다.

  • 삽입 이상 : 데이터 넣을 때, 관련 없는 정보도 함께 넣어야 하는 현상
  • 갱신 이상 : 데이터 갱신 시, 데이터의 불일치가 발생하는 현상
  • 삭제 이상 : 데이터 삭제 시, 관련된 정보도 함께 삭제해야하는 현상

어려운 단어가 많습니다.

찬찬히 정리해보겠습니다.

 

제1정규형 - 1NF

  • 원자 값이 아닌 속성이 제거된 스키마입니다.
  • 예시에서, 관심사 여러 개를 하나의 속성에 넣는 것이 아니라, 쪼개어서 넣어주는 것입니다.

비정규형

회원코드 회원명 관심사
M01 오수환 게임, 연애
M02 환수오 마케팅, 연애

 

1NF 적용

회원코드 회원명 관심사
M01 오수환 게임
M01 오수환 연애
M02 환수오 마케팅
M02 환수오 연애

 

제2정규형 - 2NF

  • 부분 함수 종속성을 가진 속성이 제거된 스키마.
    • 완전 함수 종속 : 종속자가 모든 결정자에 종속되는 경우
    • 부분 함수 종속 : 종속자가 일부 결정자에 종속되는 경우
  • 예) 완전 함수 종속 : 회원 코드로 인해서 회원명, 관심사, 거주지가 모두 결정됩니다.
    • 회원 코드가 결정자, 회원명 관심사 거주지가 종속자입니다.

  • 예) 부분 함수 종속 : 관심사를 결정하는 것은 회원코드입니다.
    • 가격을 결정하게 되는 것은 회원코드와 구매제품입니다.
    • 관심사(종속자)는 구매제품(결정자2)에 종속되지 않으므로 부분 함수 종속에 해당합니다.

부분함수 종속을 해결하여 완전 함수 종속을 만들면 아래와 같이 됩니다.

제3정규형

  • 이행적 함수 종속성을 가진 속성이 제거된 스키마
  • Transitive Dependency제거
  • A->B, B->C, A-> C 와 같은 관계가 제거된 스키마를 의미합니다.
  • 회원 코드가 구매 제품을 결정하고, 구매제품은 브랜드를 결정합니다.
  • 회원코드 → 구매 제품, 구매제품 → 브랜드 이므로 이행적 함수 종속성을 가지고 있다고 판단할 수 있습니다.

  • 이행적 함수 종속성을 제거하면 아래와 같이 분리 됩니다.

Boyce-Codd 정규형 BCNF

  • 결정자가 후보키가 아닌 함수 종속이 제거된 스키마
    • 후보키 : table의 모든 row에 대해 유일성최소성을 만족시키는 속성
    • 다른 예시를 떠올리기가 쉽지 않다.
    • 3정규형에서부터 시작입니다.

  • 학번과 과목이 후보키가 되어 교수를 결정하게 됩니다.
    • 하지만, 실제로는 교수에 따라 과목이 결정되므로, 아래와 같은 테이블로 나눌 수 있습니다.

 

초반부터 Table 설계를 잘한다면 위와 같은 형식은 발생하지 않을 것입니다.

또한, 정규화가 된다고 해서 좋은 테이블은 아닙니다.

관리하기가 어려워질 수도 있으며, 의미상 정규화를 하지 않는 편이 좋을 수도 있습니다.

 

상황에 맞게 적절한 테이블 설계가 필요합니다.

반응형

'개념 > 정보처리기사' 카테고리의 다른 글

관계 해석과 관계 대수  (1) 2024.04.26
SQL/ 병행제어/ 로킹/ 교착상태(Dead Lock)  (0) 2023.10.03

댓글