在运行时php中保存数据库中的公式和替换值

时间:2016-11-16 10:56:24

标签: php mysql data-structures binary-tree finance

我想在数据库中存储以下公式

Z-Score = 1.2(Working_Capital/Total_Assets) + 1.4(Market_Value/Total_Assets)

Working_Capital,Total_Assets,Retained_Earnings针对不同的表存储在数据库中 例如: - Total_Assets = BalanceSheet.totalAssets,Market_Value = expert.market_value

用户可以通过表格更改此公式,他可以向公式添加更多数量

Z-Score = 1.2(Working_Capital/Total_Assets) + 1.4(Market_Value/Total_Assets)+1.0(Sales/Total Assets)

问题: - 现在请记住,公式可以随时更改我需要将其存储在用户ID的数据库中,以便我可以给它一个编辑选项。 该公式也用于计算多年的数据。 许多用户会有很多公式。

的方法: - 从我到目前为止所读到的许多建议将其存储为字符串,这是不可能的,因为我需要显示用户编辑公式的值与数据库中的值不同。

有人建议将表达式转换为树数据结构,但我不知道哪种树结构适合我的应用程序???

最后我需要将它存储在mysql数据库中,以便树存储和检索更快???

我正在寻求建议,因为我觉得这是一个复杂的问题,但如果有人已经解决了PHP那么请随时分享

提前感谢。

1 个答案:

答案 0 :(得分:0)

我提出的上述方法的解决方案。

1)从用户那里获取公式,当他选择公式操作数时,创建一个新的操作数数组,用于映射前端操作数的名称,以及数据库表和colunm名称的对应值 例如: -

`$input['operands'] = array(
  array('Total_Assets' => 'balance_sheet.TotalAssets'),
  array('Working_Capital' => 'balance_sheet.WorkingCapital'),
  array('Revenue' => 'balance_sheet.TotalRevenue'),
  );`

2)创建公式的中缀形式,您可以从中创建以下形式的二叉树 中缀形式: -

(
[0] => revenue
[1] => total_assets
[2] => working_capital
[3] => +
[4] => /
)

Binay tree: -

{"__exp1":{"operator":"+","operand":["working_capital","total_assets"]},"root":{"operator":"\/","operand":["__exp1","revenue"]}}

3)现在将所有这些发送到服务器并在那里我将其保存为表的每一列,也可以在服务器端将树的反向映射到公式的公式形式

4)这有助于我替换数据库值,因为我有数据库列数组,我从中获取值并执行公式并返回值。