관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 정규화(Normalization)라고 한다. 즉, 이상현상이 발생하는 릴레이션을 분해하는 과정이다. 이상이 있는 관계를 재구성하여 작고 잘 조직된 관계를 생성하는 것이다. 함수적 종속성을 판단하여 정규화를 수행하기도 한다. 정규화를 거친 결과를 정규형 이라고 한다.
이상현상의 종류
불필요한 데이터 중복으로 인해 릴레이션에 대한 데이터 삽입 수정 삭제 연산을 수행할 때 발생할 수 있는 부작용이다.
▶ 삽입 이상 (Insertion anomaly)
릴레이션에 새 데이터를 삽입하려면 불필요한 데이터도 함께 삽입해야 하는 문제
▶ 갱신 이상 (Update anomaly)
릴레이션의 중복된 튜플들 중 일부만 수정하여 데이터가 불일치하게 되는 모순이 발생되는 문제
▶ 삭제 이상 (Deletion anomaly)
릴레이션에서 튜플을 삭제하면 꼭 필요한 데이터까지 손실되는 연쇄 삭제 현상이 발생하는 문제
함수의 종속성
함수 종속은 엔티티 내에 존재하는 속성 간의 종속성을 의미한다. 속성들 간의 관련성.
함수 종속성을 이용하여, 릴레이션을 연관성이 있는 속성들로만 구성되도록 분해하여 이상현상이 발생하지 않는 릴레이션으로 만들어가는 과정이다.
X가 Y를 함수적으로 결정한다.
Y가 X에 함수적으로 종속되어 있다.
▶ 함수 종속 관계 판단
속성 값은 계속 변할 수 있으므로 현재 릴레이션에 포함된 속성 값만으로 판단하면 안된다.
일반적으로 기본키와 후보키는 릴레이션의 다른 모든 속성들을 함수적으로 결정 하지만 기본키나 후보키가 아니어도 다른 속성 값을 유일하게 결정하는 속성은 함수 종속 관계에서 결정자가 될 수 있음.
☞ 결정자와 종속자가 같거나, 결정자가 종속자를 포함하는 것처럼 당연한 함수 종속관계는 고려하지 않는다.
▶ 완전 함수 종속 (Full Functional Dependency)
릴레이션에서 속성 집합 Y가 속성 집합 X에 함수적으로 종속되어 있지만 일반적으로 함수 종속은 완전 함수 종속을 의미한다.
▶ 부분 함수 종속 (Partial Functional Dependency)
릴레이션에서 속성 집합 Y가 속성 집합 X의 전체가 아닌 일부분에도 함수적으로 종속됨을 의미한다.