정규화란?
•
정의
◦
데이터베이스 정규화는 데이터 중복성을 줄이고, 데이터 무결성을 향상시키기 위해 데이터를 구조화하는 과정
•
목적
◦
중복 제거 : 데이터 중복을 줄여 저장 공간을 효율적으로 사용
◦
데이터 무결성 향상 : 데이터베이스 내의 데이터 정확성, 일관성을 유지
◦
업데이트 이상 최소화 : 데이터 수정, 삭제, 삽입 시 발생할 수 있는 문제점들을 줄임
•
효과
◦
저장 공간의 효율적 사용데이터 무결성 및 일관성 유지 데이터베이스 수정 시 발생할 수 있는 오류 감소
•
제1 정규화, 제2 정규화, 제3 정규화, 보이스/코드 정규형이 있음
제1 정규화
•
모든 필드의 값이 원자값을 가지도록 테이블을 구조화하는 것
즉, 각 필드에는 반복되는 그룹이나 리스트가 없어야 함
제2 정규화
•
모든 테이블이 제1 정규형을 만족하며, 기본 키가 아닌 모든 필드가 기본 키에 완전 함수적으로 종속되는 상태
제3 정규화
•
모든 테이블이 제2정규형을 만족하며, 기본 키가 아닌 모든 필드가 이행적 종속을 만족하지 않는 상태
즉, 기본 키가 아닌 모든 필드가 기본 키에만 종속되어야 함
이행적 종속
보이스/코드 정규화
•
제3 정규형
•
테이블이 이미 제3 정규형(3NF)에 있어야 함
•
모든 결정자가 후보 키여야 함 즉, 비후보 키 속성이 다른 속성을 결정하지 않아야 함
결정자
•
데이터 중복을 줄이고, 업데이트 이상 현상을 방지하여 데이터베이스의 무결성을 보장
•
특히, 후보 키가 아닌 결정자에 의한 종속성을 제거함으로써 보다 엄격한 데이터 구조를 유지할 수 있음
•
성능이 100% 좋아지는 것은 아님, 테이블이 나뉘기 때문에 조인을 해야하는 경우도 발생할수 있음