Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];

Вниз

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

 
КаПиБаРа ©   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.042 c
6-1099474035
Prost0
2004-11-03 12:27
2005.01.23
Связать два компа по модемной лини и работать через сокет


3-1103548130
cherrex
2004-12-20 16:08
2005.01.23
компоненты Delphi для работы с Oracle


14-1104786470
KilkennyCat
2005-01-04 00:07
2005.01.23
Чисто админский вопрос.


1-1104936532
hawkins
2005-01-05 17:48
2005.01.23
как закрыть экземпляр ворда


14-1104911669
syte_ser78
2005-01-05 10:54
2005.01.23
Получения свойств файла





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский