![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Алгоритм реализации расчетов на основе БД [D6, FB]
КаПиБаРа © (2004-12-20 08:38:00)Предполагается создать такой механизм:
Массив данных -> Схема данных -> Расчетная схема -> Схема результатов -> Массив результатов.
Каждый из объектов является таблицей БД (кроме массива результатов, который должен рассчитываться динамически пока неизвестно как).
Массив данных:
Num – номер;
Val – значение.
Схема данных:
Num – номер (связан с Num из массива данных).
Расчетная схема:
Num2 – номер;
Koef – коэффициент на которое умножается значение с номером Num из массива данных;
Num – номер из Схемы данных (он же номер из массива данных).
Схема результатов:
Num2 –номер (связан с Num2 из расчетной схемы).
* Все остальные поля, не имеющие отношения к делу, я опустил.
Мы должны «пропустить» Массив данных, описанный в Схеме данных через Расчетную схему и получить Массив результатов, описанный в Схеме результатов.
Массив результатов представлен следующим образом:
Num2 – номер
Val2 – значение
Val2 получается следующим образом:
Сумма всех Val из Массива данных умноженных на Koef из Расчетной схемы у которых совпадают номера Num.
Предполагается подавать различные Массивы данных на вход цепочки Схема данных -> Расчетная схема -> Схема результатов и получать Массивы результатов.
Вопрос состоит в том, каким образом реализовать расчет Val2. Есть предположение, что можно выполнить расчет Val2 на стороне сервера в хранимой процедуре, но не хватает знаний по БД. Нужен совет специалистов, в каком направлении двигаться и если не трудно с примером. А дальше я уж сам разберусь.
КаПиБаРа (2004-12-22 07:55:00) [1]Johnmen ©
Спасибо. Получилось :)
Кстати только что применил этот подход в другом проекте. Очень неплохо получилось.
Рекомендую его всем кто обрабатывает данные.
КаПиБаРа (2004-12-20 11:36:00) [2]stud © (20.12.04 11:02) [7]
Человеки руками забивают.
stud (2004-12-20 11:02:00) [3]а расчетные формулы откуда беруться?
Johnmen (2004-12-20 10:58:00) [4]>Предполагается обрабатывать множество массивов данных имеющих
>одинаковую структуру.
Просто этого не видно из приведенных условий...
Кстати, для запроса III таблица не нужна. :)
КаПиБаРа (2004-12-20 10:53:00) [5]Ясно. Оказывается можно и запросами все посчитать.
Но все таки Массив данных и Схема данных - разные таблицы. Предполагается обрабатывать множество массивов данных имеющих одинаковую структуру.
Johnmen (2004-12-20 10:44:00) [6]Понятно...
Достаточно трёх таблиц.
I - Массив данных+Схема данных
II - Расчетная схема
III - Схема результатов+Массив результатов
SELECT T3.Num2, SUM(T1.Val*T2.Koef)
FROM T3
JOIN T2 ON T2.Num2=T3.Num3
JOIN T1 ON T2.Num=T1.Num
GROUP BY T3.Num2
КаПиБаРа (2004-12-20 10:36:00) [7]Массив данных:
Num Val
1 234.1
2 173.6
3 55.8
4 77.4
5 521.2
Схема данных:
Num
1
2
3
4
5
Расчетная схема (здесь содержатся формулы):
Num2 Koef Num
1 1 2
1 1 4
1 -1 3
2 1 1
3 -1 5
3 -1 3
Схема результатов:
Num2
1
2
3
Нужно получить Массив результатов
Num2 Val2
1 195.2 //=173.6*1 + 77.4*1 + 55.8*(-1)
2 234.1 //=234.1*1
3 -577 //=521.2*(-1) + 55.8*(-1)
Johnmen (2004-12-20 10:11:00) [8]Каковы связи между таблицами ? (один-к-одному, один-ко-многим, многие-ко-многим)
КаПиБаРа (2004-12-20 10:00:00) [9]Нет мыслей?