Задать вопрос

Как спроектировать небольшую БД и «правильно» сохранять дни недели?

Здравствуйте, проектирую небольшой сервис. Буду пользоваться услугами ORM. Хочется подойти качественно к изначальному определению сущностей.

Суть сервиса - можно создавать цели, в целях можно создавать действия, соответственно действия можно выполнять или разово (SingularFrequency), или многоразово (SeveralFrequency), если многоразово, то можно указывать в какие дни.

f5a23cd1e8784918ac768eb332f920cc.png

1. Как корректно спроектировать выбор сохранения между двумя таблицами?
2. Как мне корректно работать с "днями недели"? Создать отдельную таблицу или сохранять как список int-значений?

Прошу прощения, если вопросы чуток неточные.
Заранее спасибо за советы.
  • Вопрос задан
  • 3646 просмотров
Подписаться 4 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 4
@shagguboy
хранить как обычную дату, пользовать функции типа
dev.mysql.com/doc/refman/5.5/en/date-and-time-func...
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Храните как
`weekdays` SET('0', '1', '2', '3', '4', '5', '6')проверяйте через
FIND_IN_SET(WEEKDAY(NOW()), `weekdays`) > 0
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
По первому вопросу - я бы сделал так:
24b77840dfa64c0d929c1a4f75ae7806.jpg
Такая связь позволяет прикрепить к одному действию несколько расписаний. Для разовых заданий поле `weekdays` не задаётся. Поле `nextTime` устанавливается при создании расписания и позволяет выбрать все действия, который нужно выполнить, даже если были просрочены. После выполнения действия поле `nextTime` можно выставить в NULL, если `weekdays` пустое, или установить время следующего выполнения задания.
Ответ написан
Комментировать
web_dev
@web_dev Автор вопроса
@Rsa97 Все-таки вы меня чуток не правильно поняли. Вот, я сделал небольшую. зарисовку, так уже должно быть понятно 100%. )) Спасибо за подсказки.
361cdb17f7e242c98af7c9d1f36f6e13.png
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы