정규화란?
정규화란 데이터의 중복을 제거하는 작업이며 함수종속 등의 개념과 관계가 있다. 함수종속은 키와 밀접한 연관이 있다. 함수 종속의 결정자가 키가 되도록 릴레이션을 분해하는 과정이 정규화이때문이다. 키가 아닌 모든 속성이 키에 직접 종속되도록 분해하는 것이 정규화라고 할 수 있다. 임의의 릴레이션에서 결정자를 찾지 못하면 정규화를 할 수 없고 키가 없이는 엔터티가 될 수 없으므로 키와 함수 종속은 밀접한 관계가 있다.
정규형
정규화 수준에 따라 제1정규형, 제2형규형, 제3정규형, B.C.정규형, 제4정규형, 제5정규형 등이 있다.
제 1 정규형
모든 속성이 반드시 하나의 값을 가진다면 제1정규형이라고 할 수 있다. 이 말은 모든 속성은 원자값이어야 한다는 말과 동일하며, 모든 속성이 원자값이 되려면, 다가속성과 복합속성을 제거해야한다.
다가속성은 같은 값이 여러개인 것을 말하는데 한 필드내의 동일한 속성의 값이 여러개 있는 것이다. (ex. 전화번호: 02-000-0000, 053-000-0000) 복합속성은 분리 가능한 하나의 값을 말한다. (ex. 서울특별시 강남구 -> 서울특별시와 강남구로 구분이 가능하다)
복합속성의 경우 업무에 따라 제거하지 않는 것이 좋을 때가 있는데 위의 주소에 경우에도 보통은 제거하지 않는 것이 좋으나 시, 구로 통계를 내는 것이 주 업무라면 분리하는 것이 좋다
제 2 정규형
모든 속성이 후보식별자 전체에 종속적이면 제2정규형이라고 한다. 모든 비식별자 속성은 후보식별자 속성에 완전 함수 종속되어야한다. 다시 말해 부분 함수 종속을 제거하면 된다.
제 3 정규형
이행적 종속 관계가 없다면 제3정규형에 만족한다고 할 수 있다. 이행적 종속 관계랑 X가 Y의 결정자일 때 Y가 Z의 결정자라면 X가 Z의 결정자(X->Y->Z)가 성립하는 것을 말한다. 즉, 일반속성이면서 결정자인 속성을 기준으로 릴레이션을 분리하면 된다.
B.C. 정규형
제3정규형과 비슷하나 조금 더 엄격한 정규형이다. 제3정규형에 만족하더라도 B.C. 정규형에는 만족하지 않을 수 있으며, B.C. 정규형에 만족할 경우 무조건 제3정규형에 만족한다.
모든 결정자가 주식별자라면 B.C.정규형을 만족한다고 볼 수 있다.
제 4 정규형
4정규형은 다가 종속을 바탕으로 릴레이션을 분해하면 만족시킬 수 있다. 다가 종속이란, 다가 속성이 2개 이상 한 릴레이션에 존재할 때 발생 할 수 있는데, 속성 A값 중 하나가 속성 B의 여러 값을 결정하면 A->->B로 표시하며, 다가 종속이라고 볼 수 있다.
제 5 정규형
제4정규형이 다가종속의 제거라면, 제5정규형은 조인종속을 제거한다면 만족시킬 수 있다. 조인종속이란 하나의 릴레이션을 여러개의 릴레이션으로 분해하였다가, 다시 조인했을 때 데이터 손실이 없고 필요없는 데이터가 생기지는 것을 말한다.
모델링 작업이 종료된 이후 조인을 했을 때도 이전과 동일하다면 만족한다고 볼 수 있다. 제5정규형은 지나치게 이상적인 정규형으로 실무에서 보기는 힘들다.