일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 서브타입
- 제5정규형
- SQL
- 중복서브타입
- 제4정규형
- 요구사항명세서
- Workbench
- 불완전서브타입
- 샘플데이터
- vue3
- 제3정규형
- group-by
- 완전서브타입
- 공통코드
- 인덱스
- bc정규형
- 배타서브타입
- 더미데이터
- order-by
- index
- 워크벤치
- 물리모델
- 크롬원격데스크톱
- 데이터통합
- 제2정규형
- 정규형
- mysql
- 제1정규형
- 실행계획
- 함수종속
- Today
- Total
domsam - IT 기술 블로그
BC정규형 (Boyce-Codd Normal Form) 본문
BC정규형은 제3정규형을 보강한 정규형이다. 제3정규형보다 드물게 발생한다.
릴레이션에 존재하는 종속자가 후보 식별자면 BC정규형이 아니다. 만약 속성 Z에 종속된 Y가 후보 식별자에 포함되면 BC정규형이 아니다. Y가 후보 식별자에 포함 여부에 따라 제3정규형과 BC정규형으로 구분된다. Y가 후보 식별자에 포함되더라도 제3정규형은 만족하지만 BC정규형은 만족하지 않는다.
그림(1)에서 [예제1] 릴레이션은 A, B가 주 식별자다. 일반 속성 C에 종속된 종속자 B가 주 식별자이므로 BC정규형에 위배된다. 하지만 일반 속성 사이에서 이행 종속 관계가 없기에 제3정규형 릴레이션이다.
그림(1)에서 [예제2] 릴레이션은 A가 주 식별자고 B, C는 후보 식별자이다. 일반 속성 D에 종속된 종속자 C가 후보 식별자이므로 BC정규형에 위배된다.
그림(2) 릴레이션을 보면 [예제1]에서 주 식별자이지만 종속자인 B속성은 원본 릴레이션에서 분리돼 새로운 릴레이션의 종속자가 된다.
그림(3) 릴레이션을 보면 [예제2]에서 후보 식별자이지만 종속자인 C속성은 원본 릴레이션에서 분리돼 새로운 릴레이션의 종속자가 된다.
"그림(4-1), (4-2)릴레이션은 교수 한 명이 한 과목의 강의만 한다는 전제가 깔려있다."
그림(4-1)에서 일반 속성인 교수번호가 주 식별자에 속한 과목명을 결정하므로 BC정규형이 아니다.
그림(4-2)에서 주 식별자 속성인 교수번호가 주 식별자에 속한 과목명을 결정하므로 BC정규형이 아니다.
그림(4-1), (4-2) 릴레이션을 BC정규화를 진행하면 그림(5)가 된다.
BC정규형 위배가 나타나는 경우에는 일차적으로 최소한의 속성 조합이 주 식별자가 되도록 해야한다는 원칙을 위배한 것이다. 즉, 슈퍼 식별자가 되지 않도록 주 식별자를 설계해야 한다. 그림(4-2), 그림(6)이 이에 해당한다.
그림(6) 왼쪽 모델이 업체번호 속성이 업체명 속성을 종속하므로 오른쪽 모델과 같이 정규화를 해야 한다.
슈퍼 식별자를 채택한 모델이나 주 식별자 속성 간에 종속이 발생하는 모델은 잘못 설계된 모델이다.
'SQL > 정규형' 카테고리의 다른 글
제5정규형 (Fifth Normal Form) (0) | 2025.02.25 |
---|---|
제4정규형 (Fourth Normal Form) (0) | 2025.02.21 |
제3정규형 (Third Normal Form) (0) | 2025.02.21 |
제2정규형 (Second Normal Form) (0) | 2025.02.21 |
제1정규형 (First Normal Form) (0) | 2025.02.20 |