Search

[데이터베이스 시스템] 정규화

제목
Tag
작성일

잘못된 데이터베이스 모델링

데이터의 중복
갱신이상
삽입 이상: 원치 않은 데이터도 함께 삽입되는 현상
삭제 이상: 특정 데이터 삭제 시 원치 않은 정보까지 함께 삭제되는 현상
수정 이상: 데이터를 수정할 때 모든 중복된 데이터를 수정하지 않아 발생하는 불일치 현상

함수적 종속성의 이해

릴레이션에서 한 속성의 값이 다른 속성의 값을 결정하는 관계
표기법: X → Y
함수적 종속성은 릴레이션 효율성 여부에 중요한 판단 기준
추론 규칙(암스트롱 공리) 이용하여 확장된 클로저(Closure) 생성
클로저(F+): 판별된 종속성 집합에서 유추 가능한 모든 함수적 종속성 집합

함수적 종속성 추론 규칙

암스트롱 공리
1.
재귀성 규칙: Y⊆X이면 X→Y
2.
부가성 규칙: X→Y이면 XZ→YZ
3.
이행성 규칙: X→Y, Y→Z이면 X→Z
4.
분해 규칙: X→YZ이면 X→Y, X→Z
5.
합집합 규칙: X→Y, X→Z이면 X→YZ
6.
의사 이행성 규칙: X→Y, WY→Z이면 WX→Z

함수적 종속성의 판별

고객번호 → 고객명, 고객명 → 등급, {고객번호, 고객명} → 할인율
결과적으로 고객번호 → {고객명, 등급, 할인율}

카노니컬 커버(Canonical Cover)

함수적 종속성의 최소 표현(Minimal Cover) 또는 정규 커버(Normal Cover) 라고도 부름
기존 함수적 종속성 집합에서 중복된 종속성과 자명한(trivial) 종속성을 제거하고, 최소한의 표현으로 압축한 집합
정규화를 수행하기 전, 모든 종속성을 명확하게 정의하여 불필요한 속성 제거를 돕는 중요한 과정
카노니컬 커버의 조건
각 함수적 종속성의 우변(종속자)은 반드시 한 개의 속성만 가짐
예: A → B, C 는 A → B, A → C로 분리해야 함
불필요한 속성이 없음 (좌변 및 우변 모두에 해당)
예: AB → C에서 만약 A → C가 성립하면 B는 불필요한 속성이므로 제거
중복된 함수적 종속성 없음
예: A → B가 이미 존재할 때 동일한 A → B 중복 선언은 제거

정규화

이상현상 최소화 목적의 조건 갖춘 릴레이션 형태로 재구성 과정

정규형의 기능

데이터베이스 모든 릴레이션 효율적 표현
삽입, 삭제, 수정 이상 방지
관계를 간단하게 표현해 관리 용이성 확보

제1정규형(1NF)

릴레이션 스키마에서 정의된 모든 속성의 도메인이 원자값 상태
관계형 모델의 특성을 만족하는 경우 자동 적용되는 정규형

예시

주문번호
고객명
상품코드
수량
1
김철수
A, B
2, 3
[주문번호] → 고객명, 상품코드, 수량
Plain Text
복사
정규화(1NF) 적용 후
주문번호
고객명
상품코드
수량
1
김철수
A
2
1
김철수
B
3
[주문번호] → 고객명 [주문번호, 상품코드] → 수량
Plain Text
복사

제2정규형(2NF)

릴레이션이 제 1정규형을 만족하고 기본키의 부분집합이 특정 속성을 종속하고 있지 않은 상태
부분 함수 종속: Y가 X의 전체가 아닌 일부분에 종속
전체 함수 종속: Y가 X의 전체에 종속

릴레이션의 무손실 분해

릴레이션을 여러 개의 하위 릴레이션으로 분해할 때 원본 릴레이션을 완벽하게 복원할 수 있는 분해 방법
정규화를 진행하면서 이상(anomaly)을 방지하기 위해 릴레이션을 쪼갤 때 필수적으로 지켜야 하는 원칙
무손실 분해 원칙을 지켜 분해하면 원본 데이터를 정확히 복원할 수 있고, 데이터 무결성을 유지할 수 있음

예시

주문번호
고객명
상품코드
수량
1
김철수
A
2
정규화(2NF) 적용 후 주문/주문상세 테이블로 분할
주문 테이블
주문번호
고객명
1
김철수
주문 상세 테이블
주문번호
상품코드
수량
1
A
2

제 3정규형

릴레이션이 제2정규형을 만족하고, 기본키가 아닌 속성 간 이행적으로 종속 제거 상태
이행적 종속: X→Y, Y→Z 이면 X→Z 성립하는 종속 관계

예시

주문 테이블 (2NF 상태)
주문번호
고객명
고객등급
1
김철수
VIP
[주문번호] → 고객명, 고객등급 고객명 → 고객등급 (이행적 종속)
Plain Text
복사
정규화(3NF) 적용 후 주문/고객으로 분할
주문 테이블
주문번호
고객명
1
김철수
고객 테이블
고객명
고객등급
김철수
VIP
[주문번호] → 고객명 [고객명] → 고객등급
Plain Text
복사

BC 정규형(BCNF)

릴레이션이 제3정규형을 만족하고 릴레이션에 성립하는 X -> Y 형태의 모든 함수적 종속성에 대하여 X가 수퍼키인 상태

예시

교수
강좌
강의실
A
DB
101
BCNF 적용 (교수가 여러 강좌 강의 불가 등 제약 조건 가정)
교수-강좌 테이블
교수
강좌
A
DB
강좌-강의실 테이블
강좌
강의실
DB
101

역정규화

정규화 통해 중복 최소화했으나 많은 조인 연산으로 성능 저하 초래 가능
중복 허용해 성능 개선 목적의 의도적 비정규화 과정
자주 조회되는 데이터 일부 중복 저장으로 성능 향상 목적
트레이드오프(trade-off): 성능 향상 데이터 무결성 및 관리 복잡성 증가