SQL 이것저것

[SQL] 정규화

agingcurve 2022. 9. 20. 01:15
반응형

정규화란?

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

 

1차 정규화 ~ 5차 정규화 BCNF

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

 

1차 정규화 (1NF)

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

10월 1일에 엘리스 토끼가 대여한 정보를 삭제한다면?

 

 

친구 도도새가 엘리스 토끼가 만들어 둔 테이블에 데이터를 넣어두었다. 1차 정규화를 하기 위해서는 어떻게 고쳐야 할까?

 

→ 대여한 킥보드ID ~ 대여한 킥보드 연식 속성들이 각각 1개의 값만 가지도록 수정

 

2차 정규화(2NF)란?

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

 

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

 

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

 

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

 

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

 

 

3차 정규화(3NF)란?

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

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

 

 

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

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

 

 

 

0월 1일 11시에 ID가 elice_rabbit 고객의 대여한 킥보드 종류를 B형으로 수정한다면? → 킥보드 종류를 수정하기 위해 킥보드 테이블의 종류를 수정, 대여 테이블 내에서 E01의 킥보드 종류 조회 시 동일하게 변경된 B 값을 확인할 수 있음

'SQL 이것저것' 카테고리의 다른 글

[SQL] View  (0) 2022.09.20
[SQL] 데이터베이스 준비하기  (0) 2022.09.16
[SQL] 그룹 함수  (0) 2022.09.16
[SQL] 윈도우 함수  (0) 2022.09.14
[SQL] View(뷰)  (0) 2022.09.10