7 Sep 2020
데이터베이스 정규화
정규화란?
정규화정의
테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해 하는
과정이다.
무손실 분해란 테이블 R의 프로젝션(특정 테이블에서 일부 속성들만 추출하여 만든 테이블)인 R1,R2가 nature join 을 통해 원래의 테이블R로 정보 손실 없이 복귀 되는 경우 R은 R1과 R2로 무손실 분해 되었다고 한다.
정규화의 목적
가능한 한 중복을 제거하여 삽입,삭제,갱신 이상의 발생 가능성을 줄이는 것이다.
정규화의 단점
join연산 증가로 인한 조회시 응답시간 증가
정규화의 종류와 설명
1NF
테이블에 속한 모든 속성의 도메인이 원자 값만으로 되어있는 정규형이다.
2NF
기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형이다.
즉, pk->A B->A 일때 A는 기본키외에도 다른속성에 의해서 결정되므로 정규화로
테이블을 나눠야 한다.
3NF
기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는
정규형이다
즉, 기본키에 대해 이행적 함수 종속이면 3NF를 만족하지 못한다. pk->A , A->B , pk->B 이므로 B는 기본키에 대해서 이행적 함수적 종속을 만족한다. 이행적 함수종속 이란 A->B B->C A->C 을 만족하는 관계를 이행적 함수종속이라 한다.
BCNF
모든 결정자가 후보키인 정규형이다.
4NF
테이블에 다중값 종속 A->->B가 존재할 경우 테이블의 모든 속성이 A에 함수적 종속 관계
를 만족하는 정규형이다.
A,B,C 3개의 속성이 있을때 복합속성(A,C)에 대응 하는 B값의 집합이 A값에만 종속되고 C값에는 무관하면 B는 A에 다중값 종속이라 한다.
5NF
테이블의 모든 조인 종속이 테이블의 후보키를 통해서만 성립되는 정규형이다.
어떤 테이블의 속성에 대한 부분 집합 X,Y,Z.. 가있을때 만일 테이블R이 자신의 프로젝션 X,Y,Z..을 모두 조인한 결과가 동일한 경우 테이블은 조인종속을 만족한다고 한다.