티스토리 뷰

정규화

  테이블을 분리하지 않는다면 중복 데이터가 들어가 메모리를 차지할 수 있다. 중복 데이터로 저장

  되는 것을 방지하기 위해 테이블을 분리하는 과정을 거치는데 이를 정규화라고 한다.

제 1 정규화

  테이블의 각 컬럼은 원자성을 만족시켜야 한다. 쉽게 말해서 한 컬럼에 1개 속성만 저장해야한다. 

제 1 정규화 : 원자성 만족시키기

  위의 경우 회원은 여러개의 관심 분야를 가지고 있으므로 회원 테이블은 제 1 정규화 대상이다. 원자성을 만족시키

  기 위해 회원 관심사 테이블을 만들어야한다. 회원 ID와 관심분야 각각으로 컬럼을 구별할 수 없기 때문에 회원 관

  심사 테이블의 기본키는 [ 회원 ID, 관심분야 ] 로 설정해야한다.

제 2 정규화

  정규화된 테이블에서 완전 함수적 종속을 만족시키도록 테이블을 분리하는 과정이다. 완전 함수적 종속은 기본키

  의 부분집합이 결정자여서는 안된다라는 특징이다. 

  

제 2 정규화 : 완전 함수적 종속을 만족시켜야 한다

  한사람이 여러개의 과목을 들을 수 있기 때문에 수강 과목의 기본키는 [ 회원 ID, 수강과목 ] 이다. 완전 함수적 종속

  을 만족시키기 위해서는 기본키의 부분집합이 결정자여서는 안된다는 것이다. 기본키의 부분집합은 회원 ID, 수강과

  목 이다. 회원 ID로 담당강사, 성적을 결정할 수 없기 때문에 회원 ID는 완전 함수적 종속을 만족시키짐나 수강과목

  은 (담당강사가 과목과 1:1이라고 가정) 담당 강사를 결정할 수 있기 때문에 완전 함수적 종속을 만족시키지 않는다.

제 3 정규화

  테이블의 이행적 종속 관계인 테이블을 분리하는 과정이다. 이행적 종속관계는 A → B , B → C 일 때

  A → C를 만족시키는 특징을 가지고 있다. 

제 3 정규화 : 이행적 종속 관계 제거

  회원 테이블은 완전 함수적 종속 관계를 만족한다. 그러나 회원 테이블에서 회원ID가 회원 등급을, 회원등급은

  할인율을 결정하기 때문에 이행적 종속 관계에 해당된다. 이를 제거하여 회원과 등급 테이블로 분리하였다.

BCNF

  제 3 정규화를 만족시키면서 후보키가 아닌 속성이 결정자 라면 BCNF 정규화로 테이블을 분리해야한다. 

BCNF : 결정자가 후보키여야 한다.

  책 이름은 같지만 출판사가 다른 경우가 있다. 책 테이블은 [ 책이름, 출판사 ] 를 기본키로 갖는다. 책 테이블의 출

  판사 대표 속성은 출판사를 결정하는데 후보키가 아니므로 해당 테이블은 BCNF를 만족하지 않는다. 그렇기 때문에 

  해당 테이블은 책과 출판사 테이블로 분리해야한다.

'데이터베이스' 카테고리의 다른 글

[MySQL] MySQL 아키텍처 (1)  (0) 2022.03.26
[DB] 데이터베이스 JOIN  (0) 2022.03.12
[DB] 인덱스(Index)의 자료구조  (0) 2022.02.12
[DB] 인덱스 개념  (0) 2022.02.09
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
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
글 보관함