MySQL5-Associação entre tabelas talvez usando chaves naturais

0 respostas
Ironlynx
Tenho 3 tabelas assim:

Formula(id,nome,desc,indices,pesos),Indice(id_indice,sigla,significado) e Valor_Indice(id_indice,id_valor_indice,data,valor)

onde a(s) Formula(s) e Indice(s) praticamente não mudam(uma alteração-no máximo, por ano) e o valor_indice de cada Indice ganha um registro ao mês.

Exemplo de registros:

Formula(11,Fórmula do Pão,"(((0.4*(TrAt/TrAn))+(0.6*(FbAt/FbAn)))-1);",Tr,Fb,0.4,0.6);

Indice(20,Tr,Trigo);

Valor_Indice(91,Tr,01/2008,1.2901);

Valor_Indice(101,Tr,11/2008,9.9113);
Descrição do meu problema:

quando o cliente digita o número da fórmula(11 nesse exemplo), e as datas inicial(01/2008) e final(11/2008) e aperta gerarRelatório, ocorre os seguintes passos:

1-A fórmula é localizada na base, e os campos indices e pesos são selecionados;

2-Há uma comparação para saber QUANTOS são os indices e QUAIS são eles;

3-É achada o valor_do_indice nas datas correspondentes na tabela valor_indice;

4-cada indice tem seus dois valores_indice passados a um método calculaIndice(valor_inicial,valor_final);

5-O resultado desse(s) cálculo(s) são passados a um método do tipo(exemplo para 2 indices e 2 pesos) com seus pesos:

double calcularFormula2Indices(result_indice1,result_indice2,peso1,peso2);

Meu problema: eu não sei como relacionar de forma “sadia” os indices com os pesos.Eu deixei as fórmulas nesse formato do exemplor:
Formula(11,“Fórmula do Pão”,"(((0.4*(TrAt/TrAn))+(0.6*(FbAt/FbAn)))-1);",“Tr,Fb”,“0.4,0.6”);
porque ele(esse formato) é NATURAL ao ADMIN do sistema, que não sabe nada de java,banco e informática em geral.
O problema é que eu tenho que sempre quebrar os indices em um array(no caso “Tr,Fb”, duas posições), o tamanho do array dirá qual método será chamado,e também quebro os pesos em um array para taca-los posteriormente numa fórmula junto com o resultado do cálculo dos indices(repare que a ordem de inserção dos pesos é importante).Há o medo(real) desse excesso de stringficação, e eu uso as Strings(“Tr”,“Fb”,“MO”…) para achar os dados, mas para mim elas são naturais ao sistema era muito pior quando eu pegava o campo fórmula direto do banco e quebrava esse campo em pedacinhos para cálculo(e tinha que fazer os mesmos passos para achar os valores dos Indices).Qual a melhor solução para isso?

Criado 1 de dezembro de 2008
Respostas 0
Participantes 1