스물두줄

정보관리기술사 · 데이터베이스

정규화와 역정규화

정규화는 관계형 데이터베이스에서 테이블을 분해해 중복을 제거하는 설계 절차다. 목표는 삽입·갱신·삭제 이상을 막고 무결성을 유지하는 것이다. 정규화의 반대편에는 성능을 위해 중복을 허용하는 역정규화가 있다. 정규형은 단계마다 함수 종속성에 따른 제약을 하나씩 더한다.…

주요 장면

  1. 0:02 정규화란
  2. 0:20 정규형 단계
  3. 0:50 주문 예시
  4. 1:22 역정규화 비교
  5. 1:52 정리와 직접 풀기
  6. 2:23 정답 확인

대본

정규화란

정규화는 관계형 데이터베이스에서 테이블을 분해해 중복을 제거하는 설계 절차다.

목표는 삽입·갱신·삭제 이상을 막고 무결성을 유지하는 것이다.

정규화의 반대편에는 성능을 위해 중복을 허용하는 역정규화가 있다.

정규형 단계

정규형은 단계마다 함수 종속성에 따른 제약을 하나씩 더한다.

1NF는 모든 속성 값이 원자값이어야 한다. 반복 그룹은 행으로 펼친다.

2NF는 부분 함수 종속을, 3NF는 이행 함수 종속을 제거한다.

BCNF는 모든 결정자가 후보키여야 하며 3NF보다 엄격하다.

주문 예시

가상의 주문 테이블을 보자. 기본키는 (주문번호, 상품번호)다.

고객명과 상품명은 기본키의 일부에만 종속하는 부분 함수 종속이다.

그래서 고객과 상품 테이블로 나눈다. 분해 후에도 원래 정보를 모두 복원할 수 있다.

고객명을 바꿀 때 고객 테이블 한 행만 고치면 되므로 갱신 이상이 사라진다.

역정규화 비교

역정규화는 정규화된 구조를 되돌려 조회 성능을 높이는 기법이다.

대표 기법은 테이블 병합, 중복 컬럼 추가, 요약 테이블 생성, 파생 컬럼 저장이다.

정규화와 목적이 반대이므로 적용 대상과 시점을 구분해 답해야 한다.

병합과 중복 저장은 JOIN을 줄이지만 갱신할 때 동기화 비용이 생긴다.

정리와 직접 풀기

정리하면 정규화는 중복을 없애 무결성을 지키는 기본 설계 원리다.

역정규화는 조회 성능 병목이 측정된 곳에만 선택적으로 적용한다.

직접 풀어 보자. 아래 질문에 답해 보자.

정답 확인

정답은 2NF다. 2NF는 기본키 일부에 대한 부분 함수 종속을 제거한다.

3NF는 이행 함수 종속을 제거한다. 두 단계를 구분해 외워 두자.

같은 장의 영상