주문 정규화 흐름

주문 항목은 분리됐지만, 고객 정보는 아직 주문 테이블 안에 남아 있습니다

2NF는 복합키에서 생기는 부분 함수 종속을 없앱니다. 하지만 이 단계에서는 주문ID → 고객명 → 고객폰 체인이 남아 있으므로, 고객 정보 중복과 수정 이상을 없애려면 한 번 더 분리해야 합니다.

1단계

주문 자체 정보와 주문 항목을 분리해 부분 함수 종속을 제거

상품명, 단가, 수량은 주문상세로 옮겨서 주문당 여러 상품을 따로 기록합니다.

주문 테이블
PK: 주문ID
주문ID  고객명   고객폰
001     김철수   010-1234
002     이영희   010-5678
주문상세 테이블
PK: 주문ID + 상품명
001  노트북  150만  1
001  마우스   3.5만 1
002  키보드   8만   1
부분 함수 종속 제거 완료
남은 문제

고객폰은 주문ID에 직접 속하지 않고, 고객명을 거쳐 결정됩니다

이행 함수 종속
주문의 키 주문ID
→
주문 안의 고객 고객명
→
고객의 속성 고객폰

전화번호는 주문 자체의 상태가 아니라 고객 엔터티의 속성입니다. 그래서 같은 고객이 여러 번 주문하면 고객폰 값도 주문 행마다 반복됩니다.

중복

김철수의 주문이 늘수록 010-1234도 주문 테이블에 계속 복사됩니다.

수정 이상

전화번호가 바뀌면 고객 관련 주문 행을 여러 곳에서 함께 수정해야 합니다.

다음 단계

3NF에서는 고객 정보를 별도 테이블로 분리합니다

주문은 고객을 참조만 하고, 고객의 속성은 고객 테이블이 책임지도록 역할을 나눕니다.

주문 테이블
주문ID, 고객ID
주문이 누구의 것인지만 연결
고객 테이블
고객ID, 고객명, 고객폰
이름과 전화번호는 한 곳에서만 관리
핵심: 2NF는 주문별 상품 데이터의 중복을 줄였지만, 고객 정보가 주문 안에 남아 있어 아직 이행 함수 종속이 해소되지 않았습니다.