정규화는 테이블 간 데이터 조작(삽입, 수정, 삭제) 시 발생할 수 있는 이상 현상을 줄이기 위해 하는 작업이다.

→ 다양한 정규화 종류가 있지만 1~3차 정규화까지 진행하면 대부분의 이상현상을 없앨 수 있음

1차 정규화 (1NF)

각 속성마다 값이 1개씩 존재하도록 하는 과정 (원자화)

image-20211031204543114

image-20211031204612798

2차 정규화 (2NF)

복합키로 구성되어 있을 때 고려해야 하며, 모든 속성이 완전 함수 종속이 되도록 하는 작업

*완전 함수 종속: A, B, C, D가 있을 때, B가 A에 의해 종속되는 경우 B는 다른 내용(C, D)에 의해 종속되지 않는 경우

image-20211031204612798

10월 01일에 킥보드를 대여해간 엘리스 토끼의 전화번호를 010-0000-2222로 변경한다면?

image-20211031204808178

→ 동일한 고객인 10월 02일의 엘리스 토끼와 데이터가 일치하지 않는 상황 발생

image-20211031204836549

고객 이름과 전화번호는 고객의 ID에 종속되어 있음 이 두 속성을 대여 테이블로부터 분리시켜 종속성을 제거


image-20211031204905615

10월 01일에 킥보드를 대여해간 엘리스 토끼의 전화번호를 010-0000-2222로 변경한다면?

→ 엘리스 토끼의 전화번호를 수정하기 위해 고객 테이블의 전화번호를 수정, 그 후 10월 02일 엘리스 토끼의 전화번호를 확인해보면 변경된 전화번호를 얻을 수 있음

3차 정규화 (3NF)

테이블 내에서 이행적 요소를 제거하는 작업

image-20211031204905615

10월 1일 11시에 ID가 elice_rabbit 고객의 대여한 킥보드 종류를 B형으로 수정한다면?

image-20211031205206168

10월 2일 12시에 ID 가 hatseller인 고객과 비교하였을 때 대여한 킥보드의 ID는 동일하지만 대여한 킥보드 종류가 다른 현상 발생!

image-20211031205231402

킥보드에 대한 정보(종류, 이미지, 연식)은 모두 킥보드 ID에 영향을 받음 → 이를 분리시켜 이행적 요소를 제거


image-20211031205308367

image-20211031205346979

10월 1일 11시에 ID가 elice_rabbit 고객의 대여한 킥보드 종류를 B형으로 수정한다면?

→ 킥보드 종류를 수정하기 위해 킥보드 테이블의 종류를 수정, 대여 테이블 내에서 E01의 킥보드 종류 조회시 동일하게 변경된 B값을 확인할 수 있음

댓글남기기