[SQL] 6 정규화 (Normalization)
정규화는 테이블 간 데이터 조작(삽입, 수정, 삭제) 시 발생할 수 있는 이상 현상을 줄이기 위해 하는 작업이다.
→ 다양한 정규화 종류가 있지만 1~3차 정규화까지 진행하면 대부분의 이상현상을 없앨 수 있음
1차 정규화 (1NF)
각 속성마다 값이 1개씩 존재하도록 하는 과정 (원자화)
2차 정규화 (2NF)
복합키로 구성되어 있을 때 고려해야 하며, 모든 속성이 완전 함수 종속이 되도록 하는 작업
*완전 함수 종속: A, B, C, D가 있을 때, B가 A에 의해 종속되는 경우 B는 다른 내용(C, D)에 의해 종속되지 않는 경우
10월 01일에 킥보드를 대여해간 엘리스 토끼의 전화번호를 010-0000-2222로 변경한다면?
→ 동일한 고객인 10월 02일의 엘리스 토끼와 데이터가 일치하지 않는 상황 발생
고객 이름과 전화번호는 고객의 ID에 종속되어 있음 이 두 속성을 대여 테이블로부터 분리시켜 종속성을 제거
10월 01일에 킥보드를 대여해간 엘리스 토끼의 전화번호를 010-0000-2222로 변경한다면?
→ 엘리스 토끼의 전화번호를 수정하기 위해 고객 테이블의 전화번호를 수정, 그 후 10월 02일 엘리스 토끼의 전화번호를 확인해보면 변경된 전화번호를 얻을 수 있음
3차 정규화 (3NF)
테이블 내에서 이행적 요소를 제거하는 작업
10월 1일 11시에 ID가 elice_rabbit 고객의 대여한 킥보드 종류를 B형으로 수정한다면?
10월 2일 12시에 ID 가 hatseller인 고객과 비교하였을 때 대여한 킥보드의 ID는 동일하지만 대여한 킥보드 종류가 다른 현상 발생!
킥보드에 대한 정보(종류, 이미지, 연식)은 모두 킥보드 ID에 영향을 받음 → 이를 분리시켜 이행적 요소를 제거
10월 1일 11시에 ID가 elice_rabbit 고객의 대여한 킥보드 종류를 B형으로 수정한다면?
→ 킥보드 종류를 수정하기 위해 킥보드 테이블의 종류를 수정, 대여 테이블 내에서 E01의 킥보드 종류 조회시 동일하게 변경된 B값을 확인할 수 있음
댓글남기기