У меня есть приложение, в котором есть тренеры, клиенты и тренировки.
Один тренер может иметь много клиентов, а один клиент может иметь много тренеров = много ко многим
Один тренер может создать много тренировок, а одна тренировка может быть создана только одним тренером = один ко многим
Кроме того, один клиент может создать много тренировок, а одна тренировка может быть создана только одним клиентом = один ко многим
Моя проблема в том, что тренировки могут быть созданы только тренером или клиентом. Не оба. Каков наилучший способ структурировать таблицы и поля?
Прямо сейчас у меня есть тренировка с идентификатором: Pk, coachId: Fk, clientId: Fk. Но это означает, что значение coachId или clientId будет нулевым в каждой строке. Думаю, это не лучшая практика?
Я также думал о том, чтобы иметь только одну пользовательскую таблицу с подключенной к ней таблицей ролей. Но я не думаю, что это будет оптимальным / возможным, так как у тренера и клиента будет много разных областей и отношений (например, у тренера могут быть сертификаты и дипломы, и клиент должен иметь возможность быть назначенным на тренировку). Также клиент должен иметь возможность быть назначенным одному или нескольким тренерам и наоборот.
Текущий дизайн:
Coach Client Workout CoachClient (composite)
id id id coachId Fk
coachId Fk clientId Fk
clientId Fk