티스토리 뷰

배운 것 기록/etc

정규화 과정

키죽 2022. 7. 5. 21:50

정규화

제 1 정규화 1NF

오직 원자값만 저장한다. 한 컬럼에 여러 데이터가 들어오면 안된다.

 

영화명 장르
A 공포, 액션
B 드라마
C 판타지

 

제 1 정규화를 거치면 아래 테이블처럼 된다.

 

영화명 장르
A 공포
A 액션
B 드라마
C 판타지

 

제 2 정규화 2NF

하나의 테이블 안에 종속되는 관계가 있으면 테이블을 분리한다. 기본 키가 여러 속성일 경우, 그 중 일부에 종속된 경우이다.

 

제 3 정규화 3NF

기본키와 상관없는 속성의 테이블인 경우가 있다. 키가 아닌 컬럼들은 키에만 의존해야한다.

X -> Y, Y -> Z, X -> Z가 성립하면 X, Y와 Y, Z로 분리한다. 후보키를 여러 개 가지고 있으면 이상 현상이 생길 수 있다.

 

BCNF

모든 결정자가 후보키 집합에 속한 정규형

 

학생명 과목 강사명
A DB XXX
A JAVA YYY
B JSP ZZZ
B JAVA XXX

위와 같은 경우 학생, 과목이 속성인 테이블과 과목, 강사명이 속성인 테이블이 따로 있어야 한다.

 

정리하자면

  • 테이블을 많이 나눠 조인을 하는 게 정규화 과정이라고 보면 된다.
  • 보통 제 1 정규화는 필수로 지키고 나머지는 때에 따라 다른데
  • 이게 역정규화가 있는 이유이다. 정규화 과정이 잦으면 속도가 느려지기 때문이다.
  • 이런 과정을 거쳐도 삽입 이상, 삭제 이상, 갱신 이상이 생길 수 있다.

 

'배운 것 기록 > etc' 카테고리의 다른 글

[Python] 자료형 - Set / List / 튜플 / 딕셔너리  (0) 2022.07.13
[C++] 포인터  (0) 2022.07.12
정규표현식  (0) 2022.07.07
댓글
최근에 올라온 글
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함