티스토리 뷰
정규화
- 테이블을 정규형이라고 불리는 형태에 부합하게 만들어나가는 것
- 데이터베이스의 테이블이 잘 만들어졌는지 평가하고, 잘 만들지 못한 테이블을 고쳐나가는 과정
- 관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스(무결성 개선)
장점
- 데이터베이스 이상 현상 제거
- 삽입이상
- 특정 데이터가 존재하지 않아 중요한 데이터를 삽입할 수 없는 현상
- 삭제이상
- 특정 정보를 삭제하면, 원치 않는 정보도 삭제되는 현상
- 갱신 이상
- 갱신을 했는데 정상적으로 변경되지 않은 경우, 또한 너무 많은 행을 업데이트 하는 현상
- 삽입이상
- 데이터 구조 안정성 및 무결성 유지
- 저장 공간 최소화(중복 최소화)
- 데이터 삽입 시 릴레이션 재구성 필요성 감소
- 효과적인 검색 알고리즘 생성 가능
단점
- 릴레이션 간 조인 연산 증가 -> 속도 저하
정규화 과정
- 제 1 정규화
- 테이블의 컬럼이 원자 값을 갖도록 테이블을 분해
- 제 2 정규화
- 제 1 정규화를 진행한 테이블에 대해 완전 함수 종속을 만족하도록 테이블 분해
- 완전 함수 종속
- 기본키의 부분 집합이 결정자가 되어서는 안 된다.
- 완전 함수 종속
- 제 1 정규화를 진행한 테이블에 대해 완전 함수 종속을 만족하도록 테이블 분해
- 제 3 정규화
- 제 2 정규화를 진행한 테이블에 대해 이행적 종속을 없애도록 테이블 분해
- 이행적 종속
- A -> B, B -> C가 성립할 때, A -> C가 성립되는 것
- 이행적 종속
- 제 2 정규화를 진행한 테이블에 대해 이행적 종속을 없애도록 테이블 분해
- BCNF 정규화
- 제 3 정규화를 진행한 테이블에 대해 모든 결정자가 후보키가 되도록 테이블 분해
반대로 비정규화(반정규화)에 대해서 간단히 보겠다.
비정규화(반정규화)
- 하나 이상의 테이블에 데이터를 중복해 배치하는 최적화 기법
장점
- 빠른 데이터 조회가 가능하다. (조인 비용이 줄어든다)
- 조회 쿼리가 간단해진다.
단점
- 데이터 갱신, 삽입 비용이 높아진다.(중복해서 있으므로)
- 갱신, 삽입 코드 작성이 어려워진다.
- 데이터 간 일관성이 깨질 수 있다.
'CS지식' 카테고리의 다른 글
Spring IoC (0) | 2022.08.17 |
---|---|
DI(Dependency Injection) (0) | 2022.07.29 |
Spring, Spring Boot (0) | 2022.07.29 |
스프링 프레임워크 (0) | 2022.07.29 |
스택과 큐 (0) | 2022.07.22 |