s e o p p o r t . l o g

Today I Learned

[클룸] 클래스의 세션별로 데이터 관리하기 - 설계

Seo Ji Won 2024. 4. 7. 14:15

++ 이전글

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

 

[클룸] 클래스의 세션별로 데이터 관리하기 - 테이블 조인을 활용한 예약 정보 불러오기

++ 이전글https://seopport-u.tistory.com/87<p style="background-color: #ffffff; color: #0d0d0d; text-ali..

seopport-u.tistory.com