SMALL

BCNF 정규화

Boyce-Codd Normal Form의 약자이며 3정규화보다 강한 정규화입니다.
그래서 BCNF를 만족하면 3정규화도 만족합니다.
BCNF는 비결정자에 의한 함수종속을 제거해야 하는 것을 의미합니다.


예시

위의 릴레이션은 요청리스트입니다.

제약조건은 담당자는 하나의 요청범주만 담당할 수 있습니다. 반대로 고객은 요청을 여러번 할 수 있습니다.



그렇다면 고객ID,요청범주로 담당자ID를 식별할 수 있습니다. 그리고 고객ID와 담당자ID로도 요청범주를 결정할 수 있습니다. 이렇게 되면 후보키가 2개가 되는데, PK는 한개만 되어야 하기에 둘 중 한개 선택해야합니다.


PK를 고객ID,담당자ID로 한다치면, 요청범주는 후보키가 아님에도 담당자ID를 결정짓고 있습니다.(제약조건때문)

이런 경우 이상현상이 발생합니다.


예를 들자면 새로운 담당자 D1이 출원인대리인 요청범주를 담당하는 것으로 INSERT가 된다면 아직 고객이 요청 온 것이 없기에 NULL, 출원인대리인, D1이 INSERT되어야 하는데 PK가 고객ID,담당자ID 이므로 NOT NULL이 되어야 하기에 삽입이상이 발생합니다.


갱신이상은 A1이 심판을 담당하게 된다면 2개의 행을 변경해야하는데 한개만 변경된다면 문제가 발생합니다.


삭제이상은 333고객이 요청을 취소한다면 디자인심사에 대한 정보를 잃게 되는 문제가 발생합니다.


해결방안

위와 같이 2개의 릴레이션으로 분할하면 문제가 없다.




LIST

'전공 > 데이터베이스' 카테고리의 다른 글

데이터베이스 설계단계  (0) 2020.09.17
정규화 단점  (0) 2020.09.16
스키마(Schema)  (0) 2020.09.15
트리거(Trigger)  (0) 2020.09.15
전체 백업, 차등 백업, 증분 백업  (3) 2020.09.13

+ Recent posts