스프링데이터 + JPA/웹 애플리케이션 개발

6. 도메인 모델과 테이블 설계

sdafdq 2023. 11. 4. 20:32

내가 한

이것과 카테고리 빼면 거의 비슷하다. 아 근데 저거 다대다 관계인데..

또 현실로 보면 한 상품이 여러 카테고리에 포함되어 있을 수 있고, 한 카테고리가 여러 상품을 품을 수 있어서..

 

멤버

아 그렇지 멤버 주소도 있어야 하지..

근데 주소 여러 개 일수도 있으니까 저것도 테이블을 고려 해 봐야 할 듯.

 

주문

Member_id 있어야 하고, 

주문상품도 있어야 하는데, 일대다 관계니 외래키는 다 쪽에 맡기니 여긴 없고,

주문 상태.

주문날짜

 

배송정보

그렇지. 주문과 1:1

주소정보도 있어야 하지. member의 주소와 다를 수 있으니

 

주문아이템

있어야지. 수량, 가격이 다를 수 있지. 할인같은 거

어떤 상품인지도 알아야 겠지.

 

상품

상품이름

가격

카테고리

 

카테고리

난 이 쪽이 사실 잘 모르겠음.

 

그거 외에는 괜찮은 듯.

 

역시나 다대다 실무에서는 쓰면 안된다고 한다..

 

그리고 되도록 단방향 연관관계를 쓰라고 한다.

예제기 때문에 양방향을 쓴 곳도 있다고 한다.

 

테이블 먼저 보여주시지.. ㅎㅎ

뭐 예상대로, 비슷하다.

 

근데 요새 보통 보면 아예 카테고리 나눠지는데. 쿠팡도 보면. 하나로만. 넓은 범위의 카테고리 그런 테이블이 따로 있을 뿐이지..

 

그리고 상속관계는 싱글테이블로 표현함.

 

카테고리는 다대다는 안되니 중간에 테이블을 하나 둬

저걸로 다 받게 함.

 

FK만 있는 것으로.

저거라면 납득이 어느정도 감.

 

item_id로 조회해도 모든 카테고리 가져올 수 있고,

카테고리로 검색해도 모든 아이템 가져올 수 있음.

pk도 아니니..

 

 

다음은 연관관계에 대해.

뭐 테이블 연관관계는 그냥 다 쪽이 외래키를 가지고 있고, 다대다도 저런 식으로 풀어내니 넘어가고,

 

객체상의 연관관계.

 

이거는 진짜 그냥 간단히 말하겠다.

 

왜냐하면 예제라고 많은 형태의 연관관계를 집어 넣었기 때문에 오히려 학습에 독이 될 수 있다고 판단했다.

외래키를 있는 쪽이, 즉 다 쪽이 연관관계의 주인이 되면 된다.

 

엔티티 상에서 연관관계의 주인이 된다는 것은, 하인 쪽은 주인에서부터 값을 읽어오기만 할 뿐, 하인의 값을 바꿔도 DB에 반영이 되지 않는다. 근데 주인쪽은 반영이 된다.

 

보통 다대일 단방향이 좋으며, 다 쪽이 연관관계의 주인.

 

물론 꼭 그런 것은 아니지만, 일대일도 있고, 일대다도 있긴 하지만 알아서 잘 쓰면 된다.

그래도 어떤 상태가 되는 지 잘 생각하면서 써라.

근데 다대다는 안된다.

 

 

'스프링데이터 + JPA > 웹 애플리케이션 개발' 카테고리의 다른 글

8. 엔티티 개발 2  (0) 2023.11.05
7. 엔티티 개발  (0) 2023.11.05
5. 요구사항 분석  (0) 2023.11.04
4. DB(H2) 설치 및 설정  (0) 2023.11.04
3. 뷰 환경설정  (0) 2023.11.04