한 릴레이션에서 여러 엔티티의 속성들을 혼합하게 되면 정보가 중복 저장되며, 저장 공간을 낭비하게 된다. 중복된 정보로 인해 갱신 이상이 발생하게 된다. 이런 문제를 해결하기 위해 정규화 과정을 거친다.
갱신 이상의 종류
중복을 최소화하기 위해 데이터를 구조화하는 작업. 좋은 작은 릴레이션으로 분해하는 작업이다.
나쁜 릴레이션은
엔티티를 구성하고 있는 속성 간에 함수적 종속성으로 판단한다.
함수적 종속성
X와 Y를 임의의 속성 집합이라고 할 때, X의 값이 Y의 값을 유니크하게 결정한다면 X는 Y를 함수적으로 결정한다고 한다.
실세계에서 존재하는 속성 사이의 제약조건으로부터 유도된다.
장점
단점
릴레이션 분해로 인해 join연산이 많아진다.
각 로우마다 컬럼의 값이 1개씩만 가지는 경우.
각 컬럼이 원자값을 가진다고 할 수 있다.
기본 키를 제외한 컬럼들이 기본 키에 대해서 완전 함수적 종속이면 된다. 즉, 키가 아닌 열들이 각각 후보 키에 대해 결정되는 릴레이션 형태
비주요 속성도 기본 키에 대해서 이행적으로 종속되지 않으면 된다. 기본키 이외의 다른 컬럼이 그외 다른 컬럼을 결정할 수 없다.
여러 후보 키가 존재하는 릴레이션에 해당하는 정규화 내용이다. 3차정규형을 만족하면서 모든 결정자가 후보키(기본키로 사용할 수 있는 속성) 집합에 속한 정규형