DB/SQL
[SQL요점정리#3] 정규화
douStory
2021. 8. 17. 13:17
728x90
정규화란, 데이터를 쪼개는 것
이상현상
테이블(릴레이션)에 데이터 삽입시 불필요한
NULL이 삽입되거나 삭제시 연쇄 삭제 현상이 발생하거나 혹은 수정 시 데이터의 일관성이 깨지는현상
- 삽입이상
- 삭제이상
- 수정이상
함수적 종속성
X는 결정자, Y는 종속자 라고 한다
학번에 의해 학생이름과 학부가 고유하게 구분가능한 경우
학생이름 학부속성은 함수적으로 종속되어있고
학번은 결정자가 된다.
부분 함수적 종속
이름은 학번과 과목코드로 결정될 수 있지만.. 학번만으로도 이름을 결정 할 수 있음
완전 함수적 종속
성적은 {학번과 과목코드}를 한번에 가지고 있어야 구분이 가능한것
정규화(normalization)
제 1 정규화 - 도메인의 원자성, 하나의 셀에는 하나의 값만
제 2 정규화 - 한테이블 안에 종속관계가 있을경우 별도의 테이블로 분리한다, 데이터 중복을 삭제한다.
제 3 정규화 - 까지만해도 이상현상은 없다.. 이행적 함수 종속이 아닐 때 제 3정규형에 속한다 즉 2차 정규화가 끝난 상태에서 기본키가 아닌 열끼리 종속관계가 있을 경우 이를 별도의 테이블로 분리 한것.
주문 도서(X) -> 주문회원(Y) -> 회원(Z)
제 4 정규화, 제 5정규화
- 데이터의 정확성이 높아지는 장점이 있다.
- 물리적 접근이 복잡해지고(한참 찾아 들어가야해..) 짧은데이터(너무 쪼개다보니까) 가 발생한다
- 데이터에 많은 LOCK이 발생하거나 길이가 긴 데이터가 발생하는 단점도 존재한다.
- 쪼갠걸 다시 합치는 걸 비정규화라고 한다