-
데이터베이스 정규화 (기본 정규형)오늘/Today I.. 2024. 3. 6. 23:34
정규화(Normalization) 란?
DB 설계에서 중복을 최소화하기 위해 데이터를 구조화하는 프로세스
이상현상이 있는 릴레이션을 분해하여 이상현상을 제거
이를 통해 중복된 데이터를 허용하지 않게하여 데이터 무결성을 유지하고, DB 저장 공간을 확보 가능
정규화의 장단점
장점
- DB에서 이상현상 제거
- 확장시 구조 변경 최소화
단점
- 릴레이션이 분해되므로 릴레이션 간의 JOIN 연산이 늘어남
정규화의 종류
제 1 정규형
1. 각 컬럼은 하나의 속성만 가져야한다.
2. 하나의 컬럼은 같은 종류나 타입의 값을 가져야 한다.
3. 각 컬럼이 유일한 이름을 가져야한다.
4. 컬럼의 순서가 상관없어야 한다.
제 2 정규형
제 1 정규형을 만족하는 경우 제 2 정규형을 적용할 수 있다.
1. 모든 컬럼이 부분적 종속이 없어야 한다. (모두 완전 함수 종속을 만족해야 한다.)
제 3 정규형
1, 2 정규형을 만족함
1. 기본키를 제외한 속성 중 이행 종속성이 없어야 한다.
(삼단 논법과 유사)
A를 알면 B를 알 수 있다. B를 알면 C를 알 수 있다. -> A를 알면 C를 알 수 있다.
BCNF (Boyce - Codd Normal Form)
제 3 정규형의 심화
1. 모든 결정자가 후보키 집합에 속해야 한다.
일반적으로 정규화는 BCNF까지 하는 경우가 많으며 제 4정규형 부터는 정규화의 단점이 나타날 수 있다.
'오늘 > Today I..' 카테고리의 다른 글
Virtual Thread 는 왜 도입된걸까 (0) 2024.03.25 오늘, Redis가 죽었다. (0) 2024.03.23 서버리스 (Serverless) (0) 2024.02.29 Adapter Pattern (0) 2023.12.28 23/12/21 레디스를 왜 도커에서 써야해? (0) 2023.12.21