728x90
1. 정규화
- 데이터의 정합성(정확성과 일관성을 유지하고 보장)을 위해 엔터티의 작은 단위로 분리하는 과정
- 중복을 최소화하고, 데이터 무결성을 유지
- 데이터 조회 성능은 처리조건에 따라 향상되는 경우도 있고, 저하되는 경우도 있다.
- 일반적으로 입력, 수정, 삭제 성능은 향상된다.
# 정규화 단계
# 제 1정규형 (1NF)
- 각 컬럼이 하나의 속성만을 가져야 한다.
- 하나의 컬럼은 같은 종류나 타입의 값을 가져야 한다.
- 각 컬럼이 유일한 이름을 가져야 한다.
- 컬럼의 순서가 상관없어야 한다.
# 제 2정규형 (2NF)
- 제 1정규형을 만족해야 한다.
- 모든 컬럼이 부분적 종속이 없어야 한다. 즉, 모든 컬럼이 완전 함수 종속을 만족해야 한다.
💡부분 함수 종속 (Partial Functional Dependency) : 기본키 중에 특정 컬럼에만 종속되는 것
💡완전 함수 종속 (Full Functional Dependency) : 기본키의 부분집합이 결정자가 되어선 안된다는 것
# 제 3정규형 (3NF)
- 제 2정규형을 만족해야 한다.
- 기본키를 제외한 속성들간의 이행 종속성이 없어야 한다.
💡이행 함수 종속 (Transitive Functional Dependency) : A → B, B → C일 때 A → C를 만족하면 이행 함수 종속이라고 한다.
# BCNF (Boyce-Codd Normal Form)
- 제 3정규형을 만족해야 한다.
- 모든 결정자가 후보키 집합에 속해야 한다.
# 제 4 정규형(4NF)
- BCNF를 만족해야 한다.
- 다중값 종속(다치 종속)이 없어야 한다.
💡다치 종속 (Multi-valued Dependency)
- 같은 테이블 내의 독립적인 두 개 이상의 컬럼이 또 다른 컬럼에 종속되는 것을 말한다.
- A → B 인 의존성에서 단일 값 A와 다중 값 B가 존재한다면 다치 종속이라고 할 수 있다.
- 다치 종속은 A ↠ B로 표기한다. (이중 화살표 ↠)
- 다치 종속은 최소 2개의 컬럼이 다른 컬럼에 종속되어야 하기 때문에 최소 3개의 컬럼이 필요하다.
# 제 5 정규형(5NF)
- 4NF를 만족해야 한다.
- 더 이상 비손실 분해를 할 수 없어야 한다.
💡조인 종속 (Joint Dependency) : 하나의 릴레이션을 여러개의 릴레이션으로 분해하였다가, 다시 조인했을 때 데이터의 손실이 없고 필요없는 데이터가 생기는 것을 말한다. 조인 종속성은 다치 종속의 개념을 더 일반화한 것이다.
2. 반정규화
- 데이터베이스의 성능을 향상시키기 위해 데이터의 중복을 허용하고 조인을 줄이는 것
- 조회 성능은 향상될 수 있으나 입력, 수정, 삭제 성능은 저하될 수 있으며 데이터 정합성 이슈가 발생할 수 있음
- 반정규화의 과정은 정규화가 끝난 후 거치게 되며 정규화와 마찬가지로 일정한 규칙이 존재
# 테이블 반정규화
# 컬럼 반정규화
# 관계 반정규화
728x90
'데이터베이스(DB) > SQLD' 카테고리의 다른 글
[SQLD 1-2-3] 데이터 모델과 SQL - 모델이 표현하는 트랜잭션의 이해 (39) | 2024.05.10 |
---|---|
[SQLD 1-2-2] 데이터 모델과 SQL - 관계와 조인의 이해 (38) | 2024.05.10 |
[SQLD 1-1-5] 데이터 모델링의 이해 - 식별자 (31) | 2024.05.07 |
[SQLD 1-1-4] 데이터 모델링의 이해 - 관계 (41) | 2024.05.06 |
[SQLD 1-1-3] 데이터 모델링의 이해 - 속성 (40) | 2024.05.06 |