728x90
오늘 다룰 내용
Match 테이블과 Team의 다대다 연관관계 필요성에 관련한 문제
문제 발생의 이유
다대다 연관관계를 형성하는 경우 관계형 데이터베이스에서 정규화를 할 수 없다는 문제점이 있다.
이는 숨겨진 테이블이 형성될 수 있다는 이슈를 야기할 가능성이 있으므로 반드시 필요한 경우가 아니라면 지양해야 한다.
문제 해결 방법
새로운 테이블을 생성하여 테이블 간에 관계를 한 단계 더 만들어 주는 것이 방법이 될 수 있다.
다시 말해,
A와 B라는 테이블을 다대다로 연관지어야 할 상황이 발생한다면
C라는 테이블을 새롭게 생성하고 "A -> C", "B -> C"로 일대다 연관관계를 맺어주는 것이 해결방법이 될 수 있다.
# 유저와 게시글, 댓글의 상관 관계를 고민해본다면 쉽게 이해할 수 있다.
로직 설명
"AS-IS"
- Match테이블은 경기 당일의 정보를 담고 있는 테이블이다.
- 한 경기에 두명의 팀이 경기를 진행하니 1개의 Match에는 Team이 2개 존재하며 일대다로 표현할 수 있다.
- Team 정보 페이지에서는 경기 일정을 알려주는 부분 있기 때문에 Team과 Match의 관계가 일대다이다.
"TO-BE"
- 경기 일정을 관리하는 MatchList 테이블을 추가한다.
- 한 경기에 두명의 팀이 경기를 진행하니 1개의 Match에는 Team이 2개 존재하며 일대다로 표현할 수 있다.
- 한 팀이 경기 일정을 여러 개 생성한다.
- 경기 일정이 생성되면 Match는 MatchList 를 생성한다.
- Team 정보 페이지는 Team ID 단위 MatchList 를 가져온다. ( 1개의 Team이 다수의 MatchList 를 생성하므로 일대다이다.
'Project > Whistle(축구 매칭 웹 서비스)' 카테고리의 다른 글
Whistle, 휘슬 프로젝트 ERD 설명 (4) | 2024.06.25 |
---|---|
spring security apply() deprecated 이슈 트러블 슈팅 (0) | 2024.06.11 |
Spring Security 마이그레이션 중 발생한 에러 해결 (1) | 2024.05.22 |
[ whistle ] 불확실한 변수명과 클래스명의 위험성 (2) | 2023.12.05 |
[ Trouble Shooting ] match와 leagueList사이에서 순환참조가 발생함 (0) | 2023.09.21 |