회원, 주문, 상품의 관계
회원은 여러 상품을 주문할 수 있습니다. 그래서 회원과 주문은 일대다 관계입니다.
그리고 회원이 한 번 주문할 때 여러 상품을 선택할 수 있고 상품도 여러 주문에 담길 수 있어서(수량) 주문과 상품은 다대다 관계입니다.
하지만 이런 다대다 관계는 관계형 데이터베이스는 물론이고 엔티티에서도 거의 사용하지 않습니다.
따라서 그림처럼 주문상품이라는 엔티티를 추가해서 다대다 관계를 일대다, 다대일 관계로 풀어냈습니다.
주문상품에는 주문수량도 들어가 있습니다.
주문, 배송의 관계
한번 주문할 때 배송정보를 하나 입력할 수 있습니다.
상품 분류
상품은 도서, 음반, 영화로 구분되는데 상품이라는 공통 속성을 사용하므로 상속 구조로 표현했습니다.
상품은 카테고리와 다대다 관계입니다. 하나의 카테고리에 여러가지 상품이 들어갈 수 있고 어떤 상품이 다른 여러개의 카테고리가 복수로 들어갈 수 있기 때문입니다.
이 도메인 모델을 가지고 실제 설계상 엔티티를 만들어내면 아래 그림처럼 됩니다.
회원 엔티티의 공통 속성으로는 id가 있습니다. PK는 다 Long 타입으로 잡았습니다.
회원(Member)
주소(Address)
주문(Order)
배송(Delivery)
주문상품(OrderItem)