powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / [help] Расписание.
13 сообщений из 13, страница 1 из 1
[help] Расписание.
    #33081054
Roman Brunets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то я совсем в тупик зашел.
<реальность>
Есть маршруты. Например рейс 1 в 18.00 по Пн, Вт, Пт в точке А, 22.00 в точке В, в 24.00 в точке С. Рейс 2 в 15.00 по Ср, Пт в точке А, в 17.00 в точке С. Рейс 3 по нечетным дням в 11.00 в точке А, в 18.00 в точке D, в 22.00 в точке В.
</реальность>

В реальности все настолько паршиво:), что я не соображу как это приводится нормально на уровень хранения данных. Вариантов пока 2. Либо хранить, каким-то образом, периодичность (вроде [дата/время начала], [интервал времени], [дата/время конца]) либо формировать клиентом все контрольные точки вперед на период времени. В общих чертах вроде как понятно, но как это приводится к БД не пойму. Ни в первом, ни во втором варианте.

Люди, кто-нибудь, ткните в материалы по теме, а то гугль уже пищит:(.
...
Рейтинг: 0 / 0
[help] Расписание.
    #33081236
Серега
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблица с рейсами и таблица с промежуточными точками ссылающаяся на первую. Во второй можно хранить и конечные время выезда/прибытия. Можно хранить как собственно время события или как временной интервал от предыдущего (время в пути).
...
Рейтинг: 0 / 0
[help] Расписание.
    #33081333
YBW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
YBW
Гость
подобную задачу можно решить следующим образом:

создаете таблицу точек на маршрутах tblCheckPoints - перечень населенных пунктов...

в ней можно указать наименование, время стоянки, наличие санузлов, магазинов-ларьков, телефон пункта контроля, географические координаты

создаете таблицу ВСЕХ ВОЗМОЖНЫХ перегонов между населенными пунктами - tblRouteStage - Parent <> Child отношение - список перегонов между населенными пунктами...

в ней можно указать протяженность в км, тип и качество дорожного покрытия, индекс трассы по классификаторам, рекомендуемый скоростной режим...

создаете таблицу маршрутов tblRoutes - последовательно проходите по дереву парент-чайлд таблицы tblRouteStage и выбираете в нее населенные пункты по которым проходит маршрут...

в принципе, если в таблице населенных пунктов указано время стоянки а в таблице перегонов расстояние и рекомендуемая скорость, то график движения по маршруту составится автоматически

ничего сложного
...
Рейтинг: 0 / 0
[help] Расписание.
    #33081651
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman BrunetsЧто-то я совсем в тупик зашел.
в этом случае попробуйте описать реальность простым русским языком по форме, придуманной еще Баркером.

Каждый Сущность1 может/должен Связь ровно один/ один или несколько Сущность2

или изобразить на это на диаграмме. Предварительно полезно разложить пример на максимально короткие осмысленныем фразы типа Маршрут включает точки. Рейс это маршурт в опредленный день недели и время отправления. Ездка это выполнение реса в определенный день машиной, водителем.
...
Рейтинг: 0 / 0
[help] Расписание.
    #33081673
Roman Brunets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это все как раз понятно...

YBW
в принципе, если в таблице населенных пунктов указано время стоянки а в таблице перегонов расстояние и рекомендуемая скорость, то график движения по маршруту составится автоматически

ничего сложного

Уточняем задачу;).Грузоперевозки. Груз из точки А в точку Б можно отправить напрямую завтра или сегодня через терминал в точке В. Причем, если груз срочный, его нужно отправлять сегодня через точку В. Если своя машина загружена, его нужно отправлять "чужим" перевозчиком. Если груз не срочный, еще влияет количество. Если грузов мало -- отправляем через терминал В и не парим себе мозги. Маршрут из точки А в точку Б завтра не пойдет. Если груза много, оставляем на завтра и отправляем прямым маршрутом.

Я понимаю, что решение машина, в данном случае, принять не может (или может, но пока такой задачи не стоит). Мне нужно показать человеку варианты передвижения груза в приемлемое время (время -- параметр, устанавливаемый пользователем для каждого конкретного типа груза) на основании какого-то расписания движения. Вот работа с этим расписанием и есть для меня непонятная вещь.

Пока вызрело что-то вроде:

create table route_start_times
{
[route_id] int,
[start] datetime, -- дата начала и время отправления
[monday] bit,
...
[sunday] bit,
[четные] bit,
[нечетные] bit,
[1] bit,
[2] bit,
....
[31] bit,
[плевать на праздники] bit,
[плевать на выходные] bit
}

