powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование динамических структур - продажа изменяемых комплектов.
19 сообщений из 19, страница 1 из 1
Проектирование динамических структур - продажа изменяемых комплектов.
    #35620718
albert t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу поделиться соображениями по следующей задаче.

Есть иерархические структуры - комплекты изделий, с уровнем вложенности не более 5.

Цена на комплект может меняться в зависимости от структуры комплекта. Не от номенклатуры, а именно от структуры. То есть цена комплекта это сумма всех деталей входящих в комплект и минус скидка за вхождение определённых деталей в определённую ступень иерархии комплекта.

Уф...

Комплекты ко всему ещё и меняются во время эксплуатации ПО. То есть пользователь должен иметь возможность "нарисовать" дерево комплекта - укомплектовать детали на различном уровне и установить зависимости на скидки.

После этого всё это дело должно продаваться.

Я понимаю что тяжеловато, но может кто-то уже сталкивался.

Заранее, спасибо.
...
Рейтинг: 0 / 0
Проектирование динамических структур - продажа изменяемых комплектов.
    #35620942
freestyle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На мой взгляд, всё зависит от инструмента, который используется для разработки клиентской части.
В общем виде это выглядит примерно так:

Комплект (id, name)
Изделие (id, name, price)

Иерархия комплектов (id, Комплект_id, Комплект_parentid)
Изделия комплектов (id, Изделие_id, Иерархия комплектов_id, discount)

Стоимость для иерархии комплектов рассчитывается сиквельным запросом...
...
Рейтинг: 0 / 0
Проектирование динамических структур - продажа изменяемых комплектов.
    #35621088
albert t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
freestyle,

Спасибо. Кручусь вокруг. Но смущают меня эти обходы по дереву и вообще всё что связано с иерархическими структурами.

Есть опыт работы с ними? Фокусов не будет на тысячном комплекте? Типа мемори аут?

Может быть лучше заранее забитая ненормализованная структура и куча полупустых таблиц?

На самом деле задача сложнее - там ещё зависимость цены от даты и структуры других комплектов.

То есть скидка на комплект Б предоставляется если заказчик уже брал комплект А не позднее одного года назад.
...
Рейтинг: 0 / 0
Проектирование динамических структур - продажа изменяемых комплектов.
    #35621622
freestyle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
albert t
Есть опыт работы с ними? Фокусов не будет на тысячном комплекте? Типа мемори аут?
Опыт работы с ними есть. Фокусов не встречал.

albert t
Может быть лучше заранее забитая ненормализованная структура и куча полупустых таблиц?
Может быть и лучше - тебе решать.

albert t
На самом деле задача сложнее - там ещё зависимость цены от даты и структуры других комплектов.
Если меняется цена товара, то ее лучше вынести в отдельную таблицу: Цена товара (id, Товар_id, date, price).
Зависимость от структуры других комплектов решается сиквельным запросом.

albert t
То есть скидка на комплект Б предоставляется если заказчик уже брал комплект А не позднее одного года назад.
И эта проблема решается сиквельным запросом.
...
Рейтинг: 0 / 0
Проектирование динамических структур - продажа изменяемых комплектов.
    #35622807
albert t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
freestyle,

Спасибо.

А если усложнить ТЗ.

Пусть есть дерево комплекта с ветками. Я даю скидку если товар Б присутствует в ветках 1 и 2. А клиент хочет комплект без ветки 2.

Делать два разных комплекта? Но заранее предсказать все варианты комплектов практически невозможно. Или спроектировать возможность для клиента включать определённые ветки в комплект самостоятельно? Это реально?

На всякий случай - физический объект - система заказов для юридической компании. Комлект - это дело в который входят папки которые состоят из документов. Каждый документ имеет цену в зависимости от того был он в деле раньше или может быть в другом деле уже получен. Но конкретный состав каждого дела определяет клиент. Хотя правила для скидок и ценообразования определены и не меняются.
...
Рейтинг: 0 / 0
Проектирование динамических структур - продажа изменяемых комплектов.
    #35622864
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
albert tНа всякий случай - физический объект - система заказов для юридической компании. Комлект - это дело в который входят папки которые состоят из документов. Каждый документ имеет цену в зависимости от того был он в деле раньше или может быть в другом деле уже получен. Но конкретный состав каждого дела определяет клиент. Хотя правила для скидок и ценообразования определены и не меняются.Если у вас есть правила по которому расчитывается стоимость - то составте процедуру, которая это считает.

