티스토리 뷰

DB/SQL

[SQL요점정리#3] 정규화

douStory 2021. 8. 17. 13:17
728x90

정규화란, 데이터를 쪼개는 것

이상현상

테이블(릴레이션)에 데이터 삽입시 불필요한

NULL이 삽입되거나 삭제시 연쇄 삭제 현상이 발생하거나 혹은 수정 시 데이터의 일관성이 깨지는현상

  1. 삽입이상
  2. 삭제이상
  3. 수정이상

 

함수적 종속성

X는 결정자, Y는 종속자 라고 한다

학번에 의해 학생이름과 학부가 고유하게 구분가능한 경우

학생이름 학부속성은 함수적으로 종속되어있고

학번은 결정자가 된다.

 

부분 함수적 종속

이름은 학번과 과목코드로 결정될 수 있지만.. 학번만으로도 이름을 결정 할 수 있음

 

완전 함수적 종속

성적{학번과 과목코드}를 한번에 가지고 있어야 구분이 가능한것

 

정규화(normalization)

제 1 정규화 - 도메인의 원자성, 하나의 셀에는 하나의 값만

1차 정규화가 안된 테이블
1차 정규화가 된 테이블

제 2 정규화 - 한테이블 안에 종속관계가 있을경우 별도의 테이블로 분리한다, 데이터 중복을 삭제한다.

제 2정규화가 된 테이블

제 3 정규화 - 까지만해도 이상현상은 없다..  이행적 함수 종속이 아닐 때 제 3정규형에 속한다 즉 2차 정규화가 끝난 상태에서 기본키가 아닌 열끼리 종속관계가 있을 경우 이를 별도의 테이블로 분리 한것.

주문 도서(X) -> 주문회원(Y) -> 회원(Z)

제 4 정규화, 제 5정규화

 

  • 데이터의 정확성이 높아지는 장점이 있다.
  • 물리적 접근이 복잡해지고(한참 찾아 들어가야해..) 짧은데이터(너무 쪼개다보니까) 가 발생한다
  • 데이터에 많은 LOCK이 발생하거나 길이가 긴 데이터가 발생하는 단점도 존재한다.
  • 쪼갠걸 다시 합치는 걸 비정규화라고 한다
댓글