관련이 없는 속성을 하나의 릴레이션에 모아두면 문제가 발생할 수 있다. [ 이상현상 : 데이터 중복 등 ]
해결책은 하나의 릴레이션에 관련없는 속성이 들어가지 않게 하고, 친한 속성끼리 릴레이션을 구성해주면 된다. [정규화]이때 친밀도를 판단하는 방법이 필요하다.
[ 이상 현상의 종류 ]
삽입 이상 | 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제 |
갱신 이상 | 중복 투플 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제 |
삭제 이상 | 투플을 삭제하면 꼭 필요한 데이터까지 함께 삭제되는 데이터 손실의 문제 [ 연쇄 삭제 현상 : 삭제 이상 ] |
정규화는 이상 현상이 발생하지 않도록, 릴레이션을 관련이 있는 속성들로만 구성하기 위해 릴레이션을 분해하는 과정이다. 우선 분해하기전에 릴레이션의 속성들 간의 친밀도를 고려해야하며, 이를 함수적 종속성 이라고 한다.
[ 함수 종속 ]
릴레이션 내의 모든 투플에서 하나의 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 |