정규화 (Normalization)란?
- 기본 목표는 테이블 간에 중복된 데이터를 허용하지 않는다 라는 것
- 중복된 데이터를 허용하지 않음 으로써 데이터의 무결성을 유지할 수 있으며 DB 저장 용량 역시 줄일 수 있다.
- 이상(Anomaly)를 제거하기 위해 중복성 및 종속성을 배제하는 방법
※ 데이터의 무결성 : 데이터의 정확성과 일관성을 유지하고 보증하는 것 (개체 무결성, 참조 무결성, 범위 무결성)
※ 이상(Anomaly) : 테이블 내의 데이터 중복성에 의하여 발생되는 데이터의 불일치 현상 (갱신 이상, 삽입 이상, 삭제 이상)
정규화의 4가지 단계
제 1 정규화
- 테이블의 컬럼이 원자값을 갖도록 테이블을 분해하는 것
※ 원자값 : 하나의 값을 가지고 있는 것, 한 컬럼에 두가지 이상의 값을 가질 수 없는것
제 2 정규화
- 제1 정규화를 진행한 테이블에 대해 완전 함수 종속을 만족하도록 테이블을 분해하는 것
- 두개의 컬럼을 합쳐 만든 복합키가 기본키인 경우 부분키로 결정될 수 있는 컬럼을 합쳐 별도의 테이블로 관리하는것
※ 완전 함수 종속 : 종속자가 기본키에만 종속되며, 기본키가 여러 속성으로 구성되어 있을 경우 기본키를 구성하는 모든 속성이 포함된 키본키의 부분집합에 종속된 경우, 기본키의 부분 집합이 결정자가 되어선 안된다,
제 3 정규화
- 제2 정규화를 진행한 테이블에 대해 이행적 종속을 없애도록 테이블을 분해하는 것
- B가 변경되었음에도 불구하고 A로 조회를 했을 떄 B로 결정되는 C의 값이 변경되지 않고 그대로 조회되기 때문에 사용
※ 이행적 종속 : A->B, B->C, A->C 일 떄, A->C 가 성립되는 경우
BCNF 정규화
- 제3 정규화를 진행한 테이블에 대해 모든 결정자가 후보키가 되도록 테이블을 분해하는 것
※ 후보키 : 튜플을 유일하게 식별할 수 있는 속성들의 부분집합
정규화 단계가 높아질수록 이전 정규화가 지켜져야하며 BCNF 정규화 이후의 정규화도 있지만 실제로는 BCNF으로 실질적인 이상현상을 다 제거할 수 있다고 합니다.
참조 : https://mangkyu.tistory.com/110
[Database] 정규화(Normalization) 쉽게 이해하기
지난 포스팅에서 데이터베이스 정규화와 관련된 내용을 정리했었다. 하지만 해당 내용이 쉽게 이해되지 않는 것 같아서 정규화 관련 글을 풀어서 다시 한번 정리해보고자 한다. 1. 정규화(Normaliz
mangkyu.tistory.com
'DB' 카테고리의 다른 글
[DB] 파티션 테이블 (Partition Table) : MYSQL (0) | 2023.01.07 |
---|---|
시계열 데이터 베이스 (TSDB : Time-Series DataBase) (0) | 2021.05.11 |