|
Каждая цена на день или периоды...
|
|||
---|---|---|---|
#18+
возьмём пример номера отеля, цена на который изменяется с течением времени ... 12.05-22.05 - 25$ 23.05-30.05 - 30$ ... на первый взгляд проще создать календарик - с ценой на день и получаем элементарные запросы по общей сумме за период.. а какие плюсы хранения периодов? (быть может есть примеры запросов..) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2010, 18:09 |
|
Каждая цена на день или периоды...
|
|||
---|---|---|---|
#18+
спрошу_ка_явозьмём пример номера отеля, цена на который изменяется с течением времени ... 12.05-22.05 - 25$ 23.05-30.05 - 30$ ... на первый взгляд проще создать календарик - с ценой на день и получаем элементарные запросы по общей сумме за период.. а какие плюсы хранения периодов? (быть может есть примеры запросов..) Сколько записей будет за год, если использовать "календарик"? 365 А сколько, если цена не менялась в течении года и использовать периоды? 1. Есть разница? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2010, 18:14 |
|
Каждая цена на день или периоды...
|
|||
---|---|---|---|
#18+
Edkonst2008 Сколько записей будет за год, если использовать "календарик"? 365 А сколько, если цена не менялась в течении года и использовать периоды? 1. Есть разница? подразумевается исключительно под летний период... с периодами конечно красивее и практичнее, но запросы тоже намного тяжелее... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2010, 18:19 |
|
Каждая цена на день или периоды...
|
|||
---|---|---|---|
#18+
спрошу_ка_яподразумевается исключительно под летний период... Хранение цен отелей - в общем (обычно) - соблюдается календарно, а не периодами. Существуют расценки (бизнес и кэжуал) под различные категории путешественников - каждый отель имеет своих "постоянных" клиентов, но и привлекает "сторонних" Или в деловой части города посетели к примеру живут только в рабочие дни, а по выходным отель стоит пустой.. Например в городах-казино - есть расценки начала и конца недели. Или цены связаны с праздниками (например каникулярными неделями). Или вот к примеру - матч по футболу в какой то день запланирован... Я бы посоветовала всё таки иметь календарные расценки. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2010, 18:49 |
|
Каждая цена на день или периоды...
|
|||
---|---|---|---|
#18+
спрошу_ка_яс периодами конечно красивее и практичнее, но запросы тоже намного тяжелее... и в чем эта тяжесть заключается? тяжесть в изменении таких данных (скорости обновления), но вы же их не часто будете менять? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2010, 09:09 |
|
Каждая цена на день или периоды...
|
|||
---|---|---|---|
#18+
спрошу_ка_явозьмём пример номера отеля, цена на который изменяется с течением времени ... 12.05-22.05 - 25$ 23.05-30.05 - 30$ ... на первый взгляд проще создать календарик - с ценой на день и получаем элементарные запросы по общей сумме за период.. а какие плюсы хранения периодов? (быть может есть примеры запросов..) если БД оракл, то я бы сделала 12.05 25$ 23.05 30$ достаточно легко запросом вытаскивать период и/или последнюю дату действия, попадание даты в диапазон и т.д. Насчет других субд - не помню, не знаю... Если сложные, частые изменения, но критичны объемы хранимой информации... тогда... Определить некий учетный временной период, например, неделя или месяц или год и т.п. Хранить для текущего временного периода - календарем, для архивных - периодами. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2010, 12:50 |
|
Каждая цена на день или периоды...
|
|||
---|---|---|---|
#18+
DataFlowerесли БД оракл, то я бы сделала 12.05 25$ 23.05 30$ достаточно легко запросом вытаскивать период и/или последнюю дату действия, попадание даты в диапазон и т.д. насколько удобно узнать цену на 17.05? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2010, 12:53 |
|
Каждая цена на день или периоды...
|
|||
---|---|---|---|
#18+
NafDataFlowerесли БД оракл, то я бы сделала 12.05 25$ 23.05 30$ достаточно легко запросом вытаскивать период и/или последнюю дату действия, попадание даты в диапазон и т.д. насколько удобно узнать цену на 17.05? Код: plaintext 1. 2. 3. 4.
даст ту же таблицу с диапазоном. Неудобно, но зато никакого риска логических ошибок типа start_day end_day price12.05 20.05 25$ 23.05 30.05 30$ ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2010, 13:44 |
|
Каждая цена на день или периоды...
|
|||
---|---|---|---|
#18+
Код: plaintext
понятно, что какую-то будущую дату или текущий день... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2010, 13:47 |
|
Каждая цена на день или периоды...
|
|||
---|---|---|---|
#18+
DataFlower Неудобно, но зато никакого риска логических ошибок типа start_day end_day price12.05 20.05 25$ 23.05 30.05 30$ Логические ошибки при хранении диапазонов можно избежать, добавив DEFERRABLE CONSTRAINT FOREIGN KEY с end_day на start_day. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2010, 14:01 |
|
Каждая цена на день или периоды...
|
|||
---|---|---|---|
#18+
как я и говорил, хранить удобно и красиво, а вот с выборками, если ещё нужный период расчёта входит в разные ценовые диапазоны... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2010, 20:47 |
|
Каждая цена на день или периоды...
|
|||
---|---|---|---|
#18+
Ну и пусть себе входит. Стоимость подсчитывается одним нехитрым запросом. В диапазонах есть преимущество - их можно оставлять открытыми справа до тех пор, пока не радятся новые цены. В случае с каледарем придется загодя заполнять его. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2010, 23:59 |
|
Каждая цена на день или периоды...
|
|||
---|---|---|---|
#18+
ineedyou В случае с каледарем придется загодя заполнять его. На самом деле так оно и происходит - называется этот процесс "планирование размещения клиентов" В Каждой гостиннице есть ещё и так называемый "мейнтенанс период" на разного рода санитарно технические мероприятия. Они тем более планируются загодя. Дело в том что вот как раз диапазон ценовой не обладает гибкостью немедленного изменения цены под нужды бизнеса. А календарь - вполне. Хотя и диапазоны также хранятся в формате "рекомендованных" ценовых показателей. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2010, 00:17 |
|
Каждая цена на день или периоды...
|
|||
---|---|---|---|
#18+
У каждой гостинницы есть ко всему ещё и показатель дневной процентной загрузки. Цены могут быть изменены в соответствие и с этим показателем. Например если в течение недели загрузка была 85% и выше - у менеджера есть право определить повышенную надбавку на каждую ночь - ведь каждая дополнительная занятая комната кроме дохода влечёт за собой и повышенные риски. например - не проведённый вовремя тех контроль на пятом этаже дополнительно занятого номера повлёк за собой затопление трёх четырёх номеров внизу ... и так далее... То же с низкой дневной процентной загрузкой - менеджер имеет право определить скидки 10%-15% на комнату с целью повысить тот самый процент. Планирование включает в себя в том числе и правильную подготовку показателя загрузки отеля на весь год. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2010, 00:28 |
|
Каждая цена на день или периоды...
|
|||
---|---|---|---|
#18+
Диапазоны можно делать наследуемыми, перекрывающимися с разным приоритетом (сезон->выходные дни->праздники и дни особых мероприятий). Но в то же время разбить или слить два диапазона сложнее, чем проапдейтить Н строк. Если за календарем будут следить должным образом - то в гостинничном применеии он скорее всего более живуч, а если автоматизация порученная ТС проводится по остаточному принципу ... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2010, 00:33 |
|
Каждая цена на день или периоды...
|
|||
---|---|---|---|
#18+
спрошу_ка_явозьмём пример номера отеля, цена на который изменяется с течением времени ... 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кока там ваще тех номеров и насколько часто цена меняется ))) ). А кто не знает как одним запросом получить цену на произвольную дату - бегом к букварю, тема "запрос с подзапросом". =;-))) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2010, 04:57 |
|
Каждая цена на день или периоды...
|
|||
---|---|---|---|
#18+
ineedyouНу и пусть себе входит. Стоимость подсчитывается одним нехитрым запросом. В диапазонах есть преимущество - их можно оставлять открытыми справа до тех пор, пока не радятся новые цены. для этого не нужны диапазоны, достаточно одной даты - начало. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2010, 10:53 |
|
Каждая цена на день или периоды...
|
|||
---|---|---|---|
#18+
iscrafm для этого не нужны диапазоны, достаточно одной даты - начало. Это тема для отдельного разговора, как организовать диапазон - одной датой (начало/конец) или обеими. Тут же решается вопрос - календарь (читай - справочник на каждый день) или диапазоны. Но если посмотреть под другим ракурсом - одна запись в календаре это вырожденный диапазон. Можно выстроить логику работы с календарём так: при отсутствии записи за определённый день, подразумеваем что ближайшая запись до этой даты, определяет диапазон (по аналогии с курсами валют на выходные дни). ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2010, 11:58 |
|
Каждая цена на день или периоды...
|
|||
---|---|---|---|
#18+
все равно предложу http://sql.ru/forum/actualthread.aspx?tid=620607 С уважением, Naf ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2010, 12:05 |
|
Каждая цена на день или периоды...
|
|||
---|---|---|---|
#18+
Нужно исходить из структуры прейскуранта. На удобство SQL запросов тут можно вообще забить. Задачи тарификации решаются не на SQL, а на процедурных языках. Так значительно проще. Скорее вего нужно говорить не о цене на день, а о категории дня. Добаляем сюда категорию номера, дополнительное место, количество гостей, категорию возраста гостей (дети дешевле) и т.п. Цена будет находиться на пересечении некоторых из этих категорий. Затем применяем действующую формулу расчёта. Скидки. Например, каждый десятый день бесплатно. Налоги. Всё это написать в одном SQL запросе можно только в очень простом случае. Небольшое изменение правил прейскуранта и запрос придётся переделывать и существенно усложнять. Вариант с диапазонами дат имеет то преимущество, что допускает перекрывающиеся диапазоны, что сокращает объём кодирования данных. Если есть базовое правило к которому добавляются исключения - праздники, акции, низкий сезон и т.п. Без диапазонов вам придётся кодировать в БД каждую смену тарифа. С диапазонами вы просто заводите базовую запись и несколько записей на исключительные случаи. Выходные можно функцией посчитать (но можно и календарь сделать), парздники и переносы выходных, как исключение из правила. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2010, 16:50 |
|
Каждая цена на день или периоды...
|
|||
---|---|---|---|
#18+
Мы делали несколько лет назад систему для туроператора. Выбрали решение с периодами (От, До). При поддержке это оказалось неудобно. Сейчас бы я выбрал вариант с ценой на каждый день. Тем более, что эти цены всегда планируются в турбизнесе на сезон вперед. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 02:28 |
|
Каждая цена на день или периоды...
|
|||
---|---|---|---|
#18+
У меня есть ещё такая идея. Первоначально пользователь заводит цену на период. Это сокращает объём ввода. Затем система генерит цены на каждый день. Это упрощает работу с данными. Тут возникает задача трассировки зависимостей. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 13:25 |
|
|
start [/forum/search_topic.php?author=%D0%A2%D0%B8%D1%82%D0%BE%D0%B2+%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B0%D0%BD%D0%B4%D1%80&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
9ms |
get first new msg: |
7ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 1589ms |
total: | 1756ms |
0 / 0 |