Halo World

정규화 본문

개발 지식/DATABASE

정규화

_Yeony 2017. 6. 1. 20:53

 

| 정규화란?

  릴레이션을 연관성이 있는 속성들로만 구성되도록 분해해서, 이상 현상이 발생하지 않는 올바른 릴레이션으로 만들어나가는 과정으로 정규화의 기본 목표는 관련이 없는 함수 종속성은 별개의 릴레이션으로 표현하는 것

 

* 이상현상

 1) 삽입 이상

   : 릴레이션에 새 데이터를 삽입하기 위해 원치 않는 불필요한 데이터도 함께 삽입해야 하는 문제

 

 2) 갱신 이상

   : 릴레이션의 중복된 튜플들 중 일부만 수정하여 데이터가 불일치하게 되는 모순이 발생하는 것

 

 3) 삭제 이상

   : 릴레이션에서 튜플을 삭제하면 꼭 필요한 데이터까지 함께 삭제하여 데이터가 손실되는 연쇄 삭제 현상

 

 

 

| 제 1정규형(1NF)

 

 릴레이션에 속한 모든 속성의 도메인이 원자 값으로만 구성되어있으면 제 1정규형에 속함

 * 원자 값 : 더이상 분해되지 않는 값

 

 

 

 

| 제 2정규형(2NF)

 

 릴레이션이 제 1정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 완전함수종속되면 제 2정규형에 속함

 * 완전 함수 종속

   : A와 B가 릴레이션 R의 속성이고, A -> B 종속성이 성립할 때, B가 A의 속성 전체에 함수 종속하고, 부분 집합 속성에 함수 종속하지 않을 경우 완전 함수 종속이라고 함

 

 위의 그림은 (학생번호, 강좌이름) -> 성적, 강좌이름 -> 강의실의 함수 종속을 갖고 있기 때문에, 부분적 함수 종속이 발생

 

 

 

 

 

| 제 3정규형(3NF)

 

 릴레이션이 제 2정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속이 되지 않으면 제 3정규형에 속함

 * 릴레이션을 구성하는 세 개의 속성 집합 X,Y,Z에 대해 함수 종속 관계  X->Y와 Y->Z가 존재하면 논리적으로 X->Z가 성립하는데, 이를 속성 집합 Z가 속성 집합 X에 이행적으로 함수 종속되었다고 함

 

 위의 릴레이션은 이행적 함수 종속을 포함하고 있음

 

 

 

 

| 보이스/코드 정규형(BCNF) = 강한 제 3정규형

 

 릴레이션의 함수 종속 관계에서 모든 결정자가 후보키이션 보이스/코드 정규형에 속함

 

 기본키인 {학생번호, 특강이름}이 교수 속성을 함수적으로 결정하고, 교수 속성 또한 특강이름 속성을 함수적으로 결정한다. 그러나, 교수 속성은 후보키가 아니므로 모든 결정자가 후보키가 아님

 

 

 

 

| 제 4정규형(4NF)

 

 보이스/코드 정규형을 만족하면서, 함수 종속이 아닌 다치 종속을 제거할 경우 만족

 

 

| 제 5정규형(5NF)

 제 4정규형을 만족하면서 후보키를 통하지 않는 조인 종속을 제거할 경우 만족

 

 

 

* 무손실 분해

 - 정규화 과정에서 릴레이션을 분해할 때 무손실 분해를 해야함

 - 분해된 릴레이션들을 자연 조인하여 분해 전의 릴레이션으로 다시 복원할 수 있어야 한다는 것

 - 즉, 릴레이션이 의미적으로 동등한 릴레이션들로 분해되어야 하고, 릴레이션의 분해로 인해 정보의 손실이 발생하지 않아야함

 

* 제 1정규형부터 보이스/코드 정규형까지는 기본 정규형에 속하고, 제 4정규형과 제 5정규형은 고급 정규형에 속하는데, 일반적으로는 기본 정규형에 속하도록 릴레이션을 정규화함

 

 

 

 

출처 : 데이터베이스 개론 / 한빛아카데미 / 김연희

 

'개발 지식 > DATABASE' 카테고리의 다른 글

관계 데이터 모델의 제약조건  (0) 2017.06.02
반정규화의 개념, 수행이유 및 절차  (0) 2017.06.01