도슐랭스타
제2정규형과 BCNF 차이 본문
항목 | 제2정규형(2NF) | BCNF |
시작 조건 | 1NF 만족해야 함 | 3NF 만족해야 함 |
핵심 조건 | 부분 함수 종속 제거 | 모든 결정자가 후보 키여야 함 |
대상 | 복합 기본키일 때 주로 발생 | 후보 키가 여러 개일 때 주로 발생 |
포함 관계 | BCNF ⊃ 2NF | BCNF가 더 강력함 |
상황 | 제2정규형 | BCNF |
🧩 기본키가 두 조각인데 | 한 조각만으로 어떤 정보가 결정됨 → ❌ | (해당 없음) |
🧑 누가 결정자인지 봤더니 | 기본키 일부였어 → 문제! | 후보 키가 아니었어 → 문제! |
예시
학생ID | 강의명 | 교수명 |
1001 | DB | 김교수 |
1001 | OS | 이교수 |
1002 | DB | 김교수 |
- 기본키: {학생ID, 강의명}
- 강의명 → 교수명 존재
제2정규형 위반인가?
- 기본키는 {학생ID, 강의명} (복합)
- 그런데 강의명 → 교수명은 기본키 일부에만 종속됨
→ 제2정규형 위반!
BCNF 위반인가?
- 강의명 → 교수명은 강의명이 후보 키가 아니므로
- 후보키가 아닌 속성이 결정자 역할을 하고 있음
→ BCNF도 위반!
결론
- 둘 다 위반될 수 있음
- 하지만 2NF는 부분 종속에만 관심,
BCNF는 결정자가 후보키인지 아닌지를 따짐
최종 요약
질문 | 2NF | BCNF |
복합 키가 아닌 단일 키인데도 문제가 될 수 있어? | ❌ 아님 | ✅ 가능 |
후보 키 아닌 속성이 결정자일 때 문제야? | ❌ 아님 | ✅ 문제! |
기본키 일부만으로 다른 속성이 정해져도 돼? | ❌ 안 돼! | ⭕ 가능 (후보 키면) |
엄격함 | 덜 엄격 | 더 엄격 😤 |
반응형
'DB' 카테고리의 다른 글
DB - 트랜잭션(transaction) (0) | 2024.06.07 |
---|---|
DB - 프로시저(Procedure) (0) | 2024.05.28 |
집계 함수 (2) | 2024.04.29 |
ORDER BY (0) | 2024.04.22 |
클러스터, 넌클러스터 인덱스 (0) | 2024.04.15 |
Comments