我想在数据库
中存储以下公式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)从用户那里获取公式,当他选择公式操作数时,创建一个新的操作数数组,该数组将前端操作数的名称映射到数据库表和列名的对应值如:-
`$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] => /
)
二进制树:-
{"__exp1":{"operator":"+","operand":["working_capital","total_assets"]},"root":{"operator":"'/","operand":["__exp1","revenue"]}}
3)现在将所有这些发送到服务器,在那里我将其保存为表的每列,也可以在服务器端将树反向映射为公式的中轴形式
4)这有助于我替换数据库值,因为我有数据库列数组,从中获取值并执行公式并返回值。