Я создаю базу данных на основе открытых и краудсорсинговых данных. Данные включают повторяющиеся запланированные события. Одно мероприятие длится не более 7 дней.
Пользователи запрашивают текущее событие и следующее в зависимости от их местоположения и даты и времени. (Они не могут попросить, чтобы событие произошло через 2 месяца, только текущее и следующее)
В определенное время и в определенном месте всегда происходит одно уникальное событие. (У вас не может быть ни 0 событий, ни 2)
Вот проблемы, с которыми я сталкиваюсь:
Первая проблема: в собранных открытых данных события не имеют даты начала и окончания. У них есть идентификатор дня (от 1 до 7) и недели (от 1 до 5). Час начала и час окончания. Итак, если событие происходит каждый вторник, у меня будет 5 строк (с 1 по 5 неделю с днем 2). Если событие проходит с 22:00 понедельника до 2:00 вторника. У меня будет две линии. Один понедельник с 10 вечера до полуночи. Один вторник с полуночи до 2 часов ночи.
Вторая проблема: данные могут измениться в любое время благодаря функции краудсорсинга. Пользователь может сказать, что событие проходит с 9 до 11, а не с 8 до 10. Поскольку события следуют друг за другом, это повлияет на другие события, происходящие в том же месте и в тот же день.
Как бы вы построили свою базу данных на основе этих элементов?