내일배움캠프 TIL (230224): typeorm 관계 설정

Jiumn·2023년 2월 26일
0

typeorm 관계 설정

중고 상품을 파는 마켓이라고 할 때, 테이블은 다음과 같이 나눠질 수 있다.

  • 상품 테이블
  • 상품 거래 위치 테이블
  • 상품 카테고리 테이블
  • 판매자 테이블
  • 상품 태그 테이블

각 테이블 간의 관계를 설정해보자.

상품 - 상품 거래 위치 테이블

중고 상품이므로 각 상품은 유일하다.
상품 거래 위치도 유일하기 때문에 (우연의 일치로 위도와 경도가 아주 똑같다는 것을 제외) 1:1 관계가 설정된다.
(@OneToOne())

@JoinColumn()
@OneToOne(() => ProductSaleslocation)
productSaleslocation: ProductSaleslocation

상품 - 상품 카테고리 테이블

상품은 하나의 카테고리만 가진다.
반면 카테고리는 여러 개의 상품을 가질 수 있다.
상품의 입장에서 본다면 N:1 관계다. (@ManyToOne())

@ManyToOne(() => ProductCategory)
productCategory: ProductCategory

상품 - 회원 테이블

회원은 여러 개의 상품을 판매할 수 있다.
하지만 각 상품의 판매자는 한 명이다.
상품 입장에서 회원은 N:1 관계다. (@ManyToOne())

@ManyToOne(() => User)
user: User

상품 - 상품 태그 테이블

하나의 상품은 여러 개의 태그를 가질 수 있고,
태그도 여러 개의 상품에 해당할 수 있다.
N:M 관계다.

@JoinTable()
@ManyToOne(() => ProductTag, (productTags) => ProductTags.products
productTags:ProductTag[];

반대 테이블도 반대 입장에서 동일하게 설정해줘야 한다.

profile
Back-End Wep Developer. 꾸준함이 능력이다.

0개의 댓글