1

私はモンゴにかなり慣れていません。Mongodb をデータベースとして使用するプロジェクトを開始しました。次のユース ケースをドキュメント ベース データベースにどのように設計すればよいかわかりません。

ユーザーケース
1. ベンダー/ディストリビューターは、当社のシステムに製品のリストを持っています。
2. すべての顧客向けに、各製品の標準価格表があります。
3. ベンダー/ディストリビューターは、顧客ごとに各製品の価格表をカスタマイズすることもできます。
例えば。CustA には、標準とは異なる価格設定の productA があり、CustA だけが利用できます。4. 一部の製品はカスタマイズ価格でのみ入手可能であり、それらの製品を属性 public = false と照合します。

ドキュメントベースデータベースでこれをどのように解決すればよいですか?
私が持っている現在のデザインはです。
1. [製品説明書] 標準価格表の文書が埋め込まれています。
2. [ Product_Price Document ] と oneToMany リンク [ Product Document ] および oneToMany から [ Customer Document ]
3. [ Customer Document ]。

このモデルでは、ページングによるクエリの問題に直面しています。
例 名前でソートされた最初の 30 個の製品を照会します。次に、一致する 30 の ProductId を使用して [ Product_Price Document ] をクエリし、ログインした顧客の価格をカスタマイズします。

問題は、すべての人が利用できるわけではないユーザーに合わせてカスタマイズされたアイテムをクエリできなかったところにあります。

より良い方法やスキーマの設計はありますか、またはクエリで何をすべきですか?

PHP、Doctrine2、Symfony2 を使用しています

4

2 に答える 2

0

これが私がそれをどのように構造化するかです。

2 つのコレクションがあります: - 製品 - ベンダー

製品テーブルには、すべての製品とその標準価格のリストが含まれます。ベンダー ページには、特定の製品の価格が異なる場合に備えて、オーバーライド価格とともに製品 ID の配列が表示されます。

顧客も追跡している場合は、それもコレクションにして、ほぼベンダーとの属し関係を持つことができます。

要するに:

collection.vendor:
 {"name":'foo',"products":[{"_id":mongoId,"priceOveride":15.50},..]}

collection.products:
 {"name":"bar","price":15.40}

使用できる関係をもう少し詳しく読むための優れたリソース: Learn Mongo Interactively

于 2011-09-16T13:54:53.647 に答える
0

Product_Price_Documentを照会する場合、ProductID と現在の CustomerID の両方を使用して照会します。または、何か不足していますか?

于 2011-09-16T09:36:52.997 に答える