20

2NF: 복합키의 함정

Day 1: 같은 주소가 100군데 있어요 - 정규화

학습 목표

제2정규형(2NF)의 조건을 이해한다 부분 함수 종속 개념을 파악한다

제2정규형 (2NF)

조건: 1NF + 부분 함수 종속 제거

부분 함수 종속 = 복합키의 일부에만 종속되는 속성


2NF 위반 사례

주문 상세 테이블을 보자:

에디터 로딩 중...

기본키: (order_id, product_id) - 복합키

문제: product_name은 product_id에만 종속됨!

  • order_id가 뭐든 P001이면 항상 "노트북"
  • 부분 종속!

왜 문제인가?

"노트북을 '랩톱'으로 이름 변경"

에디터 로딩 중...

100개 주문에 노트북이 있으면? 100번 수정해야 함. 한 곳이라도 빠지면 불일치!


2NF 적용

에디터 로딩 중...

복합키의 일부(product_id)에만 종속되는 product_name을 분리!


SQL로 보면

에디터 로딩 중...

2NF 체크리스트

체크질문
[ ]복합키를 사용하는가?
[ ]복합키의 일부에만 종속되는 컬럼이 있나?

단일 키면 2NF는 자동 만족! 복합키일 때만 주의하면 된다.