powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Каждая цена на день или периоды...
22 сообщений из 22, страница 1 из 1
Каждая цена на день или периоды...
    #36458603
возьмём пример номера отеля, цена на который изменяется с течением времени

...
12.05-22.05 - 25$
23.05-30.05 - 30$
...

на первый взгляд проще создать календарик - с ценой на день и получаем элементарные запросы по общей сумме за период..
а какие плюсы хранения периодов? (быть может есть примеры запросов..)
...
Рейтинг: 0 / 0
Каждая цена на день или периоды...
    #36458610
Edkonst2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спрошу_ка_явозьмём пример номера отеля, цена на который изменяется с течением времени

...
12.05-22.05 - 25$
23.05-30.05 - 30$
...

на первый взгляд проще создать календарик - с ценой на день и получаем элементарные запросы по общей сумме за период..
а какие плюсы хранения периодов? (быть может есть примеры запросов..)

Сколько записей будет за год, если использовать "календарик"? 365
А сколько, если цена не менялась в течении года и использовать периоды? 1. Есть разница?
...
Рейтинг: 0 / 0
Каждая цена на день или периоды...
    #36458619
Edkonst2008

Сколько записей будет за год, если использовать "календарик"? 365
А сколько, если цена не менялась в течении года и использовать периоды? 1. Есть разница?

подразумевается исключительно под летний период...

с периодами конечно красивее и практичнее, но запросы тоже намного тяжелее...
...
Рейтинг: 0 / 0
Каждая цена на день или периоды...
    #36458681
Vika Vinner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спрошу_ка_яподразумевается исключительно под летний период...
Хранение цен отелей - в общем (обычно) - соблюдается календарно, а не периодами. Существуют расценки (бизнес и кэжуал) под различные категории путешественников - каждый отель имеет своих "постоянных" клиентов, но и привлекает "сторонних" Или в деловой части города посетели к примеру живут только в рабочие дни, а по выходным отель стоит пустой.. Например в городах-казино - есть расценки начала и конца недели. Или цены связаны с праздниками (например каникулярными неделями). Или вот к примеру - матч по футболу в какой то день запланирован... Я бы посоветовала всё таки иметь календарные расценки.
...
Рейтинг: 0 / 0
Каждая цена на день или периоды...
    #36459339
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спрошу_ка_яс периодами конечно красивее и практичнее, но запросы тоже намного тяжелее... и в чем эта тяжесть заключается? тяжесть в изменении таких данных (скорости обновления), но вы же их не часто будете менять?
...
Рейтинг: 0 / 0
Каждая цена на день или периоды...
    #36460119
FlowerMoon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
спрошу_ка_явозьмём пример номера отеля, цена на который изменяется с течением времени

...
12.05-22.05 - 25$
23.05-30.05 - 30$
...

на первый взгляд проще создать календарик - с ценой на день и получаем элементарные запросы по общей сумме за период..
а какие плюсы хранения периодов? (быть может есть примеры запросов..)


если БД оракл, то я бы сделала
12.05 25$
23.05 30$
достаточно легко запросом вытаскивать период и/или последнюю дату действия, попадание даты в диапазон и т.д. Насчет других субд - не помню, не знаю...

Если сложные, частые изменения, но критичны объемы хранимой информации... тогда...
Определить некий учетный временной период, например, неделя или месяц или год и т.п.
Хранить для текущего временного периода - календарем, для архивных - периодами. :)
...
Рейтинг: 0 / 0
Каждая цена на день или периоды...
    #36460142
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DataFlowerесли БД оракл, то я бы сделала
12.05 25$
23.05 30$
достаточно легко запросом вытаскивать период и/или последнюю дату действия, попадание даты в диапазон и т.д. насколько удобно узнать цену на 17.05?
...
Рейтинг: 0 / 0
Каждая цена на день или периоды...
    #36460405
FlowerMoon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
NafDataFlowerесли БД оракл, то я бы сделала
12.05 25$
23.05 30$
достаточно легко запросом вытаскивать период и/или последнюю дату действия, попадание даты в диапазон и т.д. насколько удобно узнать цену на 17.05?

