Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Расчеты с переменными параметрами, в ХП или на временных таблицах?
|
|||
|---|---|---|---|
|
#18+
Всем здравствуйте. Есть таблица, в которую вносятся данные. Когда добавляется новая строка, пересчитываются частично уже существующие данные. Потом на основании внесенных данных делаются расчеты. В другую таблицу вносятся коррективы, т.е. пишется какая строка из основной таблицы и как изменилась. Корректив может быть несколько (на одну и ту же запись в основной таблице). Всегда надо хранить и оригинальные данные и коррективы (поэтому они и вносятся в отдельную таблицу). На основании корректив делаются новые расчеты. Пересчет данных при добавлении записи в основную таблицу делается в ХП (в той же, в которой и добавляются данные, причем используются уже существующие данные в таблице). Теперь: если делать пересчет с учетом корректив, то можно сделать 2 варианта: 1. сделать временные таблицы, в них скопировать данные из основных таблиц уже с учетом корректив. Все это дело рассчитать уже имеющимися ХП 2. Как-то ухитриться и коррективы "наложить" на основную таблицу, чтобы не пострадали уже существующие данные. Писать новую ХП для расчета. Таблиц для расчета используется примерно 7-10, т.е. временных таблиц понадобится примерно 5. Как лучше сделать? Заранее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2005, 08:12 |
|
||
|
Расчеты с переменными параметрами, в ХП или на временных таблицах?
|
|||
|---|---|---|---|
|
#18+
Можно просто парадигму корректив поменять. Храните в таблицах корректив не какие новые данные появились в основной таблице, а какое отклонение было. Например в основной таблице лежит сумма 100. Дальше на триггере идет логика: На изменение суммы мы берем разницу между новым значением суммы и суммарным значением основной суммы плюс сумм всех ее корректив и добавляем полученное значение, как новую запись в таблицу корректив. Т.е. если сумма первый раз поменялась на 250, то в таблицу корректив мы добавим 150, если второй раз поменялась на 200, то добавим -50. Далее достаточно сделать представление или хранимую процедуру (зависит от СУБД), которое возвращает актуальное состояние сумм на указанную дату, примерно с таким запросом: Код: plaintext 1. 2. 3. P.S. Такую методику в основном я применяю для организации сторнирования каких либо расчетов, когда задним числом изменялась входящая информация и необходимо сделать перерасчет закрытых периодов и рассчитать разницу между тем что было и тем что стало для дальнейшего ее выставления в текущий открытый период. При желании ее можно прикрутить как решение к любой задаче, где есть понятие сторнирования и ведение расчетов во времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2005, 10:18 |
|
||
|
Расчеты с переменными параметрами, в ХП или на временных таблицах?
|
|||
|---|---|---|---|
|
#18+
Спасибо! У меня несколько иная ситуация: когда добавляются данные в основную таблицу, пересчитываются некоторые значения полей у части уже существующих данных. Пересчитываются и значения обновляются. Потом уже расчет ведется на основании новых пересчитанных данных. Сответственно, пересчет с учетом корректив должен выглядеть примерно так: посчитали коррективы->обновили часть полей у данных в основной таблице->произвели расчет. Вот обновление и смущает - мне все же надо в основной таблице иметь оригинальные данные, т.е. те, которые были внесены без учета корректив. Именно для этого я и хотел создать временные таблицы, чтобы в них скопировать содержимое исходных таблиц, но уже с коррективами и пеерсчитанными колонками. А потом уже на временные таблицы "запустить" ХП, чтобы она все расчитала ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2005, 11:04 |
|
||
|
Расчеты с переменными параметрами, в ХП или на временных таблицах?
|
|||
|---|---|---|---|
|
#18+
KezyaСответственно, пересчет с учетом корректив должен выглядеть примерно так: посчитали коррективы->обновили часть полей у данных в основной таблице->произвели расчет. На мой взляд в этом и состоит ошибка при проэктировании Вашей БД, в одной таблице содержатся как оригинальные данные, так и расчитанные с учетом коррекции (лежащей отдельно) Соответственно если есть возможность изменить логику работы я бы: А) Хранил в основной таблице только скорректированные данные, а историю в том числе и начальные значения выносил в отдельную таблицу. Б) Если есть некая необходимость хранить именно начальные значения и именно в этой таблице, то при внесении записи просто задублировал бы данные по разным полям: opre_date - текущее значени opre_date_original - начальное значение (не изменяется исправлениями) ... B) (Обратный А) Вынес поля, расчет которых зависит от изменяемых значений, в таблицу истории, ссответственно получив и историю вычисляемых полей. А далее как предложил ASCRUS объединял бы две таблицы Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2005, 13:12 |
|
||
|
Расчеты с переменными параметрами, в ХП или на временных таблицах?
|
|||
|---|---|---|---|
|
#18+
Использование временных таблиц во-первых определяется сервером БД и скоростью их создания, например в oracle неэффективно создавать временные таблицы, а в MSSQL в порядке вещей... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2005, 19:09 |
|
||
|
Расчеты с переменными параметрами, в ХП или на временных таблицах?
|
|||
|---|---|---|---|
|
#18+
Попробую на примере: Создается деталь, заранее известно, что на каждый болт М6 должна накручиваться гайка. Соответственно, когда пользователь выбирает из справочника комплектующих болт М6, гайка в состав добавляется автоматически. Получаем в основной таблице состав изделия: болты (количество введенное пользователем) и гайки - из расчета на один болт - одна гайка. Далее - в отдельную таблицу вносятся коррективы, например, болтов взяли в 1.5 раза больше, соответственно, должно увеличиться и количество гаек (автоматически). Далее идут расчеты количества комплектующих. И надо рассчитать, сколько комплектующих понадобится на изначально заданное количество болтов и сколько - с учетом корректив. Вот во втором случае и надо изменить количество гаек на новое количество болтов. Думаю, придется все же на временных таблицах все это считать. Т.е. создать таблицы и внести данные с учетом корректив, причем на эти коррективы и расчитывать новое количество гаек. А уже потом производить все расчеты на этих временных таблицах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2005, 08:03 |
|
||
|
Расчеты с переменными параметрами, в ХП или на временных таблицах?
|
|||
|---|---|---|---|
|
#18+
А чем по существу коррективы отличаются от оригиналов? Можно ли и то и другое рассматривать как версии, версии состава изделия в последнем примере? Или версию формирует пакет корректив? Процесс типа: Создание корректив -> Формирование версии (пакета корректив)-> Расчет и запоминание версии -> Выполнение расчетов по выбранной версии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2005, 10:17 |
|
||
|
Расчеты с переменными параметрами, в ХП или на временных таблицах?
|
|||
|---|---|---|---|
|
#18+
ModelRА чем по существу коррективы отличаются от оригиналов? Можно ли и то и другое рассматривать как версии, версии состава изделия в последнем примере? Или версию формирует пакет корректив? Процесс типа: Создание корректив -> Формирование версии (пакета корректив)-> Расчет и запоминание версии -> Выполнение расчетов по выбранной версии. В принципе, можно и так, но дело в том, что сам процесс начинается, скажем так, от сборки комплектующих. Потом уже идет само производство. И коррективы - накладываются только на комплктующие, а производство должно пересчитаться с учетом корректив. Например: 1. Болты М6 - на производство балки 2. Болты М6 - на монтаж балки. Так вот, коррективы могут вноситься только для производства балки. Поэтому дублировать весь процесс - можно, но пользователю это не надо, т.к. придется в данном случае запрашивать у него дополнительную информацию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2005, 10:23 |
|
||
|
Расчеты с переменными параметрами, в ХП или на временных таблицах?
|
|||
|---|---|---|---|
|
#18+
Насколько я понял, проблема в том, что в программе нет понятия комплектов и комплектации. Вообще непонятно, зачем при внесении значения в таблицу менять в ней же значения за предыдущий период.... Такие потребности могут возникнуть от непонимания, как это должно работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2005, 11:28 |
|
||
|
Расчеты с переменными параметрами, в ХП или на временных таблицах?
|
|||
|---|---|---|---|
|
#18+
Валентин КВообще непонятно, зачем при внесении значения в таблицу менять в ней же значения за предыдущий период.... Такие потребности могут возникнуть от непонимания, как это должно работать. Здесь нет понятия - период. Есть - исходный набор и есть коррективы. В итоге надо получить расчетные данные с учетом корректив. В один день может создаваться несколько корректив. Всего их на каждый исходный набор - ну максимум 10-15. И постоянно они не добавляются. Создали исходный набор - рассчитали, добавили коррективы - рассчитали. Один из исходных наборов+коррективы будет считаться основным. Рассчетные данные в базе не хранятся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2005, 11:46 |
|
||
|
Расчеты с переменными параметрами, в ХП или на временных таблицах?
|
|||
|---|---|---|---|
|
#18+
KezyaТак вот, коррективы могут вноситься только для производства балки. Поэтому дублировать весь процесс - можно, но пользователю это не надо, т.к. придется в данном случае запрашивать у него дополнительную информациюВ чем проблема? Версия №5 балки = Версия N4 балки, с коррективами {Болтов 6, Винтов 10} отсюда выводится сколько гаек. Далее план производства: 10 балок по версии №5 и 20 по версии №4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2005, 11:50 |
|
||
|
Расчеты с переменными параметрами, в ХП или на временных таблицах?
|
|||
|---|---|---|---|
|
#18+
Если задача - обеспечение производства правильным количеством болтов, гаек, балки решается все обратной калькуляциев пакетов, а не извращением над одной таблицей. У меня богатый опыт работы со всяческими извращениями юзверей, но такого я никогда не допускал, чтобы от внесения новой записи корректировались старые... Вобщем ответ в постановке задачи, нормально сформулируйте задачу и решение будет не настолько извращеным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2005, 12:00 |
|
||
|
Расчеты с переменными параметрами, в ХП или на временных таблицах?
|
|||
|---|---|---|---|
|
#18+
Что такое обратная калькуляция пакетов? Есть у меня таблицы, в которых хранится примерно следующее: 1. Балка -На производство балки требуется 5 болтов М6. Когда пользователь добавлял 5 болтов, я автоматически добавляю в таблицу 5 гаек. Теперь коррективы: как, например, изменится количество комплектующих в балке, если болтов будет 10? Это означает, что надо пересчитать и количество гаек в таблице тоже на 10. В исходной таблице ни болты ни гайки не обновляются. Коррективы хранятся в отдельной таблице. Вот я хочу узнать - как считать с учетом корректив (т.е. мне надо пересчитывать количество гаек) - или в ХП это все реализовывать, или создать временные таблицы, в которые вносить информацию из исходных, но с учетом корректив, т.е. сразу количество болтов - 10, гаек - тоже 10. И на временных таблицах сделать все расчеты ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2005, 13:01 |
|
||
|
Расчеты с переменными параметрами, в ХП или на временных таблицах?
|
|||
|---|---|---|---|
|
#18+
Если болтов будет 10, а не 5, то это будет уже ДРУГАЯ балка. Или Ваша задача, Kezya, заключается в обмане потребителя балки ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2005, 22:33 |
|
||
|
Расчеты с переменными параметрами, в ХП или на временных таблицах?
|
|||
|---|---|---|---|
|
#18+
Прежде чем решить, что будет изготовляться другая балка, с 10-ю болтами, надо сделать расчеты. Т.е. "подойдет ли нам балка, если болтов будет 10". Для этого и необходимо сделать предварительные расчеты. А изначально балка с 5-ю болтами - это что-то наподобие заготовки, т.е. некий стандартный вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2005, 05:12 |
|
||
|
Расчеты с переменными параметрами, в ХП или на временных таблицах?
|
|||
|---|---|---|---|
|
#18+
Может, тогда не хранить отдельно коррективы, а, как уже говорилось выше - создавать новую "версию" и все? Т.е. будет получаться несколько вариантов одного и того же изделия? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2005, 13:48 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=145&tid=1545517]: |
0ms |
get settings: |
11ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
63ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 268ms |
| total: | 432ms |

| 0 / 0 |
