1

練習のために、私はテーブルUserとを持っているショッピングウェブサイトを書いていItemます。ユーザーは明らかにhas_manyアイテム(バスケットに追加されたとき)ですが、多くのユーザーが同じアイテムをバスケットに入れているとしても、そのアイテムはどうでしょうかbelongs_toUser

さらに、ユーザーがバスケットに追加したアイテムのリストだけでなく、(検索に基づいて提案を行うために)表示したアイテムのリストも必要な場合は、「スルー」テーブルをいくつか用意したほうがよいでしょうBasketViewed

4

2 に答える 2

2

この多対多の関係がある場合は、HABTMスキーマを使用できます。

Class User...
has_and_belongs_to_many :items

ただし、ほとんどの場合、Webショップは、ユーザーが購入しているアイテムに追いつくためにオーダーラインを使用します。これは、「user」「has_many」「orderlines」、「item」「has_many」「orderlines」、「orderline」「belongs_to」「user」および「item」を意味します。

また、注文ラインはアイテムのコピーであり、処理後に注文ラインを変更したくないため、直接リンクはありません。それは本当にあなたのニーズに合ったスキームがあなたの店の焦点に依存します。

Webでいくつかの例を見つけて、アイテム、注文、バスケットをどのように処理するかを考えてみてください。

于 2013-02-16T20:54:28.363 に答える
0

私は、たとえ関係が1対1であっても、同じではないものを分離することに慣れています。したがって、まず、バスケット(1:1-関係)のユーザーをお勧めします。

その後、バスケットには多くのアイテムが含まれ、アイテムは複数のバスケットに入れることができます(m:n-relationship)。ユーザーが同じアイテムを複数回購入することを好む可能性があることを確認してください。

ビューは、ユーザーとアイテム間のリンクテーブルとして実現できます。ユーザーには多くのビューがあり、アイテムには多くのビューがありますが、1つのビューは常に1つのユーザーと1つのアイテムにのみリンクされます。

于 2013-02-16T21:51:58.073 に答える