powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Хранение в БД расписания движения поездов
25 сообщений из 36, страница 1 из 2
Хранение в БД расписания движения поездов
    #36891339
alumat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.
Возникла небольшая проблема, не могу придумать оптимальный способ хранения расписания движения поездов в БД. Поезд может ходить регулярно (например, по четным/нечетным или только по вторникам или начиная с 3 числа каждого месяца с периодичностью в 4 дня) или расписание может задаваться набором дат.
Примерно такой же вопрос, как я понял, задавали в этом топике Связь дней недели с маршрутами , но там ни к чему хорошему так и не пришли.
Подскажите пожалуйста, кому не трудно. Заранее благодарен.
...
Рейтинг: 0 / 0
Хранение в БД расписания движения поездов
    #36891974
Фотография bootty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alumatВозникла небольшая проблема, не могу придумать оптимальный способ хранения расписания движения поездов в БД. Поезд может ходить регулярно (например, по четным/нечетным или только по вторникам или начиная с 3 числа каждого месяца с периодичностью в 4 дня) или расписание может задаваться набором дат.Там ТС не ответил, что ему надо в итоге.

Расписание поездов — штука интересная. Могут быть и такие ситуации: поезд ходит каждый день, но в зависимости от дня недели останавливается/не останавливается на разных станциях, и это будут по сути разные "маршруты" для одного и того же "поезда" (см. ниже).

Касательно данной конкретной задачи, можно попробовать так:

1. Календарь. В этой таблице храним все даты, день за днём. У каждой даты — свои признаки: рабочий, выходной, праздничный, предпраздничный и т.п., как вам надо для расписаний.

2. Поезда. Список поездов; кстати, обычно у них уже есть свои идентификаторы, придумывать ничего не надо, например, 6103 — это поезд Дубна – Кубинка 1, ходит по рабочим дням.

3. Маршруты. Здесь для каждого поезда храним маршруты (набор остановочных пунктов со временами прибытия и отправления).

4. "Виды" расписаний. По будням, по выходным, псв, св, прочие... Можно сделать здесь же отдельный "вид": каждый день поверх существующего — для внесения изменений на конкретные дни.

5. "Расписания". Здесь для каждого маршрута задаем "вид", дату начала действия, дату окончания действия. На основании календаря и "вида" будем определять, какое "расписание" будет действовать на конкретный день.

Хранить всё в этих таблицах, остальное уже разруливать логикой (например, запрет пересечения "расписаний" по датам, исключая "изменения расписаний".
...
Рейтинг: 0 / 0
Хранение в БД расписания движения поездов
    #36894067
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там ТС не ответил, что ему надо в итоге.И так все понятно. Это же типичный курсач.
Создавать расписание движения поездов кому попало не поручают.
...
Рейтинг: 0 / 0
Хранение в БД расписания движения поездов
    #36894287
Фотография bootty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVИ так все понятно. Это же типичный курсач.
Создавать расписание движения поездов кому попало не поручают.Моя версия: тестовое задание в какой-нить конторе
...
Рейтинг: 0 / 0
Хранение в БД расписания движения поездов
    #36898261
Serguei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alumatДоброго времени суток.
Возникла небольшая проблема, не могу придумать оптимальный способ хранения расписания движения поездов в БД. Поезд может ходить регулярно (например, по четным/нечетным или только по вторникам или начиная с 3 числа каждого месяца с периодичностью в 4 дня) или расписание может задаваться набором дат.


А вы хотя бы начните делать, а мы подскажем как оптимизировать. А то вы хотите, что бы все за вас сделали похоже. Такой номер не пройдет ;)
Вашу схему БД покажите для начала.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Хранение в БД расписания движения поездов
    #39093771
Alexey T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Serguei, А всеже. Вот у меня по работе такое же задание (ну похожее).
Нужно придумать как хранить в базе расписание работы торговых точек. Причем в зависимости от часового пояса.
Таблица с точками есть, их временные зоны есть. Как правильно к этому пристроить расписание?
В результате должен даваться ответ на вопрос: в данную произвольную секунду точка с известным ID по расписанию работала или нет?

