정규화의 목적
- 중복을 배제하여 삽입, 삭제, 갱신 이상의 발생을 방지
- 각 릴레이션에 중복된 종속성을 여러개의 릴레이션에 분할
- 어떠한 릴레이션이라도 데이터 베이스 내에서 표현 가능하게 함
- 데이터 삽입 시 릴레이션을 재구성할 필요성 감소
- 효과적인 검색 알고리즘을 생성 가능
문제발생
- 정규화가 되어 있지 않은 테이블 설계
- 데이터베이스 설계의 경우 관심사를 분리하지 않아 생기는 문제는 코드에서의 문제보다 더 심각함
정규화
- 관계형 데이터베이스의 설계에서 중복을 최소하여 데이터를 구조화하는 것을 정규화라고 한다
- 정규화가 진행된 정도를 정규형으로 표현
- 정규형에는 1NF, 2NF, 3NF, BCNF, 4NF, 5NF, 6NF로 나뉜다
비공식적 표현으로 3NF가 되었으면 정규화 되었다고 말한다
(3NF 테이블의 삽입, 변경, 삭제 이상이 없으며, 3NF 테이블의 대부분이 BCNF, 4NF, 5NF
정규형
- 제 1정규형(1NF): 릴레이션에 속한 모든 속성의 도메인이 원자 값으로만 구성
- 제 2정규형(2NF): 제 1정규형만 만족시키는 릴레이션에서 부분 함수 종속성을 가지게 될 경우, 세가지 이상현상 발생
- 제 3정규형(3NF): 제 2정규형에 속하면서, 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속이 되지 않을 때