0

私はデレマに直面し、どちらに行くべきか非常に消極的でした。これを行うためのより良い方法があれば、ワイルドカード入力があります-それを呼び出すことができれば-これらのタイプの入力がある可能性があります

  • +0.77
  • +0.5%
  • -0.51%

フラット値は常に正であり、パーセンテージ値はどちらでもかまいません。これらの値を保存するベストプラクティスは何ですか? 文字列として、または 2 つの列として 1 つは値を持ち、もう 1 つは値型の bool 用ですか? 最も簡単なパスを使用すると、場合によっては別の問題に直面するため、これらの値に整数を掛けて考えtrim($value, '%')、結果に追加する必要があるかどうかを確認する必要があるため、混乱しています

4

2 に答える 2

0

これは少しやり過ぎに思えるかもしれませんが、私は間違いなくここでオブジェクトを選びます。絶対値によるオフセットとパーセント値によるオフセットの 2 つのクラス。入力文字列を解析し、いずれかのクラスをインスタンス化するファクトリ メソッドを定義します。次に、「getAjustedValue(initialValue):ajustedValue」のようなメソッドを含む共通インターフェースを両方のクラスに拡張させます。これにより、これらの調整値をより簡単かつクリーンに使用できるようになります。

OPコメント後に更新

データベースへの保存に関しては、両方のタイプの調整を別々の列に保存します。次のように、調整された値を計算する SELECT ステートメントを非常に簡単に記述できます SELECT (original_value * ajustement_ratio + ajustement_absolute) as adjusted_value FROM ...。明らかに、ajustements と original_value が同じテーブルから取得されることはないと思いますが、全体像がわかります。

于 2013-10-23T20:03:01.660 に答える
0

-0.51% を -0.0051 として保存しないのはなぜですか?

于 2013-10-23T20:07:45.573 に答える