이상현상이 있는 DB테이블을 분해하여 이상현상을 없애는 과정. 즉, 중복을 최소화하기 위해 데이터를 구조화하는 작업.
테이블의 컬럼이 원자값(Atomic value, 원자값) 을 갖도록 분해하는 것
조건
1. 어떤 릴레이션에 속한 모든 도메인이 원자값만으로 되어 있어야 한다.
2. 모든 속성에 반복되는 그룹이 없어야 한다.
3. 기본키를 사용하여 관련 데이터의 각 집합을 고유하게 식별할 수 있어야 한다.
예시)
원자값을 만족하지 않은 테이블
제 1정규화를 만족한 테이블
테이블의 모든 컬럼이 완전 함수적 종속을 만족해야 한다.
여기서 완전 함수적 종속이란, 기본키의 부분집합이 결정자가 되어선 안된다는 것을 뜻한다.
쉽게 말해서 어떤 테이블의 기본키가 복합키(두 개 이상의 컬럼으로 구성된 키)일 때, 기본키의 부분집합으로 기본키의 부분집합으로 인해 다른 칼럼의 값이 결정되어서는 안된다는 것이다.
조건
1. 제 1정규화를 만족해야 한다.
2. 모든 칼럼이 완전 함수적 종속을 만족해야 한다.
예시)
제 2정규화를 만족하지 않은 테이블
이 테이블의 기본키는 {학생번호, 강좌이름}이라는 복합키이며 성적을 결정한다.
그런데 여기서 강의실컬럼은 기본키의 부분집합인 {강좌이름}에 의해 결정된다.
제 2정규화를 만족한 테이블
기존의 테이블엣 강의실을 분해하여 별도의 테이블을 만들어야한다.
제 2정규화를 진행한 테이블에 대하여 이행적 종속이 없도록 테이블을 분해하는 것이다.
이행적 종속이란, A -> B, B -> C가 성립할 때 A -> C가 성립한느 것을 의미한다.
조건
1. 제 2정규화를 만족해야 한다.
2. 기본키가 아닌 속성들은 기본키에 의존한다.
예시)
현재 기본기는 {Tourment, Year}이다.
Winner는 이 두 복합키를 통해 결정된다. 하지만 Winner Date of Birth
는 기본키가 아닌 Winner
에 의해 결정되고 있다.
따라서 위와 같이 2개의 테이블로 분리하여 나타내야 제 3정규화를 만족할 수 있다.
Boyce and Codd Normal Form의 약자. 3차 정규형을 조금 더 강화한 버전이라고 볼 수 있다. 이는 3차 정규형으로 해결할 수 없는 이상현상을 해결할 수 있다.
조건
1. 제 3정규화를 만족해야 한다.
2. 모든 결정자가 후보키 집합에 속한 정규형이다.
예시)
특강수강 테이블에서 기본키는 {학생번호, 특강이름}이다. 그리고 기본키가 교수
를 결정하고 있다. 또한 여기서 교수는 특강이름
을 결정하고 있다.
문제는 교수
가 특강이름
을 결정한느 결정자이지만, 후보키가 아니라는 것이다.
위와 같이 특강신청 테이블, 특강교수 테이블로 분해가 가능하다.