• 회원은 여러 상품을 주문할 수 있다.
  • 한번 주문에 여러 개의 상품을 주문할 수 있다.
  • 상품과 카테고리는 다대다
  • 큰 그림이다.

  • 상세한 엔티티 명세

  • Address는 임베디드 타입

  • OrderItem이 중요하다. 다대다를 일대다, 다대일로 풀었다.

  • 상품을 상속 관계로 3개의 자식을 가지고 있다.

  • Category는 계층 구조, 자기 자신 타입의 부모와 자식을 가지고 있다.

  • 사실 실무에서 다대다는 안 쓰는 것이 좋다. 하지만 모든 예를 다 다룰 수 있는 예제이다.

  • 멤버와 오더는 양방향 관계이다. 가능하면 단 방향이 좋은데

    • 시스템 입장에서 생각해야 한다. 우리는 회원이 주문을 하니 회원이 오더를 가진다고 생각하지만 동등하게 생각해야 한다.
    • 이 상황에서는 주문이 발생하는데 멤버가 필요하다 라고 생각하는 것이 좋다.
    • 멤버에서 오더를 그래프 탐색으로 찾는 것 보다 오더에서 멤버를 필터 조건으로 찾으면 된다!!
    • 이렇게 하면 다대다를 안 해도 된다.

  • 실제 테이블 구조이다.
  • 아이템이 상속 관계인데 테이블이 하나이다.
    • 싱글 테이블 전략을 사용했다. dtype으로 구분한다.
    • 테이블이 복잡해지는 것이 단점이지만 성능이 잘 나온다.