powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Хитрая таблица тарифов
18 сообщений из 18, страница 1 из 1
Хитрая таблица тарифов
    #39194380
forcety
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, уважаемые форумчане!

Требуется ваша подсказка, как оптимально хранить в БД информацию о тарифах грузоперевозок из города А в город Б.
Сейчас пользуюсь тарифами из округа в округ (в России их 15, поэтому прайс простой).
Планируется постепенно детализировать прайс, вводя регионы России (их 90) и города (городов около 6 000).
Известно, что цена из А в Б отличается от цены из Б в А.

В программе собираюсь для пользователя реализовать следующую схему:

Пользователь выбирает город загрузки и город разгрузки
Программа смотрит есть ли в базе информация о стоимости на уровне городов. Если есть, выдает стоимость. Если нет,
программа смотрит есть ли в базе информация о стоимости на регионов. Если есть, выдает стоимость и говорит, что точность на уровне регионов. Если нет,
программа смотрит есть ли в базе информация о стоимости на округов, выдает стоимость и говорит, что точность на уровне округов (самая грубая оценка).
...
Рейтинг: 0 / 0
Хитрая таблица тарифов
    #39194457
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и какая проблема? Делаете иерархию "округа-регионы-города", и таблицу тарифов (ЭлементИерархии1, ЭлементИерархии2, тип, цена). Если в иерархии будет небольшое фиксированное число уровней (по Вашему описанию их 3) - можно сразу в городах хранить ссылку и на регион и на округ (это, конечно, ФЗ, но запрос на поиск подходящего тарифа будет совсем простым).
...
Рейтинг: 0 / 0
Хитрая таблица тарифов
    #39194558
forcety
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кот МатроскинНу и какая проблема? Делаете иерархию "округа-регионы-города", и таблицу тарифов (ЭлементИерархии1, ЭлементИерархии2, тип, цена). Если в иерархии будет небольшое фиксированное число уровней (по Вашему описанию их 3) - можно сразу в городах хранить ссылку и на регион и на округ (это, конечно, ФЗ, но запрос на поиск подходящего тарифа будет совсем простым).

А хранить базу в виде таблице как приведено выше имеет смысл? Т.е. количество полей будет 1 + количество городов (6000 шт) + количество областей (90 шт) + количество округов (15).
...
Рейтинг: 0 / 0
Хитрая таблица тарифов
    #39194589
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
forcety,

Нет, конечно.
6000 полей потянет мало какая СУБД, но даже если предположить что потянет - смысла в этом никакого, искать в такой таблице нужный тариф сложнее .
...
Рейтинг: 0 / 0
Хитрая таблица тарифов
    #39195030
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
forcetyА хранить базу в виде таблице как приведено выше имеет смысл? Т.е. количество полей будет 1 + количество городов (6000 шт) + количество областей (90 шт) + количество округов (15).

У вас, грубо говоря, "направленный граф".
Т.о. структура для данного графа может быть например такой:

Вершина1 (ссылка)
Вершина2 (ссылка)
Вес (какое-то числовое значение)

А нагуглить решения "нахождения пути" для направленного графа достаточно легко.

Представленный мной способ хранения "направленного графа" не единственный. Существуют и другие способы.
...
Рейтинг: 0 / 0
Хитрая таблица тарифов
    #39195053
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
forcetyТребуется ваша подсказка, как оптимально хранить в БД информацию о тарифах грузоперевозок из города А в город Б.

Перечитала 2 раза и не поняла тип перевозок
--железная дорога
--авиа
--автомобилем
--смешанная

есть границы регионов/областей, например нужен маршрут Шуя-Дзержинск
авто/железная дорога
--вар1- шуя-ковров-вязники-дзержинск
--вар2- шуя-(иваново)-(владимир)-(нижний новгород)-дзержинск

вар1 короче да и дороги приличные
но предположим, что дзержинск не принимает контейнеры 10т, только в областных городах
придется идти смешанным путем(вар2)

аналогично маршрут шуя-биробиджан ---далеко, без самолета или поезда дальнего следования не обойтись и маршрут разобъется на куски
1-шуя-москва поезд или авто
2-москва-хабаровск --самолет или грузовой состав
3- хабаровск-биробиджан --чем то местным ...

так что стоимость зависит от маршрута и срочности
...
Рейтинг: 0 / 0
Хитрая таблица тарифов
    #39195161
forcety
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКАforcetyТребуется ваша подсказка, как оптимально хранить в БД информацию о тарифах грузоперевозок из города А в город Б.

Перечитала 2 раза и не поняла тип перевозок
--железная дорога
--авиа
--автомобилем
--смешанная

есть границы регионов/областей, например нужен маршрут Шуя-Дзержинск
авто/железная дорога
--вар1- шуя-ковров-вязники-дзержинск
--вар2- шуя-(иваново)-(владимир)-(нижний новгород)-дзержинск

