본문 바로가기
전공수업/데이터베이스 [DB]

제 9장 ] 정규화

by wonseok99 2019. 11. 11.

관련이 없는 속성을 하나의 릴레이션에 모아두면 문제가 발생할 수 있다. [ 이상현상 : 데이터 중복 등 ]

해결책은 하나의 릴레이션에 관련없는 속성이 들어가지 않게 하고, 친한 속성끼리 릴레이션을 구성해주면 된다. [정규화]이때 친밀도를 판단하는 방법이 필요하다. 

 

[ 이상 현상의 종류 ]

삽입 이상 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제
갱신 이상 중복 투플 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제
삭제 이상 투플을 삭제하면 꼭 필요한 데이터까지 함께 삭제되는 데이터 손실의 문제
[ 연쇄 삭제 현상 : 삭제 이상 ]

정규화는 이상 현상이 발생하지 않도록, 릴레이션을 관련이 있는 속성들로만 구성하기 위해 릴레이션을 분해하는 과정이다. 우선 분해하기전에 릴레이션의 속성들 간의 친밀도를 고려해야하며, 이를 함수적 종속성 이라고 한다.

 

 

[ 함수 종속 ]

릴레이션 내의 모든 투플에서 하나의 X 값에 대해 Y 값이 항상 하나면 " X가 Y를 함수적으로 결정한다. "

[ 결정자 ]   X  ->  Y  [ 종속자 ]

 

[ 완전 함수 종속 ]

릴레이션에서 속성 집합 Y가 속성 집합 X 전체에 종속된 것을 말한다.

EX ] 고객이름 --> 고객 아이디   //   { 고객아이디, 이벤트번호 } --> 당첨여부

[ 부분 함수 종속 ] 

속성 집합 Y가 속성 집합 X의 일부분에 함수적으로 종속됨을 의미한다.

EX ] 고객이름 --> { 고객아이디, 이벤트번호 }

 

 

[ 정규형과 정규화 과정 ]

 각 정규형마다 만족시켜야 하는 제약조건이 존재한다. 정규형의 차수가 높아질수록 요구되는 제약조건이 많아지고 엄격해지며, 일반적으로 차수가 높은 정규형에 속하는 릴레이션일수록 데이터 중복이 줄어 이상 현상이 발생하지 않는 바람직한 릴레이션이다.

 

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

한마디로 릴레이션에 속한 모든 속성이 더는 분해되지 않는 원자 값만을 가져야 한며 다중 값을 가지는 속성을 포함하지 않아야 한다.

 

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

제 1 정규형에 속하는 릴레이션이 제 2정규형을 만족하게 하려면, 부분 함수 종속을 제거하고 모든 속성이 기본키에 완전 함수 종속되도록 릴레이션을 분해하는 정규화 과정을 거쳐야 한다.
 즉 제 1정규형을 거쳐 완전 함수 종속이 되지 못한 속성의 값을 가진 릴레이션을 정규화 과정을 거쳐야 하는것이다.

이렇게 분해된 릴레이션들은 자연 조인을 통해 원래의 릴레이션으로 다시 복원할 수 있어야하며, 정보의 손실없이 분해하는 것을 무손실 분해라고 한다.

 

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

이행적 함수 종속 :  속성 A, B, C가 있을 때  A -> B -> C 로 함수 종속 관계가 형성되면 A -> C 가 성립한다. 이때 속성
                         C가 속성 A에 이행적으로 함수 종속 되었다고 한다.  한마디로 C가 A에도 종속, A에 종속된 B에도 종
                         속이 되어있는 경우.

이러한 관계 A -> B -> C 를  A -> B,  B -> C 관계로 분해하여 이행적 함수 종속 문제를 해결하면 제 3 정규형을 만족하게 된다.

'전공수업 > 데이터베이스 [DB]' 카테고리의 다른 글

케라스와 신경망  (0) 2019.11.29
제 10장] 회복과 병행 제어  (0) 2019.11.19
제 8장] DB 설계  (0) 2019.11.10
제 7장 ] DB언어 SQL  (0) 2019.10.19
ORACLE 오류 ] ORA - 12505  (0) 2019.10.17