|
|
|
Хранение в БД расписания движения поездов
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток. Возникла небольшая проблема, не могу придумать оптимальный способ хранения расписания движения поездов в БД. Поезд может ходить регулярно (например, по четным/нечетным или только по вторникам или начиная с 3 числа каждого месяца с периодичностью в 4 дня) или расписание может задаваться набором дат. Примерно такой же вопрос, как я понял, задавали в этом топике Связь дней недели с маршрутами , но там ни к чему хорошему так и не пришли. Подскажите пожалуйста, кому не трудно. Заранее благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2010, 12:38 |
|
||
|
Хранение в БД расписания движения поездов
|
|||
|---|---|---|---|
|
#18+
alumatВозникла небольшая проблема, не могу придумать оптимальный способ хранения расписания движения поездов в БД. Поезд может ходить регулярно (например, по четным/нечетным или только по вторникам или начиная с 3 числа каждого месяца с периодичностью в 4 дня) или расписание может задаваться набором дат.Там ТС не ответил, что ему надо в итоге. Расписание поездов — штука интересная. Могут быть и такие ситуации: поезд ходит каждый день, но в зависимости от дня недели останавливается/не останавливается на разных станциях, и это будут по сути разные "маршруты" для одного и того же "поезда" (см. ниже). Касательно данной конкретной задачи, можно попробовать так: 1. Календарь. В этой таблице храним все даты, день за днём. У каждой даты — свои признаки: рабочий, выходной, праздничный, предпраздничный и т.п., как вам надо для расписаний. 2. Поезда. Список поездов; кстати, обычно у них уже есть свои идентификаторы, придумывать ничего не надо, например, 6103 — это поезд Дубна – Кубинка 1, ходит по рабочим дням. 3. Маршруты. Здесь для каждого поезда храним маршруты (набор остановочных пунктов со временами прибытия и отправления). 4. "Виды" расписаний. По будням, по выходным, псв, св, прочие... Можно сделать здесь же отдельный "вид": каждый день поверх существующего — для внесения изменений на конкретные дни. 5. "Расписания". Здесь для каждого маршрута задаем "вид", дату начала действия, дату окончания действия. На основании календаря и "вида" будем определять, какое "расписание" будет действовать на конкретный день. Хранить всё в этих таблицах, остальное уже разруливать логикой (например, запрет пересечения "расписаний" по датам, исключая "изменения расписаний". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 10:17 |
|
||
|
Хранение в БД расписания движения поездов
|
|||
|---|---|---|---|
|
#18+
Там ТС не ответил, что ему надо в итоге.И так все понятно. Это же типичный курсач. Создавать расписание движения поездов кому попало не поручают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 10:44 |
|
||
|
Хранение в БД расписания движения поездов
|
|||
|---|---|---|---|
|
#18+
LSVИ так все понятно. Это же типичный курсач. Создавать расписание движения поездов кому попало не поручают.Моя версия: тестовое задание в какой-нить конторе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 11:55 |
|
||
|
Хранение в БД расписания движения поездов
|
|||
|---|---|---|---|
|
#18+
alumatДоброго времени суток. Возникла небольшая проблема, не могу придумать оптимальный способ хранения расписания движения поездов в БД. Поезд может ходить регулярно (например, по четным/нечетным или только по вторникам или начиная с 3 числа каждого месяца с периодичностью в 4 дня) или расписание может задаваться набором дат. А вы хотя бы начните делать, а мы подскажем как оптимизировать. А то вы хотите, что бы все за вас сделали похоже. Такой номер не пройдет ;) Вашу схему БД покажите для начала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 22:56 |
|
||
|
Хранение в БД расписания движения поездов
|
|||
|---|---|---|---|
|
#18+
Serguei, А всеже. Вот у меня по работе такое же задание (ну похожее). Нужно придумать как хранить в базе расписание работы торговых точек. Причем в зависимости от часового пояса. Таблица с точками есть, их временные зоны есть. Как правильно к этому пристроить расписание? В результате должен даваться ответ на вопрос: в данную произвольную секунду точка с известным ID по расписанию работала или нет? Самое "лобовое" решение - тупо назначить каждой точке столбцы "начало раб дня", "начало обеда", "конец обеда", "конец раб дня". Работать будет но подозреваю что масштабироваться будет хреново. К тому же непонятно как учитывать субб и воскр в которые тоже могут быть свои рабочие часы. С утра гуглю - чет безуспешно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 14:23 |
|
||
|
Хранение в БД расписания движения поездов
|
|||
|---|---|---|---|
|
#18+
Самое лобовое решение это хранить календарь с разбивкой по часам. >В результате должен даваться ответ на вопрос: в данную произвольную секунду точка с известным ID по расписанию работала или нет? Ответ будет очень быстро и просто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 16:47 |
|
||
|
Хранение в БД расписания движения поездов
|
|||
|---|---|---|---|
|
#18+
SERG1257, Сработает если каждый день одно и тоже расписание (что в принципе может измениться, это я и имел ввиду под масштабируемостью). Не учитывает суббот-воскр или например что в пятницу короткий день. "В лоб" это вводить 28 столбцов типа "начало в понедельника", "начала обеда в понедельник", "конец обеда в понедельник", "конец раб дня в понедельник", "начало рабочего дня во вторник" и т.д. Выглядит ужасно, хотя работать будет. Уверен что есть более красивое решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 16:53 |
|
||
|
Хранение в БД расписания движения поездов
|
|||
|---|---|---|---|
|
#18+
SERG1257, Или я не так понял? Что такое и как хранят "календарь с разбивкой по часам"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 16:54 |
|
||
|
Хранение в БД расписания движения поездов
|
|||
|---|---|---|---|
|
#18+
Alexey T, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 17:04 |
|
||
|
Хранение в БД расписания движения поездов
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. Проблема - слишком много записей при большом числе точек. Решение - объединение точек в группы с одинаковым расписанием Код: sql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 17:05 |
|
||
|
Хранение в БД расписания движения поездов
|
|||
|---|---|---|---|
|
#18+
Alexey T, а вот расписание ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 17:12 |
|
||
|
Хранение в БД расписания движения поездов
|
|||
|---|---|---|---|
|
#18+
Alexey T, имеется ввиду длиннющая таблица с небольшим количеством столбцов Код: plaintext как вариант, разложены на отдельные строки могут быть отрезки работы, тогда будет Код: plaintext т.е. любые приостановки и прочее можно будет четко отражать в бд чтобы уменьшить объем такой таблицы можно хранить то же самое, но за несколько дней схлопывать в одно, тогда Код: plaintext или вообще хранить только исключения из правил. где-то хранить период и расписание вида: Код: plaintext а в таблице исключений держать все выходные и отрезки простоя ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 17:21 |
|
||
|
Хранение в БД расписания движения поездов
|
|||
|---|---|---|---|
|
#18+
ViPRos, Спасибо, кажется идею понял. Попробую реализовать! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 18:23 |
|
||
|
Хранение в БД расписания движения поездов
|
|||
|---|---|---|---|
|
#18+
Alexey T, давай ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 18:26 |
|
||
|
Хранение в БД расписания движения поездов
|
|||
|---|---|---|---|
|
#18+
еще один вариант в качестве предложения: расписание конкретной точки в конкретную дату - одна запись, в которой каждому часу соответствует бит со значением 0 или 1, в зависимости от того работает точка в указанный час указанной даты или нет. примерно как наши партнеры делали в приложении показанном в ролике только здесь не расписание хранится подобным образом, а история болезни и отмечаются не рабочие часы, а показатели симптомов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 18:38 |
|
||
|
Хранение в БД расписания движения поездов
|
|||
|---|---|---|---|
|
#18+
А если собрать все возможные шаблоны вида "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 можно набрать комплект шаблонов и получить время работы в любой день недели. Вроде должно взлететь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 19:00 |
|
||
|
Хранение в БД расписания движения поездов
|
|||
|---|---|---|---|
|
#18+
iscrafm, не, это не то. Я так понимаю что это что-то типа сложного лога событий. Мне же нужно описать расписание без привязки к истории и конкретным датам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 19:02 |
|
||
|
Хранение в БД расписания движения поездов
|
|||
|---|---|---|---|
|
#18+
Alexey Tiscrafm, не, это не то. Я так понимаю что это что-то типа сложного лога событий. Мне же нужно описать расписание без привязки к истории и конкретным датам. не совсем понял о чем ты, но это не лог. Это именно "карта". Просто вся карта событий в одной записи и как ты понимаешь 8 часов - это 1 байт в базе данных. Не нужно привязывать к конкретным датам - просто не добавляешь поле даты в запись. вместо этого день недели можно использовать и т.п. Я лучше держу в базе 365 записей с графиком работы на каждый день, чем вычисляю его. Просто предложил такой способ хранения расписания. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 19:15 |
|
||
|
Хранение в БД расписания движения поездов
|
|||
|---|---|---|---|
|
#18+
Alexey T, ну ты ж видел на каждый Ресурс назначается Календарь на Определенное время (с по), их много может быть, они даже пересекаться могут (при этом имеются Политики выбора календаря) ты давай делай, сама задача все выправит по ходу, а так можно долго ляля ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 19:19 |
|
||
|
Хранение в БД расписания движения поездов
|
|||
|---|---|---|---|
|
#18+
Alexey T Вроде должно взлететь? Взлетит то оно в любом случае ибо данных очень мало. Еще раз: вы зациклились на функции вычисления работает или нет Вам предлагают материализовать график работы (есть запись - работает, нет записи не работает), это займет гораздо больше места, но будет гораздо легче поддерживать. Заполните график работы на год (годы) вперед и правьте, когда правительство переносит выходные по просьбам трудящихся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 19:55 |
|
||
|
Хранение в БД расписания движения поездов
|
|||
|---|---|---|---|
|
#18+
Всем спасибо! Вроде просветление случилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2015, 14:01 |
|
||
|
Хранение в БД расписания движения поездов
|
|||
|---|---|---|---|
|
#18+
Alexey TВсем спасибо! Вроде просветление случилось. интересно на каком решении остановилось "просветление" ) можете поделиться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2015, 11:01 |
|
||
|
Хранение в БД расписания движения поездов
|
|||
|---|---|---|---|
|
#18+
Н-да, как всегда, мегапрограммеры с их мегаязыками городят огород на тему того, что в сирой и убогой 1С решается элементарно и реализовано на сто раз ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2015, 15:05 |
|
||
|
Хранение в БД расписания движения поездов
|
|||
|---|---|---|---|
|
#18+
Александр ПузаковН-да, как всегда, мегапрограммеры с их мегаязыками городят огород на тему того, что в сирой и убогой 1С решается элементарно и реализовано на сто раз расскажи как. Только когда будешь ляпать, то имей ввиду что твою икону многие знают до мелочей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2015, 15:47 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=39093961&tid=1540441]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
173ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
| others: | 257ms |
| total: | 540ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...