Самое "лобовое" решение - тупо назначить каждой точке столбцы "начало раб дня", "начало обеда", "конец обеда", "конец раб дня".
Работать будет но подозреваю что масштабироваться будет хреново. К тому же непонятно как учитывать субб и воскр в которые тоже могут быть свои рабочие часы. С утра гуглю - чет безуспешно.
...
Рейтинг: 0 / 0
Хранение в БД расписания движения поездов
    #39093953
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самое лобовое решение это хранить календарь с разбивкой по часам.
>В результате должен даваться ответ на вопрос: в данную произвольную секунду точка с известным ID по расписанию работала или нет?
Ответ будет очень быстро и просто.
...
Рейтинг: 0 / 0
Хранение в БД расписания движения поездов
    #39093960
Alexey T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SERG1257,
Сработает если каждый день одно и тоже расписание (что в принципе может измениться, это я и имел ввиду под масштабируемостью). Не учитывает суббот-воскр или например что в пятницу короткий день.
"В лоб" это вводить 28 столбцов типа "начало в понедельника", "начала обеда в понедельник", "конец обеда в понедельник", "конец раб дня в понедельник", "начало рабочего дня во вторник" и т.д. Выглядит ужасно, хотя работать будет.

Уверен что есть более красивое решение.
...
Рейтинг: 0 / 0
Хранение в БД расписания движения поездов
    #39093961
Alexey T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SERG1257,

Или я не так понял? Что такое и как хранят "календарь с разбивкой по часам"?
...
Рейтинг: 0 / 0
Хранение в БД расписания движения поездов
    #39093970
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey T,
...
Рейтинг: 0 / 0
Хранение в БД расписания движения поездов
    #39093971
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
create table calendar (calend_id int primary key, day, hour)
create table shops (shop_id int primary key ....)
create table work_hours (calend_id int references calendar, shop_id references shops)


Проблема - слишком много записей при большом числе точек.
Решение - объединение точек в группы с одинаковым расписанием
Код: sql
1.
2.
3.
create table shop_sched (shop_sched_id int primary key, name varchar)
create table shops (shop_id int primary key, shop_sched_id int references shop_sched)
create table work_hours (calend_id int references calendar, shop_sched_id references shop_sched)
...
Рейтинг: 0 / 0
Хранение в БД расписания движения поездов
    #39093978
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey T,
а вот расписание
...
Рейтинг: 0 / 0
Хранение в БД расписания движения поездов
    #39093984
Alexey T,

имеется ввиду длиннющая таблица с небольшим количеством столбцов
Код: plaintext
строка: id точки, дата, время начала, время окончания, время простоя

как вариант, разложены на отдельные строки могут быть отрезки работы, тогда будет
Код: plaintext
строка: id точки, дата, время начала отрезка работы, время окончания отрезка работы

т.е. любые приостановки и прочее можно будет четко отражать в бд

чтобы уменьшить объем такой таблицы можно хранить то же самое, но за несколько дней схлопывать в одно, тогда
Код: plaintext
строка: id точки, дата начала ровного отрезка, дата окончания ровного отрезка, время начала для этих дат, время окончания для этих дат

или вообще хранить только исключения из правил.
где-то хранить период и расписание вида:
Код: plaintext
точка1 01.01.2014-01.01.2015 8:00-22:00

а в таблице исключений держать все выходные и отрезки простоя
...
Рейтинг: 0 / 0
Хранение в БД расписания движения поездов
    #39094015
Alexey T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRos, Спасибо, кажется идею понял. Попробую реализовать!
...
Рейтинг: 0 / 0
Хранение в БД расписания движения поездов
    #39094017
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey T,

давай
...
Рейтинг: 0 / 0
Хранение в БД расписания движения поездов
    #39094022
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще один вариант в качестве предложения: расписание конкретной точки в конкретную дату - одна запись, в которой каждому часу соответствует бит со значением 0 или 1, в зависимости от того работает точка в указанный час указанной даты или нет.

