6

過去にいくつかのショッピング カート システムを構築したことがありますが、最終的な注文の請求書​​が「購入済み」とマークされたショッピング カートになるように常に設計していました。カート内のアイテムを追加/削除/変更するためのすべてのロジックは、注文のロジックでもあります。すべてのデータは、データベース内の同じテーブルに格納されます。しかし、これは e コマース サイトを設計するための適切な方法ではないようです.. ドメイン モデルでショッピング カートを請求書から分離することの利点を誰か説明できますか?

これにより、多くの重複したコード、データベース内の余分なテーブルセットが発生し、システムがより複雑な注文に対応し始める必要がある場合に維持することが難しくなるように思えます (アイテムに対して選択されたオプションを指定するなど)。注文の価格/在庫状況/出荷時間を変更する場合と変更しない場合があります)。私が目にするすべての本や他の例は、これらの一見類似した2つの懸念を分離しているように見えるので、私は光を見ていないと仮定しています-しかし、私はそのようなことの利点についての説明を見つけることができません! 私が設計するシステムもそうで、最初の注文が確定した後に変更が加えられることがよくあります。後で (ただし、フルフィルメントの前に) アイテムが削除、交換、または追加されることは珍しくありません。

4

4 に答える 4

3

少なくとも請求書を変更できないようにするためには、違いは良いだろうと主張しようとしていましたが、実際にあなたの場合、請求書は変更される傾向があるというあなたの発言を読んだだけですか? その段階では、それらはまだ「注文」のようなものであり、実際には請求書ではありません。それらを個別のアイテムにする理由の 1 つは、ショッピング カートに変更される可能性のある製品への参照が含まれている可能性がありますが、請求書には変更される可能性のある製品を参照させたくない場合です (請求書が作成された日付/時間と比較されます)。

インターフェイスや継承を使用することで、共有機能を 1 回だけプログラムできるようになりますが、請求書とショッピング カートは分けておくことができます。

于 2010-05-05T18:00:50.673 に答える
2

あなたのシナリオでは、実際にレコードを変更するのではなく、変更を適用したいと思います。したがって、価格の変更を示すレコードが得られます。たとえば、ドングルの価格が $10 から $15 に変更された場合、+$5 の価格変更を示すレコードを追加する必要があります。

レコードを分離して複製することの全体的なポイントは、POS (販売時点管理) のデータが現在と同じであることを確認することです。そうでない場合は、価格にどのような変更がいつ行われたかを簡単に確認できます。

ウィジェット B を 25 ドルで投稿し、Z ドングルがあると説明したとします。後でメーカーから、Z ドングルではなく X ドングルが搭載されていると連絡があり、その結果、価格を下げる必要があります。投稿してエラーを修正するまでの間に、誰かがそのウィジェットを 25 ドルで購入しました。

その顧客は、Z-ドングルがないことを発見した後に電話をかけ、返品して全額返金したいと考えています。ただし、X-Dongle を使用して最初に支払った金額よりも 15 ドル安い価格で製品を購入したことを示す記録があります。カスタマー サービス担当者は、説明には X-ドングルがあると明確に記載さていると彼に伝えました。

于 2011-01-13T15:17:11.533 に答える
1

私はそれを、購入したいものに関するすべての製品、オプション、クーポン、およびその他の情報を含むカートを持っている実際の店舗で何が起こるかを表していると考えるのが好きです.

注文は、注文に関する情報を表します...支払い方法、取引情報など。レジに行って支払うときに提供するすべての情報です。

これは、何がどこにあるのかを判断する簡単な方法であり、実際の相関関係を示す優れたモデルを提供します。

于 2010-05-05T19:06:28.210 に答える