
평가영역
정규형 순서 (도-부-이-결-다-조)
모든 정규형은 이전 정규형을 만족한다.
(예: 제2정규형은 제1정규형을 만족하면서 부분 함수종속도 제거됨)
제1정규형
하나의 컬럼 안에 값이 여러개 있는경우를 제거
제2정규형
부분적 함수적 종속을 제거예) (강좌번호, 수강자)가 기본키일때
"학점" 컬럼은 기본키에 완전 함수적 종속이지만(강좌번호와 수강자 모두 있어야 키가 성립)
"주관학과", "강의실 번호"는 (강좌번호)에만 종속되므로(강좌번호 하나로만으로도 키가 성립) 부분적함수 종속이다.
제3정규형
세개의 속성 사이에 존재하는 이행적 함수종속을 제거
예) (강좌번호)가 기본키이고 "주관학과"와 "강의실 번호"속성이 있을때
상태가 되는데, 이럴경우 강좌가 폐지되면 강의실 정보가 사라지게 되거나 특정학과의 강의실을 생성하려면 강좌를 생성해야한다.
"주관학과"컬럼만으로 "강의실 번호"를 종속하므로
두개의 테이블로 분리하게 되면 이행적 함수종속이 제거된다.
BCNF
기본키가 합성키(속성 2개이상)이고 합성키가 둘 이상일때 발생하는 문제점
= 합성키가 두개이상 있고 합성키들 끼리 공통된 컬럼을 포함할때
예) (학번, 과목, 교수명) 테이블은
상태인데 과목별 수강신청자가 없으면(학번 데이터가 없으면) 교수와 과목 데이터가 생성될 수 없는 문제가 발생한다. 따라서
세개의 테이블로 분리하게 되면 BCNF를 만족한다.
정규화의 예
https://code-lab1.tistory.com/48
기본 정규화의 정리
개념
목적