背景:
   公司要做一套工艺系统,而且公司算法很复杂,有很多算法也就是经常改,如果按以前那种逻辑都写在程序里,那程序要经常改,经常更新,很麻烦!我现在有个设计理念,大家帮忙看看。设计原理: 就是存储过程来写sql实现逻辑的变化从而更改表的数据。差数表: table_1 ,产品编号 ,铜直径,比重,价格…
table_2:产品编号,pvc绝缘厚度 ,比重,价格….
table_3:产品编号,钢带厚度,比重…
     
要运算的型号数据表 table_a: 产品编号,产品名,型号,
       
          ……
结果表:table_a1:产品编号,铜料,pvc料,钢带料…
  
表之间的关系是:table_a1产品编号由table_a提供,table_a1.铜料是根据产品编号到table_1查到铜的直径,然后根据相关公式算铜料。Table_a1.pvc料也是这样的。我设计的理念是:
1.基础表:表,字段可以增加或者删除,结果表:字段可以增加或者删除。
2.table_a1字段的数据来源是取基础表里,任意表字段组合
   Eg: table_a1.铜料= 铜直径*公式系数
   甚至可以 table_a1.字段=table_1.字段+(table_2.字段*table_3.字段)
    
  我想:table_a1 的每个字段做成存储过程来计算,并且想通过一个界面输入sql,
Eg: 铜料界面输入: isnull(铜直径,0)* isnull(铜直径,0)*3.14
      pvc料界面输入:isnull(pvc绝缘厚度,0)*公式
   钢带料界面输入:isnull(钢带厚度)*公式
实现的效果是:
    1.结果表(table_a1)表中字段的都可以设定计算公式
    2.设定公式可以通过开发一个输入界面来完成,这样灵活性,维护性好
难点:
   1.我这种设计方式设计理念是否可以行?
   2.老实说,我也是初步想通过存储过程想实现,具体实现我很困惑,因为以前从来没这么做过,请教各位,能否提供一些思路。尤其是存储过程中取到基础表数据,放入公式里计算?还有表间关联怎么实现?
   3.大家能否提供相似的设计例子?小弟先谢了!

解决方案 »

  1.   

    可以研究下规则引擎,比如:drools
      

  2.   

    你可以把具体算法写在一张表里,例如:table_1.字段3×table_2.字段6,下次要修改也是修改这个表里的,然后通过存储过程来做
      

  3.   

    不知道有谁接触过,朗新人力资源系统,它里面有个工资套维护-》公式设置。它也是动态添加字段,然后为这个字段填写sql公式,公式里有很多字段,比如isnull(奖金,0)*0.7+isnull(绩效,0),“奖金”,“绩效”都是工资表1,工资表2里的 我现在不知道通过那种方法实现。