본문 바로가기
CS note/데이터베이스

Normalization (정규화)

by 코드 이야기 2023. 2. 17.
728x90

 

 

정규화

  • 잘못 설계된 관계형 스키마를 더 작은 속성의 묶음으로 쪼개어 바람직한 스키마로 만들어가는 과정
  • 삽입 이상, 삭제 이상, 갱신 이상 등과 같은 이상 현상을 해결하기 위해, 
    저장공간 최소화와 같이 성능을 향상시키기 위한 과정

 

 

정규형 (NF, Normal Form)

제1정규형

  • 모든 도메인이 원자 값으로만 되어 있는 정규형
  • 모든 속성 값이 원자 값으로만 되어 있는 정규형
  • 릴레이션의 모든 속성이 단순 영역에서 정의
  • ex. 취미를 나타낼 때
    {”이름”: ”수달”, 취미: “게임, 코딩, 골프”} 가 아닌
    {”이름”: “수달”, “취미”=”게임”},
    {”이름”: “수달”, “취미”=”코딩”},
    {”이름”: “수달”, “취미”=”골프”}

제1정규형

 

제2정규형

  • 1NF를 만족
  • 부분 함수적 종속성 제거 (→ 완전 함수 종속으로 만든다)
  • 기본키가 아닌 모든 속성이 기본키에 완전 함수적 종속이 되도록 한다.
  • 기본키의 부분집합이 결정자가 되어서는 안된다. (→ 기본키의 부분집합을 이용할 경우 테이블을 두 개로 나눈다)

> 함수적 종속성과 완전 함수 종속

더보기
  • 함수적 종속성
    • ex. 직원명(종속자)과 직원코드(결정자)
      (직원명은 직원코드에 함수적으로 종속된다)
  • 완전 함수 종속
    • 릴레이션의 속성 A → (함수적 종속) → 속성 집합 B 전체에 대해 함수적 종속,
      어떠한 진부분 집합에는 함수적 종속이 아닌 경우

 

제2정규형

 

 

제3정규형

  • 2NF를 만족
  • 이행적 종속성 제거

> 이행적 종속성

더보기
  • A→B와 B→C일 때 C가 A에 이행적으로 함수 종속

제3정규형

 

 

보이스/코드 정규형 (BCNF, Boyce-Codd Normal Form)

  • 3NF를 만족
  • 모든 결정자가 후보키(중복x, not null)가 되도록 테이블 분해
  • 키가 아닌 모든 속성은 각 키에 대해 완전 종속
  • 어떤 속성도 키가 아닌 속성에 대해 완전 종속할 수 없다

> 결정자

더보기

X→Y 일 때 
X는 결정자
Y는 종속자 

BCNF

 

 

제4정규형

  • 다치 종속 제거
  • 테이블을 분리해 해결

> 다치 종속

더보기

하나의 속성이 다른 속성을 여럿 결정하는 상황 (1정규형의 예시와 같은 상황)

 

 

 

제5정규형

  • 조인 종속 이용
  • 모든 조인 종속이 후보키를 통해서만 성립

 

 

 

반정규화

  • 시스템의 성능 향상, 운영, 편의성 등을 위해 정규화된 데이터 모델을 통합, 중복, 분리하는 과정.
  • 의도적정규화 위배

 

 

728x90

'CS note > 데이터베이스' 카테고리의 다른 글

트랜잭션과 무결성  (1) 2023.02.17
ERD (Entity Relationship Diagram)  (0) 2023.02.17
데이터베이스 기본 용어  (0) 2023.02.17

댓글