5.2정규형
2정규형은 부분 함수 종속 문제를 해결한 정규형을 의미함
일반적으로 어떤 릴레이션(테이블)이 식별자가 2개 이상으로 구성된 복합 식별자일 때 2정규형 적용대상이 됨
💡
Tip
부분 함수 종속
릴레이션 내 어떤 속성(컬럼)이 복합 식별자가 아닌 일부 키만 가지고도 식별(종속)이 가능한 경우 부분적으로 함수 종속이 되었다고 함
정리하면,
식별자가 아닌 일반 속성이 복합 식별자만으로 종속되지 않고, 일부 식별자만으로도 종속될 경우, 2정규형을 위반한 케이스라고 볼 수 있음

1-1. 2정규형을 위반한 케이스
2정규형을 위반한 테이블 예시는 다음과 같음
주문 상품 테이블
#주문코드 | #상품코드 | 상품명 | 단가 | 수량 |
|---|---|---|---|---|
| 1523 | P001 | 사과 | 10000 | 1 |
| 1533 | P002 | 바나나 | 5000 | 1 |
| 1562 | P003 | 이불 | 100000 | 1 |
| 1567 | P004 | 가방 | 120000 | 2 |
| 1599 | P005 | 키보드 | 100000 | 1 |
| 1600 | P006 | 바나나 | 5000 | 3 |
주문 코드 없이, 상품 코드 식별자 만으로도 상품명과 단가를 알 수 있음
수량은 주문번호와 상품번호를 모두 알고 있어야 파악 가능
발생할 수 있는 문제점
1. 부분 함수 종속
상품명과 단가는 상품코드만 알면 결정 가능
→ 복합키 (주문코드 + 상품코드) 전체에 종속되지 않음
2. 갱신(Update) 이상
상품 가격이나 상품명이 변경될 경우, 해당 상품이 여러 주문에 있으면 모든 행을 수정해야 함
3. 삽입(Insert) 이상
새로운 상품 정보를 추가하려면 주문도 해야함(?)
1-2. 2정규형 적용 후

주문 상품 테이블
#주문코드 | #상품코드(FK) | 수량 |
|---|---|---|
| 1523 | P001 | 1 |
| 1533 | P002 | 1 |
| 1562 | P003 | 1 |
| 1567 | P004 | 2 |
| 1599 | P005 | 1 |
상품 테이블
#상품코드 | 상품명 | 단가 |
|---|---|---|
| P001 | 사과 | 10000 |
| P002 | 바나나 | 5000 |
| P003 | 이불 | 100000 |
| P004 | 가방 | 120000 |
| P005 | 키보드 | 100000 |
적용 결과
1. 부분 종속 제거
상품명과 단가가 상품코드만으로 결정되므로, 주문코드에 종속되지 않음
→ 2NF 충족
2. 갱신 이상 해결
상품 가격이나 이름 변경 시, 상품 테이블에서 하나의 행만 수정하면 됨
3. 삽입 이상 해결
아직 주문되지 않은 상품도 상품 테이블에 미리 등록 할 수 있음
Last updated on