Прежде всего, я прочитал этот пост Что такое хороший дизайн базы данных (схема) для базы данных посещаемости? , но она не соответствует моим потребностям, и я изо всех сил стараюсь адаптировать ее к своему сценарию..
Я постараюсь объяснить вкратце.
Давайте возьмем школу (вроде):
- В школе есть курсы с начальной и конечной датой
- Студенты могут быть "подписаны" на несколько курсов
- Подписка не обязательна, начиная с начала и заканчивая в конце курса.
- Студента можно посещать пунктуально (независимо от подписки) или переводить пунктуально на другой курс.
Я имел в виду этот дизайн:
Моя идея:
- При точном переводе студента я могу изменить
course_id
- Я могу создать участника без
subscription_id
, по запросу
Моя проблема:
С этим дизайном,Это кажется слишком сложным, и чтобы увидеть, кто идет на курс, я вижу только два решения.
- Подсчитайте количество подписок, добавьте количество присутствующих участников, удалите количество отсутствующих участников.
- Используйте работника очереди, чтобы создать всех участников и подсчитать количество присутствующих.
Какой это был бы более простой способ или какую схему лучше использовать?