Повторяющиеся события архитектуры базы данных

Я создаю базу данных на основе открытых и краудсорсинговых данных. Данные включают повторяющиеся запланированные события. Одно мероприятие длится не более 7 дней.

Пользователи запрашивают текущее событие и следующее в зависимости от их местоположения и даты и времени. (Они не могут попросить, чтобы событие произошло через 2 месяца, только текущее и следующее)

В определенное время и в определенном месте всегда происходит одно уникальное событие. (У вас не может быть ни 0 событий, ни 2)

Вот проблемы, с которыми я сталкиваюсь:

  • Первая проблема: в собранных открытых данных события не имеют даты начала и окончания. У них есть идентификатор дня (от 1 до 7) и недели (от 1 до 5). Час начала и час окончания. Итак, если событие происходит каждый вторник, у меня будет 5 строк (с 1 по 5 неделю с днем ​​2). Если событие проходит с 22:00 понедельника до 2:00 вторника. У меня будет две линии. Один понедельник с 10 вечера до полуночи. Один вторник с полуночи до 2 часов ночи.

  • Вторая проблема: данные могут измениться в любое время благодаря функции краудсорсинга. Пользователь может сказать, что событие проходит с 9 до 11, а не с 8 до 10. Поскольку события следуют друг за другом, это повлияет на другие события, происходящие в том же месте и в тот же день.

Как бы вы построили свою базу данных на основе этих элементов?


person Mehdi.Sqalli    schedule 19.10.2015    source источник


Ответы (1)


  1. Используйте RRules RFC 5545 (iCalendar). Храните их в таблице событий

  2. Используйте материализованные представления для генерации фактических событий из RRules, скажем, +-1 месяц или +-1 год.

Если вы используете PostgreSQL в качестве базы данных, вы можете использовать расширение pg_rrule для расчета дат на основе RRules.

person Neil McGuigan    schedule 19.10.2015
comment
Спасибо за Ваш ответ! Я использую Postgre, сейчас проверяю ссылку. Итак, для краудсорсинговых данных мне нужно будет изменить каждое затронутое правило? - person Mehdi.Sqalli; 20.10.2015