Код: plaintext
1.
2.
3.
4.
select
    t.start_day,
    LEAD(t.start_day -  1  ,  1 , TO_DATE('3000-01-01', 'yyyy-mm-dd')) over (order by t.start_day) end_day,
    t.price    
from hotel_room_price t

даст ту же таблицу с диапазоном.

Неудобно, но зато никакого риска логических ошибок типа
start_day end_day price12.05 20.05 25$ 23.05 30.05 30$
...
Рейтинг: 0 / 0
Каждая цена на день или периоды...
    #36460413
FlowerMoon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
Код: plaintext
ну фу... :)

понятно, что какую-то будущую дату или текущий день...
...
Рейтинг: 0 / 0
Каждая цена на день или периоды...
    #36460467
ineedyou
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DataFlower
Неудобно, но зато никакого риска логических ошибок типа
start_day end_day price12.05 20.05 25$ 23.05 30.05 30$

Логические ошибки при хранении диапазонов можно избежать, добавив DEFERRABLE CONSTRAINT FOREIGN KEY с end_day на start_day.
...
Рейтинг: 0 / 0
Каждая цена на день или периоды...
    #36461697
как я и говорил, хранить удобно и красиво, а вот с выборками, если ещё нужный период расчёта входит в разные ценовые диапазоны...
...
Рейтинг: 0 / 0
Каждая цена на день или периоды...
    #36461914
ineedyou
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну и пусть себе входит. Стоимость подсчитывается одним нехитрым запросом. В диапазонах есть преимущество - их можно оставлять открытыми справа до тех пор, пока не радятся новые цены. В случае с каледарем придется загодя заполнять его.
...
Рейтинг: 0 / 0
Каждая цена на день или периоды...
    #36461932
Vika Vinner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ineedyou В случае с каледарем придется загодя заполнять его.
На самом деле так оно и происходит - называется этот процесс "планирование размещения клиентов" В Каждой гостиннице есть ещё и так называемый "мейнтенанс период" на разного рода санитарно технические мероприятия. Они тем более планируются загодя. Дело в том что вот как раз диапазон ценовой не обладает гибкостью немедленного изменения цены под нужды бизнеса. А календарь - вполне. Хотя и диапазоны также хранятся в формате "рекомендованных" ценовых показателей.
...
Рейтинг: 0 / 0
Каждая цена на день или периоды...
    #36461944
Vika Vinner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У каждой гостинницы есть ко всему ещё и показатель дневной процентной загрузки. Цены могут быть изменены в соответствие и с этим показателем. Например если в течение недели загрузка была 85% и выше - у менеджера есть право определить повышенную надбавку на каждую ночь - ведь каждая дополнительная занятая комната кроме дохода влечёт за собой и повышенные риски. например - не проведённый вовремя тех контроль на пятом этаже дополнительно занятого номера повлёк за собой затопление трёх четырёх номеров внизу ... и так далее... То же с низкой дневной процентной загрузкой - менеджер имеет право определить скидки 10%-15% на комнату с целью повысить тот самый процент. Планирование включает в себя в том числе и правильную подготовку показателя загрузки отеля на весь год.
...
Рейтинг: 0 / 0
Каждая цена на день или периоды...
    #36461949
ineedyou
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Диапазоны можно делать наследуемыми, перекрывающимися с разным приоритетом (сезон->выходные дни->праздники и дни особых мероприятий). Но в то же время разбить или слить два диапазона сложнее, чем проапдейтить Н строк. Если за календарем будут следить должным образом - то в гостинничном применеии он скорее всего более живуч, а если автоматизация порученная ТС проводится по остаточному принципу ...
...
Рейтинг: 0 / 0
Каждая цена на день или периоды...
    #36462014
спрошу_ка_явозьмём пример номера отеля, цена на который изменяется с течением времени

...
12.05-22.05 - 25$
23.05-30.05 - 30$
...

на первый взгляд проще создать календарик - с ценой на день и получаем элементарные запросы по общей сумме за период..
а какие плюсы хранения периодов? (быть может есть примеры запросов..)