Но, как только представлю себе select, мне плохо становится.;)
Ну должны же быть более красивые решения?
...
Рейтинг: 0 / 0
[help] Расписание.
    #33081692
Roman Brunets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ModelRРейс это маршурт в опредленный день недели и время отправления. Ездка это выполнение реса в определенный день машиной, водителем.

Понятно. Как определить, а сегодня ли этот день Х?
Как определить время старта следующего рейса? То, что надумал, такой геморрой предполагает...:(
...
Рейтинг: 0 / 0
[help] Расписание.
    #33082479
Roman Brunets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Люди, что, действительно нет более красивых решений?
...
Рейтинг: 0 / 0
[help] Расписание.
    #33082619
wrwerwerwer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman BrunetsЛюди, что, действительно нет более красивых решений?

более красивое чем что?
...
Рейтинг: 0 / 0
[help] Расписание.
    #33082698
Фотография Мустиц
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну... представление данных во многом зависит от характера запросов к базе... Навскидку можно порекомендовать нечто такое:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
CREATE TABLE ROUTE
(
  ID,
  DELTA_TIME, -- время прибытия в пунки POINT_ID, 0:00 для пункта отправления, время пути для пункта назначения
  POINT_ID, -- Пункт
);

CREATE TABLE TRIP
(
  ID,
  ROUTE_ID,
  DATE_AND_TIME -- Дата и время отправления
);

CREATE TABLE SCHEDULE  
(
  ID,
  ROUTE_ID,
  DAY_OF_WEEK SET("MON", "THU", ...), -- Дни недели, в которые отходит рейс
  EVEN_ODD_TAG ENUM("ALL", "EVEN", "ODD"), -- По четным или нечетным
  HOLIDAY ENUM("ON", "OFF", "NOT_MEAN") -- Как по праздникам 
);

Идея примерно такая: раз в месяц (или с другой нужной периодичностью) данные с использованием таблицы SCHEDULE переносятся в таблицу TRIP. После чего человек может ее подредактировать ручками (например, рейс такой-то был отменен. перенесен, и т. д.) Все рейсы, которые действительно будут (имели место быть) прописаны в таблице TRIP.
...
Рейтинг: 0 / 0
[help] Расписание.
    #33082740
Roman Brunets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мустиц
Идея примерно такая: раз в месяц (или с другой нужной периодичностью) данные с использованием таблицы SCHEDULE переносятся в таблицу TRIP. После чего человек может ее подредактировать ручками (например, рейс такой-то был отменен. перенесен, и т. д.) Все рейсы, которые действительно будут (имели место быть) прописаны в таблице TRIP.

Спасибо.
ЗЫ. А так хотелось чего-нибудь красивого, вроде "вложенных множеств":(.
...
Рейтинг: 0 / 0
[help] Расписание.
    #33082745
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Brunetscreate table route_start_times
{
[route_id] int,
[start] datetime, -- дата начала и время отправления
[monday] bit,
...
[sunday] bit,
[четные] bit,
[нечетные] bit,
[1] bit,
[2] bit,
....
[31] bit,
[плевать на праздники] bit,
[плевать на выходные] bit
}
а также

[январь] bit,
...
[плевать на немецкие праздники] bit,
[плевать на российские праздники] bit,
...
Roman Brunets
Но, как только представлю себе select, мне плохо становится.;)
Ну должны же быть более красивые решения? аналогично.
Видимо все это по крайней мере на первом этапе должно остаться за кадром, а расписание просто явно перечисляет каждый возможный рейс.
...
Рейтинг: 0 / 0
[help] Расписание.
    #33082804
Roman Brunets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ModelR а также

[январь] bit,
...
[плевать на немецкие праздники] bit,
[плевать на российские праздники] bit,
...


Ой тля..... Жабыл:(
Мама, зароди меня обратно....
...
Рейтинг: 0 / 0
[help] Расписание.
    #33082816
Фотография Мустиц
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman BrunetsСпасибо.
ЗЫ. А так хотелось чего-нибудь красивого, вроде "вложенных множеств":(.

Красиво грозит проблемами... Если у тебя хранится, например, информация о том, каким рейсом товар попал из пункта А в пункт Б, то тебе прийдется хранить в базе расписание, которое было в тот момент. А если это был разовый рейс или в тот день из-за ремонта пути рейс был задержан, то еще и фиктивное "разовое" расписание... А так все достаточно просто (и с точки зрения SQL тоже).

Вообще, у тебя скорее всего нечто базы знаний, если интересно это направление, почитай что-то по прологу :)
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / [help] Расписание.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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