정규화
개념
- 관계형 데이터베이스의 설계에서 데이터 중복을 최소화하기 위한 과정
- 하나의 종속성이 하나의 릴레이션에 표현될 수 있도록 분해해가는 과정
- 데이터베이스의 논리적 설계 단계에서 수행
목적⭐️
(20.8)
- 데이터 구조의 안정성 및 무결성 유지
- 어떠한 릴레이션이라도 데이터베이스 내에서 표현 가능하게 함
- 효과적인 검색 알고리즘 생성 가능
- 데이터 중복 최소화 → 이상 현상/저장용량 최소화
- 개체와 속성의 누락 여부 확인 가능
- 데이터 삽입 시 릴레이션을 재구성할 필요성 줄임
- 개체 간 관계 파악 용이
- 독립적인 관계는 별개의 릴레이션로 표현
장단점
- 장점
- 중복 데이터 최소화
- 저장 공간 효율적 활용
- 이상 현상 제거
- 단점
- 처리 복잡성 증가
- 실행 속도 저하
- 참조 무결성 유지에 추가 노력 필요
- JOIN 연산 필요성 증가
이상(Anomaly) 현상⭐️
- 데이터 중복으로 인해 릴레이션 조작 시 발생하는 예기치 않은 문제점(20.8)
이상의 종류
- 삽입 이상: 데이터를 삽입할 때 불필요한 데이터가 함께 삽입되는 현상
- 삭제 이상: 한 튜플을 삭제할 때 연쇄 삭제 연상으로 인해 정보 손실
- 갱신 이상: 튜플의 속성값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 모순이 생기는 현상
함수적 종속(Functional Dependency)⭐️
X→Y
: X를 알면 Y를 바로 식별할 수 있고 X에 의해 Y가 달라질 때, Y는 X에 함수적 종속이라고 함
완전 함수적 종속
- 종속자가 기본키에만 종속되며, 기본키가 여러 속성으로 구성되어 있을 때, 기본키를 구성하는 모든 속성이 포함된 기본키의 부분집합에 종속된 경우
- 예: 회원번호 + 주문번호 → 강의명
부분 함수적 종속
- 기본키가 여러 속성으로 구성되어 있을 때, 기본키를 구성하는 속성 중 일부만 종속되는 경우
- 예: 회원번호 +
주문번호 → 이름
이행적 함수 종속
(20.6,8)
- X→Y, Y→Z 이란 종속 관계가 있을 때, X→Z가 성립되는 경우
- 예: 회원번호 → 주민번호, 주민번호 → 이름, ∴ 회원번호 → 이름
정규화 과정⭐️⭐️
모든 정규형은 이전 단계를 모두 만족해야함
(20.6,8)
제1정규형(1NF)
- 만족 조건: 릴레이션에 속한 모든 도메인이 원자값(Atomic Value; 하나의 값)만으로 되어있다.
- 예시
- 비정규 릴레이션:
- 1NF 만족 릴레이션:
제2정규형(2NF)
- 만족 조건: 부분 함수적 종속을 모두 제거하여 완전 함수적 종속으로 만든다.
- 예시
- 비정규 릴레이션:
- 2NF 만족 릴레이션:
제3정규형(3NF)
- 만족 조건: 이행적 함수 종속을 제거한다.
- 예시
- 비정규 릴레이션:
- 3NF 만족 릴레이션:
보이스/코드 정규형(BCNF)
- 제3정규형을 좀 더 강화한 버전
- 만족 조건: 릴레이션에서 모든 결정자가 후보키가 되도록 한다.
- 예시
- 비정규 릴레이션:
- BCNF 만족 릴레이션:
제4정규형(4NF)
제5정규형(5NF)
반정규화/역정규화(Denormalization)
- 시스템의 성능 향상, 개발 및 운영의 편의성을 위해 정규화된 데이터모델을 의도적으로 통합, 중복, 분리하는 기법
- 정규화로 인한 여러 테이블의 조인이 성능 저하를 일으킬 때 사용
- 자주 함께 조인되는 테이블들을 역정규화하여 조인 경로를 줄일 수 있음
- 데이터의 일관성 및 정합성이 저하될 수 있음
반정규화의 유형(방법)
(20.6)
테이블 분할
- 수평분할(레코드 단위), 수직분할(컬럼 단위) → 기본키의 유일성 관리가 어려워짐
테이블 중복
- 집계(통계) 테이블 추가, 진행 테이블 추가, 특정 테이블 추가
컬럼 기반 분할
컬럼 중복
사진 출처
https://mangkyu.tistory.com/110