|
|
|
Проектирование динамических структур - продажа изменяемых комплектов.
|
|||
|---|---|---|---|
|
#18+
Прошу поделиться соображениями по следующей задаче. Есть иерархические структуры - комплекты изделий, с уровнем вложенности не более 5. Цена на комплект может меняться в зависимости от структуры комплекта. Не от номенклатуры, а именно от структуры. То есть цена комплекта это сумма всех деталей входящих в комплект и минус скидка за вхождение определённых деталей в определённую ступень иерархии комплекта. Уф... Комплекты ко всему ещё и меняются во время эксплуатации ПО. То есть пользователь должен иметь возможность "нарисовать" дерево комплекта - укомплектовать детали на различном уровне и установить зависимости на скидки. После этого всё это дело должно продаваться. Я понимаю что тяжеловато, но может кто-то уже сталкивался. Заранее, спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2008, 15:37 |
|
||
|
Проектирование динамических структур - продажа изменяемых комплектов.
|
|||
|---|---|---|---|
|
#18+
На мой взгляд, всё зависит от инструмента, который используется для разработки клиентской части. В общем виде это выглядит примерно так: Комплект (id, name) Изделие (id, name, price) Иерархия комплектов (id, Комплект_id, Комплект_parentid) Изделия комплектов (id, Изделие_id, Иерархия комплектов_id, discount) Стоимость для иерархии комплектов рассчитывается сиквельным запросом... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2008, 16:24 |
|
||
|
Проектирование динамических структур - продажа изменяемых комплектов.
|
|||
|---|---|---|---|
|
#18+
freestyle, Спасибо. Кручусь вокруг. Но смущают меня эти обходы по дереву и вообще всё что связано с иерархическими структурами. Есть опыт работы с ними? Фокусов не будет на тысячном комплекте? Типа мемори аут? Может быть лучше заранее забитая ненормализованная структура и куча полупустых таблиц? На самом деле задача сложнее - там ещё зависимость цены от даты и структуры других комплектов. То есть скидка на комплект Б предоставляется если заказчик уже брал комплект А не позднее одного года назад. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2008, 17:04 |
|
||
|
Проектирование динамических структур - продажа изменяемых комплектов.
|
|||
|---|---|---|---|
|
#18+
albert t Есть опыт работы с ними? Фокусов не будет на тысячном комплекте? Типа мемори аут? Опыт работы с ними есть. Фокусов не встречал. albert t Может быть лучше заранее забитая ненормализованная структура и куча полупустых таблиц? Может быть и лучше - тебе решать. albert t На самом деле задача сложнее - там ещё зависимость цены от даты и структуры других комплектов. Если меняется цена товара, то ее лучше вынести в отдельную таблицу: Цена товара (id, Товар_id, date, price). Зависимость от структуры других комплектов решается сиквельным запросом. albert t То есть скидка на комплект Б предоставляется если заказчик уже брал комплект А не позднее одного года назад. И эта проблема решается сиквельным запросом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2008, 23:03 |
|
||
|
Проектирование динамических структур - продажа изменяемых комплектов.
|
|||
|---|---|---|---|
|
#18+
freestyle, Спасибо. А если усложнить ТЗ. Пусть есть дерево комплекта с ветками. Я даю скидку если товар Б присутствует в ветках 1 и 2. А клиент хочет комплект без ветки 2. Делать два разных комплекта? Но заранее предсказать все варианты комплектов практически невозможно. Или спроектировать возможность для клиента включать определённые ветки в комплект самостоятельно? Это реально? На всякий случай - физический объект - система заказов для юридической компании. Комлект - это дело в который входят папки которые состоят из документов. Каждый документ имеет цену в зависимости от того был он в деле раньше или может быть в другом деле уже получен. Но конкретный состав каждого дела определяет клиент. Хотя правила для скидок и ценообразования определены и не меняются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2008, 13:34 |
|
||
|
Проектирование динамических структур - продажа изменяемых комплектов.
|
|||
|---|---|---|---|
|
#18+
albert tНа всякий случай - физический объект - система заказов для юридической компании. Комлект - это дело в который входят папки которые состоят из документов. Каждый документ имеет цену в зависимости от того был он в деле раньше или может быть в другом деле уже получен. Но конкретный состав каждого дела определяет клиент. Хотя правила для скидок и ценообразования определены и не меняются.Если у вас есть правила по которому расчитывается стоимость - то составте процедуру, которая это считает. Когда клиент сам формирует заказ - он выбирает что именно ему надо, а потом когда заказ сформирован - запускается процедура расчета стоимости и определяет стоимость по созданному комплекту. Если процедура будет работать достаточно быстро - ее можно запускать при каждом изменении комплекта. Тогда получится "on-line расчет стоимости". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2008, 13:54 |
|
||
|
Проектирование динамических структур - продажа изменяемых комплектов.
|
|||
|---|---|---|---|
|
#18+
Bely, Правила достаточно сложные. Точнее простые но сложные для алгоритмизации. Есть зависимости типа "Если документ А был получен в ветке 2, дела Б не позднее года назад тогда скидка 30%" Правила склдываются из множественных зависимостей между различными атрибутами документов, такими как дата, наличие, количество, язык, страна. То есть каждое конкретное правило простое, но процедура - это будет целый сложный парсер, со всеми вытекающими. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2008, 14:16 |
|
||
|
Проектирование динамических структур - продажа изменяемых комплектов.
|
|||
|---|---|---|---|
|
#18+
albert t, идиотские задачи не имеют простых решений. У вашей задачи их два, и оба - сложные. Первое - использовать rule engine (для особых любителей геморроя - BPMS) для расчета цены. Реализуется любая бредовая логика. Второе - объяснить постановщику задачи, что он дебил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2008, 15:56 |
|
||
|
Проектирование динамических структур - продажа изменяемых комплектов.
|
|||
|---|---|---|---|
|
#18+
albert tПравила достаточно сложные. Точнее простые но сложные для алгоритмизации. Есть зависимости типа "Если документ А был получен в ветке 2, дела Б не позднее года назад тогда скидка 30%" Правила склдываются из множественных зависимостей между различными атрибутами документов, такими как дата, наличие, количество, язык, страна. То есть каждое конкретное правило простое, но процедура - это будет целый сложный парсер, со всеми вытекающими.Ну вот ты и дождался того, что guest подключился По поводу правил и процедуры. 1) Скорее всего процедура окажется не такая уж и сложная, как кажется. Да, в ней будет отрабатываться много правил, но каждое правило в отдельности - будут достаточно просты. 2) У вас есть два пути - либо писать такую процедуру, либо ... не писать. В первом случае - цена будет расчитываться машиной, во втором - только человеком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2008, 16:58 |
|
||
|
Проектирование динамических структур - продажа изменяемых комплектов.
|
|||
|---|---|---|---|
|
#18+
guest_20040621, задача несколько раз решена иностранными разработчим, у заказчика на столе коммерческие предложения. сложно в такой обстановке объяснять. да и зачем? бюджет вроде бы нормальный. ладно буду воевать. получиться что то оригинальное кину решение сюда. жду любых предложений и обсуждения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2008, 20:04 |
|
||
|
Проектирование динамических структур - продажа изменяемых комплектов.
|
|||
|---|---|---|---|
|
#18+
Bely По поводу правил и процедуры. 1) Скорее всего процедура окажется не такая уж и сложная, как кажется. Да, в ней будет отрабатываться много правил, но каждое правило в отдельности - будут достаточно просты. 2) У вас есть два пути - либо писать такую процедуру, либо ... не писать. В первом случае - цена будет расчитываться машиной, во втором - только человеком. Какой инструмент будет использоваться для разработки клиентской части? Если инструмент позволит, то можно обойтись сиквельным запросом для расчета стоимости комплектов, а вот процедуру придется вызывать каждый раз при изменении комплектов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2008, 22:01 |
|
||
|
Проектирование динамических структур - продажа изменяемых комплектов.
|
|||
|---|---|---|---|
|
#18+
> задача несколько раз решена иностранными разработчим Я вам больше скажу: есть куча готовых open source rule engine на любой вкус. Выбирайте и пользуйтесь. > получиться что то оригинальное Иногда полезнее взять молоток побольше. Для того, чтобы использовать произвольные ограничения, вы будете вынуждены использовать и метаописание структуры базы данных, и метаописание структуры данных. Других корректных способов решения вашей задачи не существует. Оно вам действительно надо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2008, 23:16 |
|
||
|
Проектирование динамических структур - продажа изменяемых комплектов.
|
|||
|---|---|---|---|
|
#18+
авторЯ вам больше скажу: есть куча готовых open source rule engine на любой вкус. Выбирайте и пользуйтесь. Спасибо, поищу. авторОно вам действительно надо? Во-первых, интересно; во-вторых, кушать хочется; в-третьих, уже вожжа под хвост попала; в-четвёртых, ковыряясь с иерархическими структурами и метаданными чувствуешь себя причастным к чему-то таинственному и очень важному :) В целом у меня пока четыре сплетённых дерева метаданных. Этапы. Документы. Атрибуты. Заказы. Сиквел говорит что у него нет корректных инструментов для работы с данными структурами (MSSQL2005 библия пользователя). Одно дерево, или сеть, можно легко заполнить но сложно извлекать. Два взаимопересекающихся дерева сложно и заполнить - для заполнения одного нужно сразу извлекать из второго. Про четыре я молчу, хотя это увеличение сложности экстенсивное, количественное. Эта модель корректно хранит всю реальную систему. Но работать видимо с ней невозможно. Да и опыта маловато. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2008, 11:26 |
|
||
|
Проектирование динамических структур - продажа изменяемых комплектов.
|
|||
|---|---|---|---|
|
#18+
freestyle, asp чувствую, что без тяжёлого клиента не обойтись. excell замечательно подходит :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2008, 11:29 |
|
||
|
Проектирование динамических структур - продажа изменяемых комплектов.
|
|||
|---|---|---|---|
|
#18+
> во-вторых, кушать хочется; Это не тот проект, на котором можно заработать. Есть шанс потратить кучу времени и не получить решения. > В целом у меня пока четыре сплетённых дерева метаданных. Достаточно выделить документы и процессы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2008, 13:06 |
|
||
|
Проектирование динамических структур - продажа изменяемых комплектов.
|
|||
|---|---|---|---|
|
#18+
guest_20040621> Достаточно выделить документы и процессы. К сожалению нет. Это было бы просто. Самое неприятное это как раз система скидок, которая зависит от атрибутов типа время, цена, наличие, страна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2008, 13:22 |
|
||
|
Проектирование динамических структур - продажа изменяемых комплектов.
|
|||
|---|---|---|---|
|
#18+
> система скидок, которая зависит от атрибутов типа время, цена, наличие, страна У вас есть две сущности: документы и процессы. Все ограничения зависят от их атрибутов. Наличие готовых изделий на определенную дату - это тоже атрибуты процесса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2008, 13:49 |
|
||
|
Проектирование динамических структур - продажа изменяемых комплектов.
|
|||
|---|---|---|---|
|
#18+
albert tОдно дерево, или сеть, можно легко заполнить но сложно извлекать.Эээ... А как насчет иерархических запросов? А по поводу MS SQL - там можно и ХП несложную с одним циклом настругать... albert tДва взаимопересекающихся дерева сложно и заполнить - для заполнения одного нужно сразу извлекать из второго.А нужно сперва заполнять дерево, а линковать уже имеющиеся документы можно после заполнения. Причем - можно предложить пользователю вариант: "Вы уже получили это документ ранее - ХХ марта 2008. Выдать новый или использовать имеющийся (Y/N)?" albert tЭта модель корректно хранит всю реальную систему. Но работать видимо с ней невозможно. Да и опыта маловато.Работать невозможно с программами. Структура данных должна быть правильной (всеравно какая), а программа удобная и понятная для человека. Заставить программу записать данные "так как нужно", а не "так как видит человек" - не самая сложная задача. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2008, 13:57 |
|
||
|
Проектирование динамических структур - продажа изменяемых комплектов.
|
|||
|---|---|---|---|
|
#18+
Приступаю к тестированию следующей модели. Есть два дерева Комплекты и Документы, реализованные с помощью иерархических таблиц. Стыкцются они в таблиуе Точки. В ней же назначается фиксированная цена. Покупатель будет набирать себе необходимый динамический набор веток Комплектов. Есть таблица Скидки и таблица Условия. В Условиях в качестве записей параметризированные запросы. После добавления ветки Комплекта, тригер просчитывает необходимые условия и формирует таблицу Скидки. Есть ноу-хау :) Для того чтобы избежать необходимости формировать множественные связи, например Скидки на Документ, на Структуру Документа, на Элемент Структуры Документа - вставляем пустышки. И можем получить Скидку на весь документ протащив по таблицам записи пустышки, точнее записи с зарезервированным словом. Так же и для Комлектов. То есть если надо Документ привязать не к Фазе и не к Этапу (подтаблицы Комплктов) в Фазу и Этап вставляем зарезервированные пустышки. Отказаться от борьбы с заумностями помогло вступление к библии пользователя МССиквела 2005. Всем настоятельно рекамендую первые 150 страниц прочитать и использовать в повседенвной практике дух и букву. О результатах тестирования сообщу. Правда пока не знаю как запускать запросы которые храняться как запись в таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2008, 11:01 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=97&tid=1543595]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
68ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 232ms |
| total: | 421ms |

| 0 / 0 |
