Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.02.04;
Скачать: CL | DM;

Вниз

Нид хелп   Найти похожие ветки 

 
Ломброзо ©   (2007-01-18 00:08) [0]

Имеются следующие входные условия
1) Деревянный справочник номенклатуры ~10 тыс. записей
2) Цены реализации определяются только в национальной валюте
3) Для каждой позиции в номенклатурном справочнике может быть определено несколько типов

цены реализации
4) В системе должен быть реализован один основной прейскурант, включающий в себя всю

номенклатуру, а также произвольное количество дополнительных прейскурантов, включающих в

себя все некое подмножество позиций, содержащихся в основном прейскуранте
5) Цена реализации может меняться довольно часто (возможно, даже несколько раз в день)
6) Каждый договор всегда содержит ссылку на один из прейскурантов, причем для первой

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

быть фиксированы на весь срок действия договора, для второй категории договоров (навроде

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

продажи
7) Должна поддерживаться функция группового изменения цены для данной номенклатурной единицы

во всех прейскурантах с сохранением истории изменения.

В общем, полный, как тут кто-то намедни изящно выразился, arctic fox. Я изучил реализацию

прейскуранта в парусе и 1С. Там все как-то проще.  

Структуру таблиц в черновом виде я накидал:
1) Прейскурант (код, наименование, тип={фиксированая цена, актуальная цена})
2) Версия прейскуранта (код версии, код прейскуранта, Дата изменения)
3) Цена (код цены, код версии прейскуранта, код номенклатуры, код типа цены реализации,

цена)
4) История изменения цены

Не могу принять концептуальное решение по проблеме хранения истории цены и прошу дельного совета :)

Вижу два варианта решения задачи:
1) Запретить изменение отдельных позиций номенклатуры в прейскуранте. То есть предполагаем, что все цены в каждом прейскуранте должны изменяться пользователем "пакетно", после чего система отправляет старую версию прейскуранта в архив, формируя как бы срез цен, и делает актуальной "новую" версию прейскуранта. Это решение чревато тем, что после пары тысяч нажатий кнопки "сохранить" база неимоверно распухнет
2) ОтказатьсЯ от хранения версии прейскуранта и рассчитывать срез цен на заданную дату динамически.


 
Ломброзо ©   (2007-01-18 00:08) [1]

Извиняюсь за форматирование. Это Notepad


 
Sergey Masloff   (2007-01-18 00:13) [2]

Может чего не понимаю но все ж просто... Плоская тарифная таблица

id
id прейскуранта
тип цены
цена
начало действия
окончание действия

и пожалуйста вся история без геморроя в одном месте...
Никаких архивов. Таблица цен с десятками миллионов записей при нормальных индексах будет просто летать (проверено занусси)


 
MikePetrichenko ©   (2007-01-18 00:19) [3]


> Извиняюсь за форматирование. Это Notepad

Странно, а я обычно браузером для промотра интернет страниц пользуюсь. В частности - у меня IE.

А теперь по теме: метод FIFO знаешь? Вот его аналог и применяй. Т. е. новая цена - новая запись (с датой).


 
Ломброзо ©   (2007-01-18 00:21) [4]

Sergey Masloff   (18.01.07 00:13) [2]
Ага. А без атрибута "окончание действия" можно обойтись? Юзаю Oracle - в нем вроде есть аналитические функции (LAG, LEAD), позволяющие манипулировать диапазонами. Или это сложнее?


 
Sergey Masloff   (2007-01-18 00:24) [5]

Ломброзо ©   (18.01.07 00:21) [4]
Нет не сложнее. Нормально.
А насчет постоянно действующих цен просто закрой выборку из таблицы функцией с флагом по какой версии брать. В простом случае она просто на день оказания услуги цену возвращает во втором - на дату заключения действующего договора.


 
Petr V. Abramov ©   (2007-01-18 00:24) [6]

> Sergey Masloff   (18.01.07 00:13) [2]
упрощаешь, но не принципиально
> Таблица цен с десятками миллионов записей при нормальных индексах будет просто летать (проверено занусси
1/10  - electronically tested, как пишут на презервативах, правда, на простецкой технике
partioning option не помешает, это ея случай


 
Ломброзо ©   (2007-01-18 00:26) [7]

Sergey Masloff  
MikePetrichenko

Спасибо, утряслось.



Страницы: 1 вся ветка

Текущий архив: 2007.02.04;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.052 c
2-1169158460
AlexeyT
2007-01-19 01:14
2007.02.04
Печать TImage/TBitmap?


2-1169122651
dr_craigan
2007-01-18 15:17
2007.02.04
Как отнаследовать Transparent в TMainMenu?


2-1168958890
Tujh
2007-01-16 17:48
2007.02.04
Что именно делает Windows если отключить этот параметр?


15-1168767111
vasIzmax
2007-01-14 12:31
2007.02.04
Работа в Интернете?


15-1168464147
GanibalLector
2007-01-11 00:22
2007.02.04
Порты в дистанц. управлении рабочим столом(mstsc.exe)