반복적인 데이터를 분리하고 각 데이터가 종속된 테이블에 적절하게 배치되도록 하는 것.
데이터의 중복속성을 제거하고 결정자에 의해 동일한 의미의 일반속성이 하나의 테이블로 집약되므로 한 테이블의 데이터 용량이 최소화되는 효과가 있다.
따라서 정규화된 테이블은 데이터를 처리할 때 속도가 빨라질 수도 있고 느려질 수도 있는 특성이 있다.데이터 처리(DML)의 성능은 향상되고, 조회는 향상 또는 저하될 수 있다.
릴레이션에 속한 모든 속성의 도메인이 원자 값으로만 이루어져 있으면 제1정규형을 만족한다.
도메인 : 하나의 속성이 가질 수 있는 모든 값.
ex) 성별 속성에 F,M 또는 고등학교 학년이라는 속성에 1학년,2학년,3학년도메인의 개수가 유한한 경우도 있지만 무한한 경우도 있다.
원자 값 : 속성값이 더 이상 논리적으로 분해될 수 없는 값.
릴레이션에서의 모든 열과 행의 위치에서 있는 데이터 값은 단 하나의 값만 가질 수 있다.
ex)고등학교 학년 이라는 속성이 도메인으로 {1학년,2학년}과 같이 다중값을 가질 수 없다.
릴레이션이 제1정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 완전함수 종속되면 제2정규형에 속함.
- 완전함수 종속
기본키를 구성하는 모든 속성이 있어야만 기본키가 아닌 다른 속성이 결정되는 것.- 부분함수 종속
기본키의 일부만 있어도 기본키 외의 다른 속성이 결정되는 것.
ex)
테이블1[학번,과목번호,성적,등급,교수명]
위와 같은 릴레이션이 있다고 할 때
성적과 등급이 결정되려면 학번, 과목번호 속성이 모두 있어야 하며, 이와 같은 관계를 완전함수 종속이라고 한다.
교수명 같은 과목번호만 있어도 어떤 수업인지 알 수 있으니 학번을 굳이 알 필요가 없다.
이러한 관계를 부분함수 종속이라고 하며
제2정규형을 만족한 테이블의 형태는 아래와 같다.
테이블1[학번,과목번호,성적,등급]
테이블2[과목번호,교수명]
릴레이션이 제2정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속이 되지 않으면 제3정규형
- 이행적 함수 종속
A➡B, B➡C 이란 종속 관계가 있을 경우, A➡C 가 성립되는 종속관계
즉, A를 알면 B를 알고 그를 통해 C를 알 수있는 경우
ex)
상품번호 | 상품명 | 소분류 | 대분류 |
---|---|---|---|
A001 | 검은 셔츠 | 상의 | 의류 |
A002 | 기계식 키보드 | 키보드 | 전자제품 |
A003 | 치킨 버거 | 햄버거 | 식품 |
이행적 함수 종속이 있으면 데이터베이스의 시스템 혹은 논리적 구조에 문제가 발생할수 있고, 이를 흔히 이상 현상이라고 한다.
이상 현상 : 데이터베이스에서 데이터의 삽입 수정 삭제 연산을 수행할 때 발생할 수 있는 문제.
삽입 이상 : 새로운 소분류와 대분류의 정보를 넣고 싶은데 아직 상품이 정해져 있지 않을 경우 상품번호가 없으면 개체 무결성 위반(기본키는 null값을 허용하지 않음)이기 때문에 삽입할 수 없다.
수정 이상 : 햄버거의 대분류를 식품에서 패스트 푸드로 변경하고자할 때 모든 데이터에 대해서 일괄적으로 변경해야한다. 그렇지 않으면 데이터 불일치의 오류가 발생한다.
삭제 이상 : 특정 상품번호를 삭제하고 싶은데 어떤한 대분류 혹은 소분류의 정보를 가진 상품번호가 하나 밖에 존재하지 않을 때, 상품번호만 삭제하고싶지만 상품명, 소분류, 대분류가 같이 삭제되는 문제가 발생한다.
릴레이션이 제3정규형에 속하고 함수 종속 관계에서 모든 결정자가 후보키이면 보이스코드 정규형에 속한다.