グルーポンのようなシステムを作成しようとしていますが、マーチャントがバウチャー コードをシステムに入力して、顧客が製品を入手するために使用できるようにしています。
マーチャント 1 が次の商品を持っているとします。
- 製品名: カメラ
- プロダクト ID: 2
彼は、製品 ID 2 のクーポン コードをシステムに追加します。
クーポンは、次のフィールドを持つ COUPON テーブルに追加されます。
- ID
- コード
- product_id (Product テーブルを参照)
- num_available
- 最大
max は、発行できるクーポンの最大値です。num_available は、利用可能なそのクーポンの数です。そのため、マーチャントが最大値として 5 を入力した場合、num_available は 5 から始まります。ただし、顧客にそのクーポンが割り当てられるたびに、num_available は 1 ずつ減少します。
その後、顧客が注文すると、クーポンが割り当てられます
ユーザーの注文は、次のテーブル Orders: Orders: に追加されます。
- order_id
- ユーザーID
注文位置:
- ID
- order_id
- 製品番号
- 額
- クーポン_id
各注文 (Orders に格納) には複数の製品が関連付けられています (OrderPosition に格納)。
したがって、ユーザー 1 は製品 2 を注文し、製品 2 に追加されたクーポン ID 1 が割り当てられます。クーポン ID 1 (COUPON テーブル内) の num_available は、データベースで 1 減ります。
しかし、ユーザー 1 が 2 つの製品 2 を注文した場合 (1 つは彼女用、もう 1 つは友人用)、彼女は 2 つの異なるクーポン コードを取得しますか?
基本的に、私は彼のプロセスをより効率的にしたいと思っています。Groupon がこのプロセスをどのように設計したかはわかりませんが、最善の方法について誰か良いアイデアがあれば教えてください!
これをより効率的にするためにデータベーススキーマを変更する必要があるかどうか知りたいです...
私の最終目標は、人々が取引を購入できるようにすることです。取引を購入すると、クーポンを取得します。そのクーポンを自動的に生成することもできましたが、一部のマーチャントは、独自のシステムで機能する独自のクーポンを入力したいと考えていますよね?
問題は、上記の目標を達成するためにシステムをどのように設計すればよいかということです。
また、私のウェブサイトに掲載される製品は、さまざまな販売者のものになることを強調したいと思います。自分の商品は出品しません。マーチャントは、Groupon.com と同じように独自の製品をリストします。
マーチャントにコードを入力させる代わりに、クーポン コードを生成することは可能ですか? それは、自社のシステムでもこれらのコードをサポートする必要があるということではないでしょうか? 同様に、jcpenny.com が自分の Web サイトに商品を入力すると、これらの商品のクーポン コードを生成できますが、jcpenny.com がこれらのクーポン コードをサポートしていない場合はどうなりますか? 商人は自分のコードを入力したいと思っていると思います... それとも私が間違っているのでしょうか?