출발점
비정규 주문상세 하나에서 시작한다
복합키 {주문번호, 상품코드}를 기준으로 어떤 속성이 전체 키에 종속되는지, 키 일부나 다른 속성을 따라 연쇄로 종속되는지를 먼저 읽어야 분해 방향이 보입니다.
1단계
함수 종속을 추적한다
무엇이 무엇을 결정하는지 짧게 적으면, 나중에 어떤 열을 떼어내야 하는지 바로 보입니다.
주문번호 → 고객번호 주문은 한 고객에 속함
고객번호 → 고객이름, 전화번호 고객 정보는 고객번호가 결정
상품코드 → 단가 상품 가격은 상품코드가 결정
{주문번호, 상품코드} → 수량 수량만 전체 복합키에 완전 종속
2단계
어떤 정규형을 깨는지 판정한다
2NF 위반
키 일부만으로 결정되면 부분 함수 종속
주문번호 → 고객번호, 상품코드 → 단가는 복합키 전체가 없어도 정해집니다.
3NF 위반
비키 속성을 거쳐 결정되면 이행 함수 종속
주문번호 → 고객번호 → 고객이름, 전화번호처럼 중간 엔터티가 숨어 있습니다.
판정 기준
키 일부가 결정하면 따로 분리하고, 연쇄로 따라오는 속성도 독립 엔터티로 떼어냅니다.
3단계
완전 종속만 남기도록 분해한다
주문상세(주문번호, 상품코드, 수량) 복합키 전체가 수량을 결정
주문(주문번호, 고객번호) 주문에만 속한 고객 참조 유지
고객(고객번호, 고객이름, 전화번호) 고객 속성은 고객 테이블로 이동
상품(상품코드, 단가) 상품 속성은 상품 테이블로 이동
읽는 순서: 함수 종속 찾기 → 2NF/3NF 위반 판정 → 완전 종속만 남도록 분해