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) 테이블을 만들어야 하고 당연히 구독하기 테이블이 가져야 한다.
'프로젝트 > SNS 프로젝트' 카테고리의 다른 글
[구독하기 API] 모델링 하기 (0) | 2024.03.29 |
---|---|
[회원정보 수정] 글로벌 예외처리 (1) | 2024.03.29 |
[회원정보 수정] 유효성 검사 (5) | 2024.03.29 |
[회원정보 수정] 영속화 / 세션 정보 수정 (0) | 2024.03.29 |
[회원정보 수정] @AuthenticationPrincipal / Ajax사용 (0) | 2024.03.28 |