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

Вниз

Алгоритм реализации расчетов на основе БД   Найти похожие ветки 

 
КаПиБаРа ©   (2004-12-20 08:38) [0]

Предполагается создать такой механизм:

Массив данных -> Схема данных -> Расчетная схема -> Схема результатов -> Массив результатов.

Каждый из объектов является таблицей БД (кроме массива результатов, который должен рассчитываться динамически пока неизвестно как).

Массив данных:
Num – номер;
Val – значение.

Схема данных:
Num – номер (связан с Num из массива данных).

Расчетная схема:
Num2 – номер;
Koef – коэффициент на которое умножается значение с номером Num из массива данных;
Num – номер из Схемы данных (он же номер из массива данных).

Схема результатов:
Num2 –номер (связан с Num2 из расчетной схемы).

* Все остальные поля, не имеющие отношения к делу, я опустил.

Мы должны «пропустить» Массив данных, описанный в Схеме данных через Расчетную схему и получить Массив результатов, описанный в Схеме результатов.

Массив результатов представлен следующим образом:
Num2 – номер
Val2 – значение

Val2 получается следующим образом:
Сумма всех Val из Массива данных  умноженных на Koef из Расчетной схемы у которых совпадают номера Num.

Предполагается подавать различные Массивы данных на вход цепочки Схема данных -> Расчетная схема -> Схема результатов и получать Массивы результатов.

Вопрос состоит в том, каким образом реализовать расчет Val2. Есть предположение, что можно выполнить расчет Val2 на стороне сервера в хранимой процедуре, но не хватает знаний по БД. Нужен совет специалистов, в каком направлении двигаться и если не трудно с примером. А дальше я уж сам разберусь.


 
КаПиБаРа ©   (2004-12-20 10:00) [1]

Нет мыслей?


 
Johnmen ©   (2004-12-20 10:11) [2]

Каковы связи между таблицами ? (один-к-одному, один-ко-многим, многие-ко-многим)


 
КаПиБаРа ©   (2004-12-20 10:36) [3]

Массив данных:
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:44) [4]

Понятно...
Достаточно трёх таблиц.
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:53) [5]

Ясно. Оказывается можно и запросами все посчитать.
Но все таки Массив данных и Схема данных - разные таблицы. Предполагается обрабатывать множество массивов данных имеющих одинаковую структуру.


 
Johnmen ©   (2004-12-20 10:58) [6]

>Предполагается обрабатывать множество массивов данных имеющих
>одинаковую структуру.

Просто этого не видно из приведенных условий...
Кстати, для запроса III таблица не нужна. :)


 
stud ©   (2004-12-20 11:02) [7]

а расчетные формулы откуда беруться?


 
КаПиБаРа ©   (2004-12-20 11:36) [8]

stud ©   (20.12.04 11:02) [7]
Человеки руками забивают.


 
КаПиБаРа ©   (2004-12-22 07:55) [9]

Johnmen ©
Спасибо. Получилось :)

Кстати только что применил этот подход в другом проекте. Очень неплохо получилось.
Рекомендую его всем кто обрабатывает данные.



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

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

Наверх




Память: 0.49 MB
Время: 0.027 c
3-1103197246
Сашка
2004-12-16 14:40
2005.01.23
Работа с таблицами


1-1105542768
race1
2005-01-12 18:12
2005.01.23
свойства


1-1105536839
Zhekson
2005-01-12 16:33
2005.01.23
Не срабатывает событие


1-1105224892
andruxa
2005-01-09 01:54
2005.01.23
Помогите разобраться в Hints.


1-1105049911
pika
2005-01-07 01:18
2005.01.23
Кнопочки