DataBase 정규화 과정
릴레이션의 분해로 인해 Join연산이 늘어날 수 있다.
쿼리시 응답시간이 느려질 수 있다.
데이터의 중복속성을 최대한 제거하는 것 이기때문에, 속성이 하나의 테이블에 집약되므로 데이터 용량이 최소화 되어 상황에따라 처리속도가 빨라질 수도 있고, 느려질 수도 있다. 만약 조인이 만연하여 속도저하가 발생하게 된다면 반정규화를 통해 속도를 개선할 수 있다.
해당 테이블의 기본키는 (학생번호, 강좌이름)으로 복합키 이다.
성적은 (학생번호, 강좌이름)인 기본키가 결정하지만,
강의실은 기본키의 부분집합인 강좌이름이 결정하게 된다.
즉, 부분집합이 결정자가 되지 않도록 테이블을 분리시키는 것으로 완전 함수 종속을 만족시킬 수 있다.
그 경우 테이블을 분리하여 데이터 변경시에 다른 데이터까지 변경되는 상황을 막을 수 있다.
특수 수강 테이블에서 기본키는 (학생번호, 특강이름)이다. 그리고 기본키는 교수를 결정하고 있다.
또한, 여기서 교수는 특강이름을 결정하고있다.
문제는 교수가 특강이름을 결정하는 결정자 이지만, 후보키가 아니다. 그렇기 때문에 BCNF 정규화를 만족시키기 위해서는 테이블을 분해하여 아래와 같이 분리할 수 있다.
그 이상 정규화를 진행하면 오히려 정규화의 단점이 더 커지기 때문이다.