Когда клиент сам формирует заказ - он выбирает что именно ему надо, а потом когда заказ сформирован - запускается процедура расчета стоимости и определяет стоимость по созданному комплекту.

Если процедура будет работать достаточно быстро - ее можно запускать при каждом изменении комплекта. Тогда получится "on-line расчет стоимости".
...
Рейтинг: 0 / 0
Проектирование динамических структур - продажа изменяемых комплектов.
    #35622957
albert t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Bely,

Правила достаточно сложные. Точнее простые но сложные для алгоритмизации. Есть зависимости типа "Если документ А был получен в ветке 2, дела Б не позднее года назад тогда скидка 30%"
Правила склдываются из множественных зависимостей между различными атрибутами документов, такими как дата, наличие, количество, язык, страна. То есть каждое конкретное правило простое, но процедура - это будет целый сложный парсер, со всеми вытекающими.
...
Рейтинг: 0 / 0
Проектирование динамических структур - продажа изменяемых комплектов.
    #35623305
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
albert t, идиотские задачи не имеют простых решений. У вашей задачи их два, и оба - сложные. Первое - использовать rule engine (для особых любителей геморроя - BPMS) для расчета цены. Реализуется любая бредовая логика. Второе - объяснить постановщику задачи, что он дебил.
...
Рейтинг: 0 / 0
Проектирование динамических структур - продажа изменяемых комплектов.
    #35623570
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
albert tПравила достаточно сложные. Точнее простые но сложные для алгоритмизации. Есть зависимости типа "Если документ А был получен в ветке 2, дела Б не позднее года назад тогда скидка 30%"
Правила склдываются из множественных зависимостей между различными атрибутами документов, такими как дата, наличие, количество, язык, страна. То есть каждое конкретное правило простое, но процедура - это будет целый сложный парсер, со всеми вытекающими.Ну вот ты и дождался того, что guest подключился

По поводу правил и процедуры.
1) Скорее всего процедура окажется не такая уж и сложная, как кажется.
Да, в ней будет отрабатываться много правил, но каждое правило в отдельности - будут достаточно просты.

2) У вас есть два пути - либо писать такую процедуру, либо ... не писать. В первом случае - цена будет расчитываться машиной, во втором - только человеком.
...
Рейтинг: 0 / 0
Проектирование динамических структур - продажа изменяемых комплектов.
    #35624072
albert t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_20040621,

задача несколько раз решена иностранными разработчим, у заказчика на столе коммерческие предложения. сложно в такой обстановке объяснять. да и зачем? бюджет вроде бы нормальный.

ладно буду воевать. получиться что то оригинальное кину решение сюда.

жду любых предложений и обсуждения.
...
Рейтинг: 0 / 0
Проектирование динамических структур - продажа изменяемых комплектов.
    #35624181
freestyle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bely
По поводу правил и процедуры.
1) Скорее всего процедура окажется не такая уж и сложная, как кажется.
Да, в ней будет отрабатываться много правил, но каждое правило в отдельности - будут достаточно просты.

2) У вас есть два пути - либо писать такую процедуру, либо ... не писать. В первом случае - цена будет расчитываться машиной, во втором - только человеком.

Какой инструмент будет использоваться для разработки клиентской части?
Если инструмент позволит, то можно обойтись сиквельным запросом для расчета стоимости комплектов, а вот процедуру придется вызывать каждый раз при изменении комплектов.
...
Рейтинг: 0 / 0
Проектирование динамических структур - продажа изменяемых комплектов.
    #35624243
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> задача несколько раз решена иностранными разработчим

Я вам больше скажу: есть куча готовых open source rule engine на любой вкус. Выбирайте и пользуйтесь.

> получиться что то оригинальное

Иногда полезнее взять молоток побольше. Для того, чтобы использовать произвольные ограничения, вы будете вынуждены использовать и метаописание структуры базы данных, и метаописание структуры данных. Других корректных способов решения вашей задачи не существует. Оно вам действительно надо?
...
Рейтинг: 0 / 0
Проектирование динамических структур - продажа изменяемых комплектов.
    #35624993
