++ 이전글
https://seopport-u.tistory.com/86
1. Date, Time 테이블 만들기
Date 테이블
Time 테이블
테이블을 어떻게 설계해야 하는지 감이 안잡혀서 다같이 많이 고민하면서 테이블을 생성해보았다.
date 테이블에는 어떤 클래스에 등록 된 일자인지 알아야 하기때문에 class_id를 외래키로 넣어줬고,
일자인 day 필드를 넣었다.
Time 테이블에는 이 시간이 어떤 일자에 종속되어있는지 알아야 하기 때문에 date_id를 외래키로 넣어줬다.
date테이블에 time_id를 외래키로 넣지 않고, time테이블에 date_id를 외래키로 넣어야하는 이유는
한 일자에 여러 시간 슬롯이 존재할 수 있으므로, date테이블에 time_id를 외래키로 넣으면 date의 고유 아이디가 중복되는 문제가 발생한다.
date 테이블에 time_id를 외래키로 설정했을때 발생하는 문제
예를 들어 4월 3일에 해당하는 date_id가 있고 그 일자에 여러 시간의 회차가 있다고 했을때, 그 일자에 종속된 시간을 time_id를 외래키로 참조시키려면 date테이블에 4월 3일 일자의 고유 ID가 여러개 존재해야하고, 그럼 기본키에 중복이 생기게 된다.
테이블 연결 관계
DB ERD 설명
- reserve 테이블과 class 테이블은 class_id로 연결됩니다.
- date 테이블은 class_id로 class 테이블과 연결됩니다.
- reserve 테이블과 time 테이블은 time_id로 연결됩니다.
- time 테이블은 date_id로 date 테이블과 연결됩니다.
다음글
https://seopport-u.tistory.com/89
'Today I Learned' 카테고리의 다른 글
[클룸] 클래스의 세션별로 데이터 관리하기 - 테이블 조인을 활용한 예약 정보 불러오기 (0) | 2024.04.09 |
---|---|
여러번의 useEffect 사용으로 다양한 로직 처리하기 (0) | 2024.04.08 |
[클룸] 클래스의 세션별로 데이터 관리하기 - 기술적 의사결정 (1) | 2024.04.07 |
[Next.js] SSG, SSR, ISR 이해하기, 코드에 적용해보기 (0) | 2024.04.04 |
백엔드에서 받아온 snake_case변수를 camelCase로 변경하기 (0) | 2024.04.04 |