вар1 короче да и дороги приличные
но предположим, что дзержинск не принимает контейнеры 10т, только в областных городах
придется идти смешанным путем(вар2)

аналогично маршрут шуя-биробиджан ---далеко, без самолета или поезда дальнего следования не обойтись и маршрут разобъется на куски
1-шуя-москва поезд или авто
2-москва-хабаровск --самолет или грузовой состав
3- хабаровск-биробиджан --чем то местным ...

так что стоимость зависит от маршрута и срочности

Грузоперевозки идут только автотранспортом
...
Рейтинг: 0 / 0
Хитрая таблица тарифов
    #39195199
forcety
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На данный момент вижу такую картину:
...
Рейтинг: 0 / 0
Хитрая таблица тарифов
    #39195266
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
forcetyГрузоперевозки идут только автотранспортом

тогда надо учитывать время года
--зимой/весной это может быть один маршрут, учитывающий качество дорог
--летом/осенью --другой(дороги подсохли)
...
Рейтинг: 0 / 0
Хитрая таблица тарифов
    #39195271
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
forcety,

и добавьте
--область-округ
--округ-область
--город -область/округ
--область/округ-город
...
Рейтинг: 0 / 0
Хитрая таблица тарифов
    #39195277
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
forcety,

Это курсовая или боевая задача? Просто в боевой такого по определению быть не может. Стоимость грузоперевозки зависит от массы груза, типа груза, цены груза, расстояния, климатических условий. Регионы, города и пр. - это дополнительные характеристики, которые на цену грузоперевозки никак не влияют.
...
Рейтинг: 0 / 0
Хитрая таблица тарифов
    #39195358
forcety
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Злой Бобрforcety,

Это курсовая или боевая задача? Просто в боевой такого по определению быть не может. Стоимость грузоперевозки зависит от массы груза, типа груза, цены груза, расстояния, климатических условий. Регионы, города и пр. - это дополнительные характеристики, которые на цену грузоперевозки никак не влияют.

Это реальная задача. Это таблица будет как эталонная (основа), н-р, стоимость за 10 тонн. Цена = рубль за километр * километраж между точками. С нее и начинаю. А учет других параметров входных (типа груза, цены груза, климат.условия,...) сделаю позже. Нужно продумать как.
...
Рейтинг: 0 / 0
Хитрая таблица тарифов
    #39195396
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
forcetyЭто реальная задача

тогда вполне может делаться маршрутизация между опорными городами

шуя-владимир-хабаровск-городок хабаровского края

+для смежных городов(хотя и разных областей)

шуя-ковров-вязники
шуя-владимир-суздаль
...
Рейтинг: 0 / 0
Хитрая таблица тарифов
    #39195416
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
forcetyИзвестно, что цена из А в Б отличается от цены из Б в А.

чем отличается дорога

авторшуя ковров-вязники
от
вязники-ковров-шуя

на север(из вязников в мурманск) можно ехать
--через москву
--или через иваново-ленинград
--или иваново-чудово-волховстрой-петрозаводск
-------------
ведь для одних исходной точкой является шуя, а для других -вязники
...
Рейтинг: 0 / 0
Хитрая таблица тарифов
    #39195502
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
forcetyЭто реальная задача .
Тогда учите "матчасть", т.к. ваш подход изначально не верен.
...
Рейтинг: 0 / 0
Хитрая таблица тарифов
    #39195510
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
forcety,

3 запроса необязательны, можно делать поиск одним.
...
Рейтинг: 0 / 0
Хитрая таблица тарифов
    #39200810
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
forcety,

За такой дизайн, как ты намекаешь во фразе "столбцы так и назову" надо увольнять проектировщика БД.
Т.е. тебя, в данном случае :-)
...
Рейтинг: 0 / 0
Хитрая таблица тарифов
    #39200838
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
forcetyКот МатроскинНу и какая проблема? Делаете иерархию "округа-регионы-города", и таблицу тарифов (ЭлементИерархии1, ЭлементИерархии2, тип, цена). Если в иерархии будет небольшое фиксированное число уровней (по Вашему описанию их 3) - можно сразу в городах хранить ссылку и на регион и на округ (это, конечно, ФЗ, но запрос на поиск подходящего тарифа будет совсем простым).

А хранить базу в виде таблице как приведено выше имеет смысл? Т.е. количество полей будет 1 + количество городов (6000 шт) + количество областей (90 шт) + количество округов (15).

Нет, не имеет. Структура таблиц вообще с алгоритмом поиска никак не связана.
Что касается "оптимально хранить в БД информацию", то хранить её нужно не оптимально, а правильно.
У тебя пока неправильно.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Хитрая таблица тарифов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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