За последние 24 часа нас посетили 22878 программистов и 1267 роботов. Сейчас ищет 751 программист ...

Календарь, расписание, и события. Помогите спроектировать БД

Тема в разделе "PHP для профи", создана пользователем Antifreez2, 28 дек 2019.

Метки:
  1. Antifreez2

    Antifreez2 Активный пользователь

    С нами с:
    10 фев 2014
    Сообщения:
    10
    Симпатии:
    0
    Доброго времени всем!

    Чувствую что задача тривиальная, и решение уже давно выработано. Подскажите пожалуйста как правильно создать БД.

    Таблица Schedule:
    Код (Text):
    1.  - id
    2. - rrule_string
    3. - prop_1
    4. - prop_2
    5. ...
    6. - prop_n
    Далее нужно иметь возможность для следующих действий:
    1) изменять любой из props для конкретной даты
    2) дать возможность записаться на конкретную дату события

    • Вариант 1:
    создать таблицу Events:
    Код (Text):
    1.  - id
    2. - schedule_id
    3. - date
    4. - prop_1
    5. - prop_2
    6. ...
    7. - prop_n
    и заполнять её при первом запросе на любое из вышеперечисленных действий.

    • Вариант 2:
    создать таблицу Events аналогично варианту 1, но заполнять её планировщиком на указанное время вперед, например ежедневно в полночь на 7 дней вперед заполнять таблицу Events записями, на основании правила рекуррентности описанном в Schedule в поле rrule_string.

    Оба варианта порождают массу проблем и дополнительной логики, например, при редактировании записей в таблице Schedule.

    Подскажите как это делается правильно.

    Спасибо!
     
  2. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
  3. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    @Antifreez2 не знаю как правильно, это надо решать в каждом конкретном случае.

    Я работал с системой где есть заготовка(ки) расписания и доступные для бронирования слоты.
    Слоты заполняются на некоторый период времени вперед и делается это специальным ответственным человеком. Если шаблон расписания изменяется, человек может заново применить исправленную версию. Тут возникает сложность с теми событиями, на которые уже сделаны заявки, а теперь они попадают мимо нового расписания. У нас они помечались особым флажком reschedule и по ним работали люди -- оповещали клиентов и договорились о перебронировании или оставляли заявки как есть, -- это на их ответственность.

    Короче, суть в том, что система автоматизирует устоявшиеся рабочие процессы, а не навязывает свои искусственные порядки.
     
    #3 artoodetoo, 29 дек 2019
    Последнее редактирование: 29 дек 2019