2016-11-16 3 views
0

でデータベースとsubstitue値の式を保存iは、データベースに次の式を保存するランタイムPHP

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) 
012により多くの量を追加することができ

問題: - 私はこれを編集オプションを与えることができるように、私はデータベースにこれをデータベースに保存する必要がありますいつでも変更することができることを覚えている。 また、数式を使用して年間のデータを計算します。 多くのユーザーは多くの数式を使用します。

APPROACH: - 私は多く、これまでに読んだものから、それを文字列として保存することをお勧め私は式を編集するためのユーザーを表示する必要がある値は、それがデータベース内にあるものとは異なるので、それは可能ではありません。

いくつかは、ツリーデータ構造に式を変換することを提案しますが、どのツリー構造が私のアプリケーションに合っているのか分かりませんか?

最後に、私はmysqlデータベースにそれを格納する必要がありますので、ツリーの格納と検索が高速になりますか?

私はその複雑な問題を感じるが、誰かがすでにそれを解決した場合、PHPはその後、事前に

感謝を共有すること自由に感じなさいと私は提案を求めています。

+0

"ユーザーに表示される値がデータベースに格納されている値と異なるため、文字列として格納することはできません" - この推論は、式の 'Market_Value'データベース列 'expert.market_value'とは異なりますか? – karastojko

+0

@karastojko Market_Valueはデータベース列expert.market_valueから来ますが、表示するにはユーザーがすぐに理解できる方法を表示する必要があります。 私は表示名をテーブル名にリンクするJSONを作成しました。 – rohan

+0

データベースに表示されている値をデータベースに列名でマッピングするのはなぜですか? – karastojko

答えて

0

私が思いついた上記のアプローチへの解決策。

1)利用者からの式を取ると、彼は式のオペランドを選択しているときに、データベーステーブルの値とcolunm名 などを対応するフロントエンドでのオペランドの名前をマップするオペランドの新しい配列を作成: -

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

Binayツリー: - - :

2)次のフォーム 中置形の二分木を作成することができ、そこから式のインフィックスフォームを作成します

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

3)式の形式は、サーバ側

4)上で可能である挿入辞ツリーのマッピングを逆今サーバーにすべてを送信し、そこ私はまた、テーブルの各列として保存私は値を取得し、数式を実行し、値を返すデータベースの列配列を持っているので、私はデータベースの値を置換するのに役立ちます。

関連する問題