То есть: с даты "xx.xx.xxxx" на yyy устанавливается цена zzz.

Соответственно базовое решение:
create table Prices (
Id Integer not null,
BeginDate DATE NOT NULL,
SubjId INTEGER NOT NULL,
PriceValue NUMERIC(12, 2) NOT NULL,

CONSTRAINT PK_Prices PRIMARY KEY (Id),
CONSTRAINT FK_Prices_Subjects ...,
CONSTRAINT Uni_Prices_BDateAndSubj UNIQUE (BeginDate, SubjId)
);

Записи вносятся не ежедневно, а по мере изменения цен. Все красиво, доступно и понятно людям.

Запросы несколько сложнее и работают они несколько медленнее. Однако до тех пор пока нигде ничего тормозить не начнет я бы о другом не думал (cкока там ваще тех номеров и насколько часто цена меняется ))) ).

А кто не знает как одним запросом получить цену на произвольную дату - бегом к букварю, тема "запрос с подзапросом". =;-)))
...
Рейтинг: 0 / 0
Каждая цена на день или периоды...
    #36462400
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ineedyouНу и пусть себе входит. Стоимость подсчитывается одним нехитрым запросом. В диапазонах есть преимущество - их можно оставлять открытыми справа до тех пор, пока не радятся новые цены.
для этого не нужны диапазоны, достаточно одной даты - начало.
...
Рейтинг: 0 / 0
Каждая цена на день или периоды...
    #36462655
ineedyou
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iscrafm
для этого не нужны диапазоны, достаточно одной даты - начало.
Это тема для отдельного разговора, как организовать диапазон - одной датой (начало/конец) или обеими. Тут же решается вопрос - календарь (читай - справочник на каждый день) или диапазоны.

Но если посмотреть под другим ракурсом - одна запись в календаре это вырожденный диапазон. Можно выстроить логику работы с календарём так: при отсутствии записи за определённый день, подразумеваем что ближайшая запись до этой даты, определяет диапазон (по аналогии с курсами валют на выходные дни).
...
Рейтинг: 0 / 0
Каждая цена на день или периоды...
    #36462688
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все равно предложу http://sql.ru/forum/actualthread.aspx?tid=620607
С уважением, Naf
...
Рейтинг: 0 / 0
Каждая цена на день или периоды...
    #36463806
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно исходить из структуры прейскуранта. На удобство SQL запросов тут можно вообще забить. Задачи тарификации решаются не на SQL, а на процедурных языках. Так значительно проще.

Скорее вего нужно говорить не о цене на день, а о категории дня. Добаляем сюда категорию номера, дополнительное место, количество гостей, категорию возраста гостей (дети дешевле) и т.п. Цена будет находиться на пересечении некоторых из этих категорий. Затем применяем действующую формулу расчёта. Скидки. Например, каждый десятый день бесплатно. Налоги. Всё это написать в одном SQL запросе можно только в очень простом случае. Небольшое изменение правил прейскуранта и запрос придётся переделывать и существенно усложнять.

Вариант с диапазонами дат имеет то преимущество, что допускает перекрывающиеся диапазоны, что сокращает объём кодирования данных. Если есть базовое правило к которому добавляются исключения - праздники, акции, низкий сезон и т.п. Без диапазонов вам придётся кодировать в БД каждую смену тарифа. С диапазонами вы просто заводите базовую запись и несколько записей на исключительные случаи. Выходные можно функцией посчитать (но можно и календарь сделать), парздники и переносы выходных, как исключение из правила.
...
Рейтинг: 0 / 0
Каждая цена на день или периоды...
    #36473946
divv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мы делали несколько лет назад систему для туроператора. Выбрали решение с периодами (От, До). При поддержке это оказалось неудобно. Сейчас бы я выбрал вариант с ценой на каждый день. Тем более, что эти цены всегда планируются в турбизнесе на сезон вперед.
...
Рейтинг: 0 / 0
Каждая цена на день или периоды...
    #36474865
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня есть ещё такая идея.

Первоначально пользователь заводит цену на период. Это сокращает объём ввода.
Затем система генерит цены на каждый день. Это упрощает работу с данными.

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


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