입력 문장

회원이 여러 상품주문할 수 있다. 하나의 주문에 여러 상품이 포함될 수 있다. 각 상품의 수량가격이 기록되어야 한다.

개체 후보: 회원 · 상품 · 주문 관계 단서: 주문하다 · 포함되다 · 여러 관계 속성: 수량 · 가격

문장을 바로 테이블로 옮기지 않고, 역할별로 분해해 읽는다.

무엇인가

독립적으로 관리되는 명사는 개체가 된다.

어떻게 연결되나

동사와 "여러" 같은 표현으로 관계와 카디널리티를 읽는다.

어디에 저장하나

관계마다 달라지는 값은 중간 테이블에 둔다.

1단계

개체를 먼저 고른다

독립적으로 존재하는 명사만 남기면 핵심 엔터티가 정리된다.

회원 상품 주문 수량 · 가격은 제외
2단계

관계를 해석한다

행위와 반복 표현을 보면 누가 누구와 몇 번 연결되는지 드러난다.

회원 1:N 주문 | 한 회원은 여러 주문을 할 수 있다.

주문 M:N 상품 | 한 주문에 여러 상품, 한 상품은 여러 주문에 포함된다.

3단계

M:N을 주문상세로 푼다

관계형 DB에서는 M:N을 직접 구현하지 않으므로, 연결 자체를 별도 개체로 만든다.

최종 구조

회원 1:N 주문 1:N 주문상세 N:1 상품
수량 · 가격은 상품 자체 속성이 아니라, 주문상세(OrderItem)에 저장되는 관계 속성이다.