본문 바로가기

카테고리 없음

[Database] 정규화

정규화

이상이 있는 관계를 재구성하여 작고 잘 조직된 관계를 생성하는 것

보통 BCNF 까지만 수행되기 때문에 BCNF까지만 정리하였다. 이후에 제 4정규화, 제 5정규화도 존재한다.

이상현상

  • 삽입 이상 : 테이블에 새로운 값을 넣을 때 불필요한 필드값을 추가로 삽입해야 되는 현상
  • 삭제 이상 : 원치 않은 데이터까지 삭제가 일어나는 현상
  • 갱신 이상 : 데이터를 수정시 그 데이터가 다른 속성값과 불일치가 발생하는 현상

 


제1 정규형 (1NF)

테이블의 컬럼이 원자값 즉 하나의 값만 가지도록 테이블을 분해하는 것

 

문제 테이블

학번 학과 조교 교수 과목코드 강의실 성적
101 컴퓨터 a A,B 101, 102 A101,  A102 A, A
102 통계학 b C,D 201, 202 B201, B202 B, A
103 경영학 c E 301 C301 C
104 경영학 c F 302 C302 A
105 컴퓨터 a G 103 A103 A

과목 코드, 강의실, 성적에서 두가지 값을 가진 컬럼 존재

  • 삽입 이상 : 학번 101인 학생이 A 교수의 다른 수업을 들을 시 과목코드와 강의의 갱신이 일어난다.
  • 갱신 이상 : 과목 코드 101에 해당하는 교수가 변경 될 시 모든 101을 탐색후 수정하여야 하는 데 이때 두가지 값이 합쳐져 있으면 탐색하기 어렵다.
  • 삭제 이상 : 학번 101의 101 과목의 수강정보를 삭제하려면 강의실 및 성적에서 해당 과목에 매칭되는 정보를 삭제해야 한다.

 

정규화후

학번 학과 조교 교수 과목코드 강의실 성적
101 컴퓨터 a A 101 A101 A
101 컴퓨터 a B 102 A102 A
102 통계학 b C 201 B201 B
102 통계학 b D 202  B202 A
103 경영학 c E 301 C301 C
104 경영학 c F 302 C302 A
105 컴퓨터 a G 103 A103 A

 


제2 정규형 (2NF)

모든 컬럼이 완전 함수 종속이어야 한다. 기본키를 제외한 모든 속성이 기본키에 종속 되는 것.

 

문제 테이블

학번 학과 조교 교수 과목코드 강의실 성적
101 컴퓨터 a A 101 A101 A
101 컴퓨터 a B 102 A102 A
102 통계학 b C 201 B201 B
102 통계학 b D 202  B202 A
103 경영학 c E 301 C301 C
104 경영학 c F 302 C302 A
105 컴퓨터 a G 103 A103 A

 

  • 삽입 이상 : 학번 101인 학생이 새로운 과목 수강시 교수, 학과, 강의실을 알아야 한다.
  • 갱신 이상 : 과목 코드 101에 해당하는 교수가 변경 될 시 모든 101을 탐색후 수정하여야 한다.
  • 삭제 이상 : 학번 103의 수강정보를 삭제하면 과목 301에 대한 정보도 삭제된다.

정규화후

학번 과목코드 성적
101 101 A
101 102 A
102 201 B
102 202 A
103 301 C
104 302 A
105 103 A
학번 학과 조교
101 컴퓨터 a
102 통계학 b
103 경영학 c
104 경영학 c
105 컴퓨터 a
과목코드 교수 강의실
101 A A101
102 B A102
201 C B201
202 D B202
301 E C301
302 F C302
103 G A103

 


제3 정규형 (3NF)

기본키를 제외한 속성들 간의 이행 종속성을 없앤다.

릴레이션에서 X, Y, Z라는 3 개의 속성이 있을 때 X→Y, Y→Z 이란 종속 관계가 있을 경우, X→Z가 성립될 때 이행 종속성을 가진다고 한다.

 

문제 테이블

학번 학과 조교
101 컴퓨터 a
102 통계학 b
103 경영학 c
104 경영학 c
105 컴퓨터 a
  • 삽입 이상 : 학과와 해당 조교를 추가할 때 소속 학생이 존재해야 한다.
  • 갱신 이상 : 조교가 변경되는 경우 해당 학과를 모두 탐색 후 변경하여야 한다.
  • 삭제 이상 : 102 학생이 삭제되면 통계학과 그의 조교 정보가 삭제된다.

정규화후

학번 학과
101 컴퓨터
102 통계학
103 경영학
104 경영학
105 컴퓨터
학과 조교
컴퓨터 a
통계학 b
경영학 c
경영학 c
컴퓨터 a

 


BCNF (Boyce-Codd Normal Form)

후보키 집합을 제외한 속성이 결정자가 되어선 안된다.

학번 교수 과목코드
101 A 101
101 B 102
102 C 201
102 D 202
103 E 301
104 F 302
105 G 103
  • 삽입 이상 : 과목이 신설되어도 학생이 없으면 추가가 불가능하다.
  • 갱신 이상 : 교수가 변경될시 모두 탐색후 갱신해야 한다.
  • 삭제 이상 : 105 학생이 삭제되면 교수 G의 정보와 과목도 삭제된다.

정규화후

학번 교수
101 A
101 B
102 C
102 D
103 E
104 F
105 G
교수 과목코드
A 101
B 102
C 201
D 202
E 301
F 302
G 103

 


장점

  • 이상현상 제거
  • 데이터 안정성 및 무결성 유
  • 불 필요한 쿼리 제거

단점

  • 릴레이션 분해로 인해 Join연산이 많아질 가능성이 있다.