정규화는 데이터베이스에서 데이터를 구성하여 중복, 불일치 및 이상을 유발할 수 있는 기타 문제를 제거하는 프로세스이고, 다음은 발생할 수 있는 이상 현상이다.
이상 현상
삽입 이상(Insertion Anomaly)
- 불필요한 데이터도 함께 삽입되는 하는 문제
갱신 이상(Update Anomaly)
- 데이터 수정시 데이터의 일부만 변경되는 데이터 불일치 문제
삭제 이상(Deletion Anomaly)
- 테이블에서 데이터 삭제시 다른 데이터까지 같이 삭제되는 데이터 손실 문제
- 테이블에서 데이터 삭제시 다른 데이터까지 같이 삭제되는 데이터 손실 문제
이러한 이상 현상을 방지하기 위해 데이터 정규화를 사용하여 데이터를 재구성하고 중복성을 제거하여 각 테이블에 기본 키가 있고 각 데이터 조각이 한 번만 저장되도록 할 수 있다. 이렇게 하면 이상 현상이 발생하지 않도록 방지하고 데이터베이스가 일관되고 효율적으로 유지되도록 할 수 있다.
정규화 단계
다음은 이상 현상을 방지하기 위해 데이터를 정규화하는 단계이다.
1NF(First Normal Form)
- 각 테이블에 테이블의 각 레코드에 대한 고유 식별자인 기본 키가 있는지 확인. 테이블의 각 필드는 단일 값을 보유해야 하며 반복되는 필드 그룹이 없어야 한다. -> 삽입 이상 제거.
2NF(Second Normal Form)
- 키가 아닌 모든 속성은 기본 키에만 의존해야 한다. 테이블에 복합 기본 키가 있는 경우 각 테이블이 하나의 기본 키만 갖도록 더 작은 테이블로 분해해야 함. -> 갱신 이상 제거.
3NF(Third Normal Form)
- 키가 아닌 모든 속성은 기본 키에만 의존해야 하며 전이 종속성이 없어야 한다. 키가 아닌 속성이 키가 아닌 다른 속성에 종속될 때 전이 종속성 존재. -> 삭제 이상 제거.
추가 정규화 형식: 보이스-코드 정규형(BCNF), 제4정규형(4NF), 제5정규형(5NF)과 같이 추가적인 이상 현상을 제거하기 위해 적용할 수 있는 더 높은 정규화 형식이 있다고 한다.
'TIL' 카테고리의 다른 글
쿠키, 캐시, 세션 (0) | 2023.05.06 |
---|---|
[자료구조] 스택 & 큐 (0) | 2023.05.05 |
코드 리팩토링 (0) | 2023.05.01 |
Redis의 문제점 (0) | 2023.04.25 |
Mock & Mokito 테스트코드 (1) | 2023.04.17 |