[데이터베이스(DB)]정규화란?

2020. 8. 14. 09:37데이터베이스(DB)

 

정규화

이상현상이 발생하는 릴레이션은 분리하여 이상현상을 제거하는 과정

(이상현상: 릴레이션에 두 개 이상의 정보가 들어가 생기는 상황이다. 삽입을 할 때 부득이하게 NULL값이 들어가거나 데이터 삭제 시 연쇄적으로 삭제되거나 데이터를 수정 시 일관성이 훼손되는 상황이 이상현상의 예이다.)

 

 


 

정규형

제 1 정규형 : 릴레이션의 속성 값이 원자 값을 가지는지 판단

1) 원자값을 가져야 이상현상이 발생하지 않는다.

2) 원자값 : 속성 값을 들 더는 분리할 수 없는 경우, 즉 속성은 단일 값을 가지는 경우를 말한다. 

 

제 2 정규형 : 릴레이션의 기본키가 복합키일 경우 완전 함수 종속을 만족하는지 판단

1) 완전 함수 종속을 만족해야 이상현상이 발생하지 않는다.

2) 완전 함수 종속 : 복합키의 부분 키들이 결정자가 되지 않는 경우로 예를 들어 (A1, A2)→B일때 A1→B 또는 A2→B를 만족하지 않아야한다.

예를 들어 학생번호와 학생이름이 함수 종속성을 가지고 있고 강좌와 강의시간이 함수 종속성을 가지고 있을 때,

 

 

학생번호와 강좌가 기본키이면서 복합키일때, 강좌를 제외하여도 학생번호랑 학생이름은 여전히 함수 종속성을 만족시킨다. 이러한 상황을 불완전 함수 종속이라고 하며, 불완전 함수 종속이 있는 경우 이상현상이 발생한다.

(불완전 함수 종속 : 복합키의 부분키들이 결정자가 되는 경우로 (A1, A2)→B일때 A1→B 또는 A2→B를 만족하는 상황을 말한다.)

 

제 3 정규형 : 속성들이 이행적인 관계를 만족하는지 판단

1) 이행적인 관계를 만족하면 이상현상이 발생한다.

2) 이행적 : 종속적 규칙 중 하나로 A→B, B→C일때 A→C를 만족하는 상황을 말한다.

 

 

강좌를 알면 강의시간을 알고 강의시간을 알면 강사명을 알 수 있을 때 강좌를 알면 강사명을 유추할 수 있다는 것이 이행적 관계이다.

 

BCNF 정규형 : 결정자가 후보키인지 판단

1) 결정자이면 기본키여야 한다. 후보키인 경우 이상현상이 발생할 수 있다.

2) A와 C는 키본키이고 B가 후보키인 경우, (A , C)→B가 있는 상황에서 B→C이면 결정자가후보키이므로 이상현상이 발생한다. 예를 들어 강좌와 강의교실이 기본키이며 강사명은 후보키인 경우

 

 

 

강사명이 강의교실의 결정자이지만 강사명은 기본키가 아니라 후보키인 경우 BCNF 정규형에 해당한다.

 

 

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

[Mysql] mysql 유저 접근 및 DB, 테이블 확인  (0) 2020.05.08