Доброго времени всем! Чувствую что задача тривиальная, и решение уже давно выработано. Подскажите пожалуйста как правильно создать БД. Таблица Schedule: Код (Text): - id - rrule_string - prop_1 - prop_2 ... - prop_n Далее нужно иметь возможность для следующих действий: 1) изменять любой из props для конкретной даты 2) дать возможность записаться на конкретную дату события Вариант 1: создать таблицу Events: Код (Text): - id - schedule_id - date - prop_1 - prop_2 ... - prop_n и заполнять её при первом запросе на любое из вышеперечисленных действий. Вариант 2: создать таблицу Events аналогично варианту 1, но заполнять её планировщиком на указанное время вперед, например ежедневно в полночь на 7 дней вперед заполнять таблицу Events записями, на основании правила рекуррентности описанном в Schedule в поле rrule_string. Оба варианта порождают массу проблем и дополнительной логики, например, при редактировании записей в таблице Schedule. Подскажите как это делается правильно. Спасибо!
Сильно в ваш пост не вчитывался, сорри, но может это пригодится: https://php.ru/forum/threads/algoritm-xranenija-mat-ego.80973/#post-612300
@Antifreez2 не знаю как правильно, это надо решать в каждом конкретном случае. Я работал с системой где есть заготовка(ки) расписания и доступные для бронирования слоты. Слоты заполняются на некоторый период времени вперед и делается это специальным ответственным человеком. Если шаблон расписания изменяется, человек может заново применить исправленную версию. Тут возникает сложность с теми событиями, на которые уже сделаны заявки, а теперь они попадают мимо нового расписания. У нас они помечались особым флажком reschedule и по ним работали люди -- оповещали клиентов и договорились о перебронировании или оставляли заявки как есть, -- это на их ответственность. Короче, суть в том, что система автоматизирует устоявшиеся рабочие процессы, а не навязывает свои искусственные порядки.