albert t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторЯ вам больше скажу: есть куча готовых open source rule engine на любой вкус. Выбирайте и пользуйтесь.

Спасибо, поищу.

авторОно вам действительно надо?

Во-первых, интересно; во-вторых, кушать хочется; в-третьих, уже вожжа под хвост попала; в-четвёртых, ковыряясь с иерархическими структурами и метаданными чувствуешь себя причастным к чему-то таинственному и очень важному :)

В целом у меня пока четыре сплетённых дерева метаданных. Этапы. Документы. Атрибуты. Заказы. Сиквел говорит что у него нет корректных инструментов для работы с данными структурами (MSSQL2005 библия пользователя).

Одно дерево, или сеть, можно легко заполнить но сложно извлекать.

Два взаимопересекающихся дерева сложно и заполнить - для заполнения одного нужно сразу извлекать из второго.

Про четыре я молчу, хотя это увеличение сложности экстенсивное, количественное.

Эта модель корректно хранит всю реальную систему. Но работать видимо с ней невозможно. Да и опыта маловато.
...
Рейтинг: 0 / 0
Проектирование динамических структур - продажа изменяемых комплектов.
    #35625005
albert t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
freestyle,

asp

чувствую, что без тяжёлого клиента не обойтись.

excell замечательно подходит :)
...
Рейтинг: 0 / 0
Проектирование динамических структур - продажа изменяемых комплектов.
    #35625321
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> во-вторых, кушать хочется;

Это не тот проект, на котором можно заработать. Есть шанс потратить кучу времени и не получить решения.

> В целом у меня пока четыре сплетённых дерева метаданных.

Достаточно выделить документы и процессы.
...
Рейтинг: 0 / 0
Проектирование динамических структур - продажа изменяемых комплектов.
    #35625373
albert t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_20040621>

Достаточно выделить документы и процессы.

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

У вас есть две сущности: документы и процессы. Все ограничения зависят от их атрибутов. Наличие готовых изделий на определенную дату - это тоже атрибуты процесса.
...
Рейтинг: 0 / 0
Проектирование динамических структур - продажа изменяемых комплектов.
    #35625496
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
albert tОдно дерево, или сеть, можно легко заполнить но сложно извлекать.Эээ... А как насчет иерархических запросов?
А по поводу MS SQL - там можно и ХП несложную с одним циклом настругать...
albert tДва взаимопересекающихся дерева сложно и заполнить - для заполнения одного нужно сразу извлекать из второго.А нужно сперва заполнять дерево, а линковать уже имеющиеся документы можно после заполнения.
Причем - можно предложить пользователю вариант: "Вы уже получили это документ ранее - ХХ марта 2008. Выдать новый или использовать имеющийся (Y/N)?"

albert tЭта модель корректно хранит всю реальную систему. Но работать видимо с ней невозможно. Да и опыта маловато.Работать невозможно с программами. Структура данных должна быть правильной (всеравно какая), а программа удобная и понятная для человека.
Заставить программу записать данные "так как нужно", а не "так как видит человек" - не самая сложная задача.
...
Рейтинг: 0 / 0
Проектирование динамических структур - продажа изменяемых комплектов.
    #35627232
albert t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приступаю к тестированию следующей модели.

Есть два дерева Комплекты и Документы, реализованные с помощью иерархических таблиц.

Стыкцются они в таблиуе Точки. В ней же назначается фиксированная цена.

Покупатель будет набирать себе необходимый динамический набор веток Комплектов.

Есть таблица Скидки и таблица Условия. В Условиях в качестве записей параметризированные запросы.

После добавления ветки Комплекта, тригер просчитывает необходимые условия и формирует таблицу Скидки.

Есть ноу-хау :) Для того чтобы избежать необходимости формировать множественные связи, например Скидки на Документ, на Структуру Документа, на Элемент Структуры Документа - вставляем пустышки. И можем получить Скидку на весь документ протащив по таблицам записи пустышки, точнее записи с зарезервированным словом. Так же и для Комлектов. То есть если надо Документ привязать не к Фазе и не к Этапу (подтаблицы Комплктов) в Фазу и Этап вставляем зарезервированные пустышки.

Отказаться от борьбы с заумностями помогло вступление к библии пользователя МССиквела 2005. Всем настоятельно рекамендую первые 150 страниц прочитать и использовать в повседенвной практике дух и букву.

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


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