1

RavenDB 内に製品割引機能を実装したいと考えています。

製品ドキュメント:

{
  "RegularPrice": 10.00,
  "ReferencePrice": 0.0,
  "Categories": [
    "A",
    "B",
    "C"
  ]
}

たとえば、カテゴリ「A」のすべての製品に割引を適用したいとします。したがって、割引ドキュメントの割引率にカテゴリを次のようにマップします。

{
  "ProductDiscount": {
    "A": 20.0
  }
}

問題は、どのように ReferencePrice を計算し、次の場合に保存または更新するかです。

  • 新商品が追加?
  • 通常価格は更新されましたか?
  • 割引ドキュメントは更新されましたか?

これをトリガーで処理する必要があるようです。確信はないけど!

4

1 に答える 1

1

このモデルが持ちこたえるかどうかはわかりません。製品を割引にどのように関連付けますか? それらはカテゴリによって関連付けられていますが、このモデルでは多対多の関係です。これはあなたが意図したものですか?もしそうなら、同じ製品に適用される可能性のある複数の割引にどのように対処しますか?

このままにしておくと、価格を計算するための multi-map/reduce と、結果をドキュメントに書き戻すIndexed Properties Bundleを検討できる戦略の 1 つになります。しかし、これはかなり複雑な設定です。

カテゴリごとに 1 つの割引を設定し、その割引をカテゴリ ドキュメントの一部として定義することで、おそらくこれを簡単に行うことができます。次に、LoadDocumentを使用して、インデックス作成中にカテゴリの割引を取得できます。

要件に適合し、維持できるモデルを試してみる必要があります。

その他のアイデア:

  • はい、トリガーを使用できますが、それはサーバー側でプラグインとして実行されます。維持するのは難しいかもしれません。

  • カテゴリ割引が適用されるときはいつでも、スクリプト化されたパッチ リクエストを手動で送信できます。新しいドキュメントと既存のドキュメントの編集は、独自のコードで手動で行う必要があります。

  • 計算された価格を製品から完全に除外することができます。製品をロードするときはいつでも、割引を含めてその場で価格を計算します。

他にもあるよ、きっと。それは、特定のアプリで何が機能するかによって異なります。

于 2013-07-06T01:00:52.387 に答える