존나 어렵네 시발...
수크라제 성님 힘내랑께요?? ㅎㅎㅎ
출처 http://beansberries.tistory.com/m/post/32
더 자세한건 여기 가서 보면 될듯..
아주 조혼나 어려워 씨발. 진짜..
정규화 BCNF
릴레이션 R의 모든 결정자가 후보키이면 릴레이션 R은 보이스/코드 정규형(BCNF)에 속한다.
BCNF에 속하는 릴레이션은 모두 제3정규형에 속한다. 그러나 제3정규형에 속하는 릴레이션이 모두 BCNF에 속하지는 않는다. BCNF는 제3정규형보다 강력하다고 볼 수 있고, BCNF를 "강한 제3정규형"이라고도 한다. 1NF, 2NF, 기본키, 이행종속 등의 개념을 이용하지 않고 정의되기 때문에 3NF보다 간단하다. 복합속성을 허용한다.
기본키 : 학번, 과목번호
이 수강과목 릴려이션은 당연히 1NF이며 기본키{학번, 과목번호}에 속하지 않으면서 키에 완전 종속이 아닌 애트리뷰트도 없고, 이행 종속이 없으므로 2NF 이면서 3NF이다. 그러나 BCNF는 아니다.
삽입이상
교수 P5가 자료구조를 담당하게 되었을 때 교수와 과목번호 많을 삽입할 수가 없다. 기본키인 학번이 없기 때문이다.
삭제이상
학번이 100인 학생이 C101 과목을 취소하여 튜플이 삭제되면, 교수의 정보마져 사라져 버리게 된다.
갱신이상
교수 P1의 담당과목이 C101에서 D201로 변경 되었다면, 이 릴레이션에서 P1이 나타나 있는 모든 튜플에 대해 변경해 주어야 한다. 하나만 변경해준다면 P1은 두가지 과목을 담당한것이 된다.
변경이상의 원인은 사실상 교수 애트리뷰트가 결정자이지만 후보키로 취급되고 있지 않다는데 있다. 따라서 다음과 같이 분해해야 한다.
수강교수(학번, 교수)
기본키 : {학번, 교수}
외래키 : {교수}, 참조 : 과목교수
과목교수(교수, 과목)
기본키 : 교수
댓글 0