데이터베이스 정규화

정규화에 대해 알아봅시다.

DB 설계부터 운영 및 유지보수까지 전 단계에서 필요한 정규화에 대해 정리하기

정규화

하나의 릴레이션에 하나의 의미만 존재하도록 릴레이션을 분해하는 과정 입니다.
중복된 데이터를 최소화 함으로써 데이터의 무결성을 지키는 방법입니다.

1차 정규화 (1NF)

테이블 컬럼의 원자 값(Atomic Value: 하나의 값)을 갖도록 분해합니다.

아래 테이블을 1차 정규화 작업을 해보자!

이름취미
김철수영화, 독서
김영희게임, 음악

2차 정규화 (2NF)

제 1 정규형을 만족하고, 기본키가 아닌 속성이 기본키에 완전 함수 종속이도록 분해합니다.

아래의 테이블을 2차 정규화 작업 해보자!

학생 번호이름소속학과강의실
101김철수컴퓨터과A동 101호
102김영희경제학과B동 103호
201마진호컴퓨터과A동 101호

3차 정규화 (3NF)

제 2 정규형을 만족하고, 이행적 함수 종속을 없애도록 분해합니다.
(이행적 함수 종속: A → B, B → C, A → C 인 관계)

아래의 테이블을 3차 정규화 작업 해보자!

학생 번호소속학과수강료
101심리학과10,000
102심리학과10,000
201컴퓨터학과15,000

BCNF 정규화

제 3 정규형을 만족하고, 모든 결정자가 후보키가 되도록 테이블을 분해합니다.

아래의 테이블을 3차 정규화 작업 해보자!

학생 번호강의명교수
101심리학김교수
102심리학김교수
201컴퓨터과학이교수

🥸 위 문제를 해결을 한다면?

학생 번호과목 코드
101DS01
102DS01
201CS01

반정규화 (역정규화)

반정규화는 정규화된 엔터티, 속성, 관계에 대해 시스템의 성능 향상과 개발과 운영의 단순화를 위해,
중복, 통합, 분리 등을 수행하는 데이터 모델링의 기법을 의미합니다.

🗣️ 좀 더 넓은 의미의 반정규화는 성능을 향상시키기 위한 정규화된 데이터 모델에서
중복, 통합, 분리를 수행하는 모든 과정을 의미합니다.

반정규화를 할때는?

  • 데이터를 조회할 때 디스크 I/O량이 많아서 성능이 저하되거나
  • 경로가 너무 멀어 조인으로 인한 성능저하가 예상 되거나,
  • 컬럼을 계산하여 읽을 때 성능이 저하될 것이 예상되는 경우

반정규화 절차

  1. 반정규화 대상 조사

    • 범위처리 빈도수 조사
    • 대량의 범위 처리 조사
    • 통계성 프로세스 조사
    • 테이블 조인 개수
  2. 다른 방법유도 검토

    • 뷰(VIEW) 테이블
    • 클러스터링 적용
    • 인덱스의 조정
    • 응용 애플리케이션
  3. 반정규화 적용

    • 테이블 반정규화
    • 속성의 반정규화
    • 관계의 반정규화

© 2021. All rights reserved.

Powered by Hydejack v9.1.6