примерно как наши партнеры делали в приложении показанном в ролике
только здесь не расписание хранится подобным образом, а история болезни и отмечаются не рабочие часы, а показатели симптомов.
...
Рейтинг: 0 / 0
Хранение в БД расписания движения поездов
    #39094034
Alexey T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если собрать все возможные шаблоны вида "id шаблона, начало, конец, день недели" и связывающей таблицей какая точка какие шаблоны имеет?
будет что-то типа:

таблица шаблонов worktimes
id, start, stop, day
1, 10:00, 12:00, суббота
2, 13:00, 18:00, суббота
3, 8:00, 22:00, пон
4, 8:00, 22:00, втр
...

таблица точек shops
id, ....
1
2
3
...

связывающая
id_shop, id_worktime
1 , 1
1 , 3
....


Типа получается что магазин с id=1 работает в субботу с 10 до 12, в понедельник с 8 до 22 и т.д.
Т.е. зная id можно набрать комплект шаблонов и получить время работы в любой день недели.
Вроде должно взлететь?
...
Рейтинг: 0 / 0
Хранение в БД расписания движения поездов
    #39094035
Alexey T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iscrafm, не, это не то. Я так понимаю что это что-то типа сложного лога событий.
Мне же нужно описать расписание без привязки к истории и конкретным датам.
...
Рейтинг: 0 / 0
Хранение в БД расписания движения поездов
    #39094045
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Tiscrafm, не, это не то. Я так понимаю что это что-то типа сложного лога событий.
Мне же нужно описать расписание без привязки к истории и конкретным датам.
не совсем понял о чем ты, но это не лог. Это именно "карта". Просто вся карта событий в одной записи и как ты понимаешь 8 часов - это 1 байт в базе данных. Не нужно привязывать к конкретным датам - просто не добавляешь поле даты в запись. вместо этого день недели можно использовать и т.п. Я лучше держу в базе 365 записей с графиком работы на каждый день, чем вычисляю его. Просто предложил такой способ хранения расписания.
...
Рейтинг: 0 / 0
Хранение в БД расписания движения поездов
    #39094047
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey T,

ну ты ж видел
на каждый Ресурс назначается Календарь на Определенное время (с по), их много может быть, они даже пересекаться могут (при этом имеются Политики выбора календаря)
ты давай делай, сама задача все выправит по ходу, а так можно долго ляля
...
Рейтинг: 0 / 0
Хранение в БД расписания движения поездов
    #39094067
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey T Вроде должно взлететь? Взлетит то оно в любом случае ибо данных очень мало.

Еще раз: вы зациклились на функции вычисления работает или нет
Вам предлагают материализовать график работы (есть запись - работает, нет записи не работает), это займет гораздо больше места, но будет гораздо легче поддерживать. Заполните график работы на год (годы) вперед и правьте, когда правительство переносит выходные по просьбам трудящихся.
...
Рейтинг: 0 / 0
Хранение в БД расписания движения поездов
    #39096613
Alexey T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо! Вроде просветление случилось.
...
Рейтинг: 0 / 0
Хранение в БД расписания движения поездов
    #39097168
Serguei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TВсем спасибо! Вроде просветление случилось.
интересно на каком решении остановилось "просветление" ) можете поделиться?
...
Рейтинг: 0 / 0
Хранение в БД расписания движения поездов
    #39098485
Александр Пузаков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Н-да, как всегда, мегапрограммеры с их мегаязыками городят огород на тему того, что в сирой и убогой 1С решается элементарно и реализовано на сто раз
...
Рейтинг: 0 / 0
Хранение в БД расписания движения поездов
    #39098566
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр ПузаковН-да, как всегда, мегапрограммеры с их мегаязыками городят огород на тему того, что в сирой и убогой 1С решается элементарно и реализовано на сто раз
расскажи как. Только когда будешь ляпать, то имей ввиду что твою икону многие знают до мелочей.
...
Рейтинг: 0 / 0
25 сообщений из 36, страница 1 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Хранение в БД расписания движения поездов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]