알고리즘/SQL 문법 정리
1,2,3,BCNF 정규화
경우42
2025. 5. 28. 17:34
반응형
1차 정규화 (1NF)
조건: 모든 속성값이 원자값(atomic value)이어야 함
- 함수 종속성 조건은 없음
- 단순히 각 셀에 하나의 값만 존재해야 함
- 반복 그룹이나 다중값 속성 제거
2차 정규화 (2NF)
조건: 1NF + 부분 함수 종속성 제거
- X→Y에서: X가 후보키의 일부분이고, Y가 비프라임 속성일 때
- 조건: 이런 부분 함수 종속성이 존재하면 안됨
- 즉, 비프라임 속성은 후보키 전체에만 함수적으로 종속되어야 함
예시:
- 후보키: (학번, 과목코드)
- 잘못된 경우: 학번 → 학생명 (부분 함수 종속성)
- 해결: 학생 테이블과 수강 테이블로 분리
3차 정규화 (3NF)
조건: 2NF + 이행적 함수 종속성 제거
- X→Y에서: 다음 중 하나를 만족해야 함
- X가 슈퍼키이거나
- Y가 프라임 속성이어야 함
- 비프라임 속성들 간의 함수 종속성 제거
예시:
- 잘못된 경우: 학번 → 학과코드 → 학과명 (이행적 종속성)
- 해결: 학과 정보를 별도 테이블로 분리
BCNF (Boyce-Codd Normal Form)
조건: 3NF보다 더 엄격한 조건
- X→Y에서: X가 반드시 슈퍼키여야 함
- Y가 프라임 속성이어도 X가 슈퍼키가 아니면 안됨
- 모든 함수 종속성의 좌변이 슈퍼키여야 함
3NF vs BCNF 차이점:
- 3NF: X가 슈퍼키 OR Y가 프라임 속성
- BCNF: X가 슈퍼키 (조건이 더 엄격)
예시:
- 후보키: (학생번호, 과목), (학생번호, 교수)
- 함수 종속성: 교수 → 과목
- 3NF는 만족하지만 BCNF는 위반 (교수가 슈퍼키가 아님)
반응형