Skipalong's tistory
240313 TIL - 정규화 본문
오늘은 정규화에 대해 정리해보겠다.
정규화란?
- 정의
- 데이터베이스 정규화는 데이터 중복성을 줄이고, 데이터 무결성을 향상시키기 위해 데이터를 구조화하는 과정
- 목적
- 중복 제거 : 데이터 중복을 줄여 저장 공간을 효율적으로 사용
- 데이터 무결성 향상 : 데이터베이스 내의 데이터 정확성, 일관성을 유지
- 업데이트 이상 최소화 : 데이터 수정, 삭제, 삽입 시 발생할 수 있는 문제점들을 줄임
- 효과
- 저장 공간의 효율적 사용데이터 무결성 및 일관성 유지 데이터베이스 수정 시 발생할 수 있는 오류 감소
- 제1 정규화, 제2 정규화, 제3 정규화, 보이스/코드 정규형이 있음
제1 정규화
- 모든 필드의 값이 원자값을 가지도록 테이블을 구조화하는 것 즉, 각 필드에는 반복되는 그룹이나 리스트가 없어야 함
제2 정규화
- 모든 테이블이 제1 정규형을 만족하며, 기본 키가 아닌 모든 필드가 기본 키에 완전 함수적으로 종속되는 상태
제3 정규화
- 모든 테이블이 제2정규형을 만족하며, 기본 키가 아닌 모든 필드가 이행적 종속을 만족하지 않는 상태 즉, 기본 키가 아닌 모든 필드가 기본 키에만 종속되어야 함
- 이행적 종속
- A→B, B→C → A→C 일 때 C는 A에 이행적으로 종속
보이스/코드 정규화
- 제3 정규형
- 테이블이 이미 제3 정규형(3NF)에 있어야 함
- 모든 결정자가 후보 키여야 함 즉, 비후보 키 속성이 다른 속성을 결정하지 않아야 함
- 결정자
- X→Y일때 X는 결정자, Y는 종속자
- 데이터 중복을 줄이고, 업데이트 이상 현상을 방지하여 데이터베이스의 무결성을 보장
- 특히, 후보 키가 아닌 결정자에 의한 종속성을 제거함으로써 보다 엄격한 데이터 구조를 유지할 수 있음
- 성능이 100% 좋아지는 것은 아님, 테이블이 나뉘기 때문에 조인을 해야하는 경우도 발생할수 있음
이렇게 정규화 과정에 대해 알아보았는데 전에 정규화에 대해 한 번 정리를 했었지만 이번에는 보이스/코드 정규화에 대한 내용을 새로 알았고 제1,2,3 정규화에 대해 다시 한 번 리마인드 하는 기회가 되었던 것 같다 그리고 제 4,5 정규화도 있다고 하는데 나중에 기회가 되면 한 번 알아보면 좋을 것 같다.
'TIL' 카테고리의 다른 글
240315 TIL - Queue (2) | 2024.03.16 |
---|---|
240314 TIL - 공간복잡도와 자료구조에서의 시간 복잡도 (0) | 2024.03.14 |
240312 TIL - 데이터베이스의 속성과 도메인 (0) | 2024.03.13 |
240311 TIL - 공유자원과 임계영역 (0) | 2024.03.12 |
240308 TIL - 프로세스의 상태 (0) | 2024.03.09 |