
안녕하세요, 성조입니다.
이번 포스팅은 정규화 개념에 대해 다룬 포스팅으로 약간 넓은 범주로 정리를 진행했습니다.
정규화(Normalization)란?
관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 정규화(Normalization)라고 정의한다.
정규화의 목표는 이상 현상(Anomaly)이 있는 관계를 재구성하여 작고 잘 조직된 관계(테이블)를 생성하는 것이 핵심 목표가 된다.
정규화 설명을 한 스푼 더한 정의
하나의 테이블에 너무 많은 정보를 넣었을 때 데이터가 중복되어 다양한 문제를 발생시킬 수 있는 것들을 방지 또는 해결하기 위함의 성격이 크다.
이곳저곳에 중복데이터가 추가, 수정, 삭제할 때 데이터가 날아가거나 수정되거나 의존된 데이터가 같이 추가되는 등의 '이상 현상'이 발생될 수 있는 문제가 핵심이다. 이를 방지하기 위해 데이터들 간의 종속성을 분석해 릴레이션(테이블)을 분리해 나아가는 과정이 핵심이 된다.
정규화의 종류
정규화는 총 6개의 정규화로 나뉜다. 해당 포스트에서는 디테일하게 다루지 않고 간략하게 다룰 예정이다.
추후 디테일하게 작성해 나아갈 예정이다.
1. 제1정규형(1NF): 테이블의 컬럼이 가진 값들이 원자값(더 이상 쪼개질 수 없는 하나의 값)만 가지도록 분해한다.
2. 제2정규형(2NF): 제1정규형을 만족하면서, 부분 함수 종속성을 제거하여 모든 속성이 기본키에 완전 함수 종속되도록 만들어주는 과정이다.
3. 제3정규형(3NF): 제2정규형을 만족하면서, 기본키가 아닌 속성들 간의 종속성, 즉 이행적 함수 종속을 제거하는 과정이다.
(A->B, B->C 일 때 A->C가 되는 현상 제거)
4. 보이스-코드 정규형 (BCNF): 제3정규형을 강화한 버전으로, 테이블의 모든 결정자가 후보키가 되도록 릴레이션을 분해한다.
5. 제4정규형(4NF): BCNF를 만족하면서, 다치 종속(Multi-valued Dependency)을 제거하는 정규형이다.
6. 제5정규형(5NF): 제4정규형을 만족하면서, 조인 종속(Join Dependency)이 없도록 릴레이션을 분해하는 정규형이다.
오타나 잘못된 내용이 존재한다면 댓글 부탁드리겠습니다.
포스팅을 읽어주셔서 감사드립니다.
다음 포스팅 때 뵙겠습니다!
'Database' 카테고리의 다른 글
| [Database] [Oracle] Oracle 19C 버전 설치하기 (0) | 2022.07.17 |
|---|---|
| [Database] 이상 현상(Anomaly)이란? (0) | 2022.04.29 |
| [Database] DML(Data Manipulation Language)이란? (Lightly) (0) | 2022.04.26 |
| [Database] SQL vs NoSQL (0) | 2022.04.11 |
| [Database] [MYSQL 8.0] SELECT 기본 종합 정리 (0) | 2022.04.07 |