index
테이블 간에 중복된 데이타를 허용하지 않는다는 것. 중복된 데이터를 허용하지 않음으로써 무결성(Integrity)을 유지할 수 있으며, DB의 저장 용량도 줄일 수 있음. 정규화에는 제 1 정규화, 제 2 정규화, 제 3 정규화, BCNF ~ 제 6 정규화까지 존재. 하지만 보통 실제로는 1 ~ 3 정규화까지의 과정만 거치게 됨.
정규화 단계별 과정
제 1 정규화
테이블의 컬럼이 원자값(Atomic Value, 하나의 값)을 갖도록 분해하는 것.
제 2 정규화
제 1 정규화를 진행한 테이블에 대해 완전 함수 종속을 만족하도록 테이블을 분해하는 것
완전 함수 종속 : 기본키의 부분집합이 결정자가 되어서는 안된다는 것.
제 3 정규화
제 2 정규화를 진행한 테이블에 대해 이행적 종속을 없애도록 테이블을 분해하는 것
이행적 종속 : A → B, B → C 가 성립할 때 A → C 가 성립되는 것.
BCNF
제 3 정규화를 진행한 테이블에 대해 모든 결정자가 후보키가 되도록 테이블을 분해하는 것
정규화의 장단점
장점
이상현상을 제거할 수 있음
db와 연동된 프로그램에 최소한의 영향만을 미쳐 프로그램의 생명 연장
정규화된 데이터베이스 구조에서는 새로운 데이터 형의 추가로 인한 확장 시, 그 구조를 변경하지 않아도 되거나 일부만 변경해도 됨.
단점
릴레이션 분해로 인해 join연산이 많아짐.
조인이 많이 발생해 성능저하가 일어나면 반정규화(비정규화) 적용 가능.
데이터를 처리할 때 속도가 빨라질 수도 있고 느려질 수도 있음.
참고/출처
정규화(Normalization)란? 정규화(Normalization)란? 정규화 예시, 1NF, 2NF, 3NF, BCNF 정규화(Normalization) 쉽게 이해하기
Last updated