TIL

+31 Entity 연관 관계

JAVABOZA 2023. 7. 17. 22:22

연결 안했을 때(기본)

 

 

food_id / user_id컬럼추가

ALTER TABLE users ADD food_id bigint;
ALTER TABLE food ADD user_id bigint;

user 테이블

food 테이블

 

하지만 이런식으로 하면 위의 테이블 처럼 중복한 값이 들어가있음

 


 

참고(일반적으로 이런 방식으로 넣으면 안됨)

예외도 있음


중간역할을 해줄 주문테이블 생성

create table orders
(
    id         bigint not null auto_increment,
    user_id    bigint,
    food_id    bigint,
    order_date date,
    primary key (id)
);


 

 

 

중간 테이블을 생성하게 되면 중복도 제거할 수있으며 

주문 테이블ID값으로 조회 가능

이렇게 되면 

고객:음식 = 1 : N

음식:고객 = 1: N

고객 : 음식 = N : M

관계를 맺을 수 있으며

 

고객 : 주문 = 1 : N

음식 : 주문 = 1 : N
으로 일 대 다 관계를 형성 할 수 있다.

중복제거 뿐만 아니라 상황에 맞게 다양하게 조회가능

 

이렇듯 DB 테이블간에는 방향의 개념이 없다 쿼리문으로 join을 사요해서 조회 가능

 


그다음은 우리가 스프링부트에서 사용하고 있는 JPA Entity로 연관관계를 찾아보면

 

음식 : 고객 == N :1 연관관계

(단방향)

 

Entity 에서 여러번 가능함을 표현하기 위해 컬렉션 사용
List<Food> foodList = new ArrayList<>()

 

이 상태에서는 음식 entity 의 정보를 가지고 있지 않으면 음식의 정보를 조회할 방법이 없다

 

Entity에서는  양방향, 단방향 관계로 DB테이블에 실제 컬럼이 존재하지않아도 서로 참조할 수가 있다.

 

 

'TIL' 카테고리의 다른 글

+33 Spring 1대N 연관관계  (0) 2023.07.20
+32 Entity 연관관계 1 대 1 관계  (0) 2023.07.18
+30 Naver Open API  (0) 2023.07.17
+29 RestTemplate의 exchange  (0) 2023.07.14
+28 RestTemplate Get요청  (1) 2023.07.13