본문 바로가기
프로젝트/SNS 프로젝트

[구독하기 API] 연관 관계 개념

by 영카이브 2024. 3. 29.

1. FK는 many가 가져간다.

 

Board  N : 1 User

User테이블 : 한 명의 유저는 게시글을 여러 개 쓸 수 있다. (OneToMany)

Board테이블 : 하나의 게시글을 한명의 유저가 쓸 수 있다. (ManyToOne)

 

Board테이블이 FK를 가져간다. 따라서 스키마마다 userId를 넣으면, 해당 게시글은 누가 적었는지, 그리고 해당 user는 어떤 게시글을 적었는지를 알 수 있게된다. 

 

2. N:N의 관계는 중간테이블이 생기며 N :1 : N의 관계가 된다. 

 

User N : N  Movie 

User테이블: 한 명의 유저는 영화를 여러 개 볼 수 있다.

Movie테이블: 하나의 영화는 여러 명의 유저가 볼 수 있다. 

 

N:N의 관계에서는 항상 중간 테이블을 생성한다.이것을 '예매'라고 하겠다. 

 

예매 테이블 

Id user movie
1 1 1
2 1 2
3 2 1
4 2 2

 

유저 1 : N 예매

한 명의 유저는 여러 개의 영화 예매를 할 수 있고 / 하나의 예매는 한 명의 유저가 할 수 있다.  

영화 1 : N 예매 

한 개의 영화는 여러 개의 예매 정보를 가질 수 있고 / 하나의 예매정보에는 하나의 영화가 담긴다. 

 

하나의 영화는 여러 예매가 된다. 

 

유저   1 : N   예매  1 : N 영화

 

3. 같은 테이블의 관계

 

구독하기 기능은 같은 user테이블끼리 이루어진다. 

N:N관계이므로 중간테이블이 생기고 이것을 구독하기 테이블 이라고 하겠다. 

이 안에서는 똑같은 user테이블간의 관계를 정립하지만, 구독자와 피구독자로 나누어서 데이터를 받으면 테이블 설계가 가능하다. 따라서 구독하기(subscirbe) 테이블을 만들어야 하고 당연히 구독하기 테이블이 가져야 한다.