0

ユーザーの送信を評価し、さまざまな式(すべての定額、最初の「x」エントリの定額、最初の「x」エントリの値の低下)に基づいて各送信にポイント値を割り当てるアプリケーションがあります。数式は提出のタイプに基づいています(提出のカテゴリは、ポイント値とその値の計算に使用される式を決定するものです)。

問題は、顧客がこれらの数式を履歴に保存して、特定のレコードについて、ポイント値の計算に使用された数式を表示できるようにすることです。

私はこれを達成する方法についていくつかのアイデアを持っていますが、どれも本当に良い選択肢のようには見えません:

1)数式をPHPコードに保存し、過去の数式をコメントアウトして、有効な日付範囲に注意してください。

2)数式が変更されるたびにビューを作成し、新しいビューを使用するようにコードを更新します。ビュー名またはコードの発効日をメモします。

3)数式を数式テーブルに保存し、それぞれに一意のIDと、有効日/廃止された値を指定します。

これを達成するための別の、またはより良い方法はありますか?最初の2つは、数式が更新された場合に多くのコードを記述/変更する必要があり、3つ目は解析が必要で、数式をDBに格納します(私が避けようとしていたこと)。

考え?

4

2 に答える 2

0

少なくとも、数式の結果を履歴テーブルに保存することは間違いありません。数式自体を保存する必要があるかどうかは、数式の数とそれらがどのように変化するかによって異なります。基本的なテーブルは次のようになります

calculation_id
record_id
points
formula_ref

たとえば、アクティブな数式がこれらの組み合わせである 6 つの固定数式がある場合、"formula_ref" は数式ごとに一意の文字列 (つまり "first10") になる可能性があります。数式がそれ以上に異なる場合、または値が異なる場合 (つまり、「最初の x」が「最初の 5」から「最初の 10」に変わるなど)、数式の組み合わせ用に別のテーブルが必要になる場合があり、履歴からそれらにリンクします。外部キーを使用したテーブル。コードを手動で変更するのではなく、アプリから (管理 GUI などを使用して) 数式を動的に追加/編集できるようにする必要がある場合も同様です。

スキーマは、データの使用方法によっても異なります。レコードごとの履歴のみに関心がある場合は、テキスト ベースの formula_ref フィールドを使用した上記の基本スキーマでおそらく十分でしょう (record_id にインデックスを使用)。

さらにコメントが必要な場合は、特定のスキーマ計画を自由に投稿してください...

于 2012-03-01T19:35:20.977 に答える
0

実際のコードの保存について言及していると仮定すると、これの正しい場所は、 GitSubversion (SVN)などのソース コード マネージャーです。特定の式でリリースにタグを付けることができます。このようにして、新しいフォーミュラをリリースするたびにタグが付けられます。また、マイナーな変更を追跡することもできます。これは、いつでも古い数式を取得して確認できることを意味します。

于 2012-03-01T15:47:00.907 に答える