2

ユーザー、製品、および製品のリストの 3 つの主要なエンティティがあります。ユーザーは製品をお気に入りとしてマークできます。商品リストにはお気に入りの商品のみ設定できます。

例 1:牛乳とパンをお気に入りとしてマークします。そしてマークした牛乳を「息子用」のリストに追加。また、お気に入りの製品を追加する前に、空の製品リストを作成することもできます。

例 2:「太陽のために」リストを作成し、牛乳とパンをお気に入りとしてマークし、マークした牛乳を「太陽のために」リストに追加します。

お気に入りの製品は、製品リストがなくても存在できます。商品リストは、お気に入りの商品がなくても存在できます。同じ製品を異なるリストに設定できます。

主な問題:製品リストをユーザーとリンクする必要があります。お気に入りの商品がある場合は、それらを介してリンクすることができます。ただし、製品を持っていない場合は、ユーザーに直接リンクする必要があります。 データベースのスキーマ

考えられる解決策: 4 つのテーブルを作成します: ユーザー、製品、製品リスト、および接続テーブルの製品リスト - 製品。ユーザーごとの商品リストに「お気に入り」リストを作成します。ただし、この製品が別のリストに追加されるたびに、「お気に入り」リストに製品を重複して追加する必要があるため、正規化のルールにも違反します。 ここに画像の説明を入力

4

1 に答える 1

3

製品がProductLists「favorite」という名前の と他の の両方にある場合ProductLists、 に 2 つのエントリが必要になりますProductListsProducts。これは正規化に違反しません。に 2 つProductsListsおよび 2 つの多対多の関係が格納されていProductsListsProductsます。そのモデリングに問題はないと思います。

すべてのユーザーが、他の製品とは別の概念として扱いたい「お気に入り」の製品の (空の可能性がある) リストを持っている場合は、ProductsLists次のようにテーブルを作成します。

UsersProductsListsProductsListsProductsProducts、さらにUsersFavoriteProducts.

UsersFavoriteProductsには auser_idと aが含まproduct_idれ、通常の とは別に処理されProductsListsます。 ProductsListsProducts「お気に入り」の製品の関係は含まれません。「お気に入り」の関係は にのみ保存されUsersFavoriteProductsます。

于 2012-10-01T05:02:49.153 に答える